Транспонирование строк там, где нет. строк и длины зависит от списка - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь создать два набора строковых изображений. Первый.

% % % 
% % % % % 
% % 
% 

2-й.

  %
% %
% % %
% % % %

Обратите внимание, что 2-е изображение такое же, как и 1-е, только повернуто против часовой стрелки.

Количество строк и длина каждой строки в первом изображении основаны на списке, который может иметь любую длину и состоять из строго положительных чисел. В этом примере наш список:

list = [3, 5, 2, 1]

У меня возникли проблемы с получением 2-го изображения. Для первого изображения я использовал следующую функцию:

for e in list:
  print(int(e) * '% '

, которая, кажется, работает. Я просто не уверен, как go о 2-м изображении. У меня есть некоторые идеи относительно создания каждой строки, где я могу найти самый высокий элемент в списке, найти его индекс (в этом примере list [1]), а затем включить "" с обеих сторон, в зависимости от его расстояния до начала списка и конец и уход оттуда, но я просто не уверен.

Любой совет будет оценен.

Спасибо!

1 Ответ

2 голосов
/ 21 февраля 2020

Вы можете попробовать это.

Генерация 1-го изображения.

a=[['%' for i in range(j)] for j in [3,5,2,1]]
for i in a:
    print(*i)
% % %
% % % % %
% %
%

Вы можете сгенерировать 2-е изображение из 1-го изображения.

from itertools import zip_longest #use izip_longest for python2
b=list(zip_longest(*a,fillvalue=' '))[::-1]
for i in b:
    print(*i)

  %
  %
% %
% % %
% % % %
...