# Programming Exercises in Python

## Multiples of Three

Write a function multiples_of_three(A) that takes an array $$A$$ of integers and prints the count of all the elements of $$A$$ that are multiples of three.

Examples:

>>> multiples_of_three([34, 31, 45, 5, 38, 19, 19, 26, 25, 19, 39, 40])
2
>>> multiples_of_three([7, 2, 0])
0


## Maximal Difference

Write a function max_diff(A) that takes an array $$A$$ of numbers and prints the maximal difference between any two elements of the array. If the array is empty, the function should not print anything.

Examples:

>>> max_diff([32, 6, 4, 14, 50, 12, 23, 25, 46, 32, 40, 8])
46
>>> max_diff([7])
0
>>> max_diff([])


## Isolated Elements

Write a function isolated_elements(A) that prints all the isolated elements of a given array $$A$$. An element of $$A$$ is not isolated when it has an equal element adjacent to it. Otherwise, the element is isolated.

Examples:

>>> isolated_elements([-1,1,1,1,0,7,8,7,5,5,1,1,4,1])
-1
0
7
8
7
4
1
>>> isolated_elements([9,9])
>>> isolated_elements([9])
9


## Horizontal Histogram

Write a function histogram(A) that takes an array of non-negative integers, and prints a histogram corresponding to those numbers. In this histogram, each number $$N$$ is represented by a line of $$N$$ characters #. For example, with this input:

Example:

>>> histogram([10, 15, 7, 9, 1, 3])
##########
###############
#######
#########
#
###
>>> histogram([])
>>> histogram([1,2,4,0,8,16])
#
##
####

########
################


## Vertical Histogram

Write a function vertical_histogram(A) that takes an array of integers, and prints a vertical histogram corresponding to those values. In this histogram, each number $$N$$ is represented by a column of $$N$$ characters # starting from a base line of $$N$$ dash characters - representing value 0. Positive numbers are represented by a column above zero while negative numbers are represented with a column below zero.

Example:

>>> vertical_histogram([7, 3, -2, 10, 5, -3, 3, 5, 8])
#
#
#    #
#  #    #
#  #    #
#  ##  ##
#  ##  ##
## ## ###
## ## ###
## ## ###
---------
#  #
#  #
#


## Compression of a Sequence

Write a function compress(A) that prints a “compressed” version of the $$A$$ sequence. The compression is obtained by printing a sequence of three or more identical elements as $$X$$ * $$N$$, where $$X$$ is the element and $$N$$ is the number of consecutive copies of $$X$$.

Example:

>>> compress([-1,1,1,1,7,7,7,7,5,5,1,1,4,1])
-1
1 * 3
7 * 4
5
5
1
1
4
1
>>> compress([])
>>> compress([1,2,2,3,3,3])
1
2
2
3 * 3