#!/usr/bin/python3


"""
ΑΣΚΗΣΗ 9
Να γραφεί πίνακας nxn στοιχείων και να τον γεμίσετε σε ξεχωριστή συνάρτηση με ψευδοτυχαίες ακέραιες τιμές στο διάστημα [1,6].
Εν συνεχεία, σε ξεχωριστή συνάρτηση να εμφανίζεται τον πίνακα καθλως και σε ξεχωριστή συνάρτηση να υπολογίζεται την συχνότητα εμφάνισης κάθε αριθμού (1,2,3,4,5,6) και να εμφανίζεται το αποτέλεσμα.
"""

import random

def generate_matrix(num_rows,num_cols):
	return [ [random.randint(1,6) for _ in range(num_rows) ] for _ in range(num_cols) ]


def print_matrix(matrix):
	"""Εκτυπώνει έναν πίνακα με μορφοποίηση"""
	print("Ο πίνακας είναι")
	if len(matrix)==0:
		return

	max_str_width=max( len(str(el)) for row in matrix for el in row) +2

	for row in matrix:
		print( "".join(str(el).rjust(max_str_width) for el in row) )


def frequency(matrix):
	"""Αρχικοποίηση ενός άδειου λεξικού: τιμή στοιχείου - συχνότητα στοιχείου"""
	freq_dict={i:0 for i in range(1,7)}

	for row in matrix:
		for el in row:
			freq_dict[el]+=1

	for key,value in freq_dict.items():
		print(f"the frequency of {key} is {value}")

def main():
	n=None
	m=None
	try:
		while True:
			n=int(input("Δώσε το μέγεθος του πίνακα: "))
			if n<=0:
				print("invalid size")
				continue
			break
	except Exception as e:
		print(f"Exception: {str(e)}")
		exit(1)

	matrix=generate_matrix(n,n)
	print_matrix(matrix)
	frequency(matrix)


if __name__=="__main__":
	main()
