Это довольно просто. размер матрицы, если (2 * input) +1, а числа в матрице - это расстояние от центра +1. см. ниже код Python.
import math
def distance(x1, y1, x2, y2):
dist = (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)
return int(math.sqrt(dist))+1
if __name__=='__main__':
x = int(input())
if(x < 1):
exit()
dimension = (2*x)-1
center = dimension // 2
mat = [[None for i in range(dimension)] for i in range(dimension)]
for i in range(dimension):
for j in range(dimension):
mat[i][j] = distance(center, center, i, j);
print(mat[i][j], end=' ')
print('')
Существует две кодировки, включенные здесь:
Кажется, что Ваше выходное кодирование прочь теперь. Если это работает в окне терминала в Cygwin, именно, что кодирование терминала необходимо соответствовать.
Править: Я просто запустил следующую программу Python в (собственном) окне терминала Windows XP, думал, что это было немного интересно:
>>> ord("£")
156
156, конечно, не кодовая точка для знака фунта в Latin1, кодирующем Вас попробованный. Это, кажется, не находится в Кодовой странице 1252 Окна также, которую я ожидал бы, что мой терминал будет использовать... Странный.
Unicode для знака фунта 163 (десятичное число) или A3 в шестнадцатеричном числе, таким образом, следующее должно работать независимо от кодирования Вашего сценария, пока выходное кодирование работает правильно.
print u"\xA3"
] попробуйте кодировку :[
] [][]# -*- кодировку: utf-8 -*-[
][
] и затем отобразите знак '£': [
] [print unichr(163)
]