ЗАДАЧА
Цель состоит в том, чтобы написать программу, которая поворачивает любой двумерный список на 45 градусов, она должна быть в состоянии сделать это до 7 * 45 (сразу) перед возвратом списка. Список не обязательно будет квадратным или прямоугольным. Вы должны включить вывод для примеров в своем ответе. Он также должен работать для случаев, которых нет в примерах ... круги, треугольники и т. Д. Вы не можете использовать уже существующую функцию, чтобы сделать все это.
Все списки будут иметь хотя бы одну ось симметрии (N, S, E, W). Все подсписки должны быть выровнены по центру. Нечетные четные списки будут смещены влево, чтобы выровняться должным образом. См. Пример 4 для пробелов в середине подсписка.
ВХОД
Ваша программа будет использовать переменную с именем, l
содержащим список, и переменную с именем, n
определяющую количество, на которое будет вращаться список (n * 45) ( n
всегда будет меньше 7 и может быть 0). Он должен будет принимать l
содержащие подсписки любого типа данных для печати (десятичные, List, int, String [] и т. Д.), Но подсписки будут содержать только один тип данных одновременно.
Вам не нужно принимать консольный ввод или использовать стандартный ввод. Строки, определяющие значения теста l
и n
не включаются в число символов, но должны быть включены в представленный код.
ВЫХОД
Ваша программа должна печатать список в правильной ориентации, при желании NIL может использоваться для заполнения списков, но заполнение не требуется (хотя вы получите смайлик, если они дополнены). Подсписки не должны иметь отступ или разделяться символами новой строки, как в примерах.
ПРИМЕРЫ
1
IN
l=
[[0 , 1 , 2],
[3 , 4 , 5],
[6 , 7 , 8]]
n=1
OUT
[ [0],
[3 , 1],
[6 , 4 , 2],
[7 , 5],
[8] ]
2
IN
l=
[[a , b , c , d],
[e , f , g , h]]
n=2
OUT
[[e , a],
[f , b],
[c , g],
[h , d]]
3
IN
l=
[[A , B , C , D , E , F],
[G , H , I , J],
[K , L],
[0 , 8],
[M , N],
[O , P , Q , R],
[S , T , U , V , W , X]]
n=7
OUT
[ [F],
[E],
[D , J],
[C , I],
[B , H , L],
[A , G , K , 8],
[0 , N , R , X],
[M , Q , W],
[P , V],
[O , U],
[T],
[U] ]
4
IN
l=
[[9 , 8 , 7 , 6],
[5],
[4 , 3 , 2 , 1],
[0] ]
n=3
OUT
[ [0 , 4],
[3],
[2 , 5 , 9],
[1 ,NIL, 8],
[7],
[6], ]
5
IN
l=
[ [Q],
[X ,NIL, Y],
[Z] ]
n=2
OUT
[ [X],
[Z ,NIL, Q],
[Y] ]
n
раз, а не наn
· 45 °? Я спрашиваю, потому что я почти уверен, что я не получу результат примера 3, применяя семь поворотов на 45 °.Ответы:
Питон -
234201Безголовая версия
При этом используется то, что умножение (комплексного числа) на комплексное число соответствует повороту и растяжению.
[1,1+1j,1j,1j-1,-1,-1j-1,-1j,1-1j]
являются комплексными числами, соответствующими требуемым углам и использующими наименьший коэффициент масштабирования, так что для целочисленного комплексного ввода выход снова является целочисленным комплексным.источник
else: line += [None]
после четвертого из последней строки.