# Entradas
#	Ancho de la matriz
#	Alto de la matriz
#	Ratio (multiplica la altura). Sin especificar es 2
#	Centro en x del gradiente
#	Centro en y del gradiente
#	Radio del gradiente. Sin especificar es distancia max a esquina.
#	Cadena de caracteres del gradiente. 

import sys
import math

ancho = 0
while ancho <= 0:
    ancho = int(input("Ancho = "))
    
alto = 0
while alto <= 0:
    alto = int(input("Alto = "))

try:
    xyratio = float(input("x:y ratio = "))
except:
    xyratio = 2
    print("x:y ratio = " + str(xyratio)) 
    
x_centro = -1
while x_centro < 0:
    x_centro = float(input("x center = "))

y_centro = -1
while y_centro < 0:
    y_centro = float(input("y center = ")) * xyratio

radio = 0
try:
    radio = float(input("radius: "))
except:
    x = x_centro
    y = y_centro
    xa = ancho - x
    ya = (alto * xyratio) - y
    distancias = [0] * 4
    distancias[0] = math.sqrt(x * x + y * y)
    distancias[1] = math.sqrt(xa * xa + y * y)
    distancias[2] = math.sqrt(x * x + ya * ya)
    distancias[3] = math.sqrt(xa * xa + ya * ya)
    radio = max(distancias)
    print("radio = " + str(radio))   

caracteres = ''
while len(caracteres) == 0:
    caracteres = str(input("caracteres : "))
print()
chars_len = len(caracteres)
char_distance = radio / chars_len

for y in range(alto):
    for x in range(ancho):
        xd = x + 0.5 - x_centro
        yd = ((y + 0.5) * xyratio) - y_centro      
        distancia = math.sqrt(xd * xd + yd * yd)
        char_salida = ' '
        if distancia < radio:
            char_index = math.floor(distancia / char_distance )
            char_salida = caracteres[char_index]
        sys.stdout.write(char_salida)       
    print()