Как сдвинуть список еще раз, чем раньше, каждый раз? - PullRequest
0 голосов
/ 04 ноября 2018

Например - сдвиг влево:

Вот grid букв, например

tiwxz          
shshq          
avidy          
bsvsc          

Это эффект, который я хочу получить. Символ X заполняет пространство, созданное движением.

XXXtiwxz         # no shift
XXshshqX         # one shift left
XavidyXX         # two shift left
bsvscXXX         # three shift left
  • Сетка букв будет списком, в котором каждая строка представляет собой элемент
  • Я не знаю, как долго будет длиться список
  • Решение должно быть чистым питоном

Как мне сделать сдвиг влево и вправо для grid?

Это все, что у меня есть:

def diags(grid, rev=False):
    n = len(grid)
    _grid = [list(row) + [None]*(n-1) for row in grid]  

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Эта функция сделает работу. Для подтверждения пробелов вы можете напечатать длину строки. input_grid - это список строки как элемента.

def formater_fn(input_grid):
    right_len = len(input_grid) + len(input_grid[0])
    left_len = len(input_grid) + len(input_grid[0])
    for item in input_grid:
        right_item = item.rjust(right_len)
        new_item = right_item.ljust(left_len)
        right_len = right_len-1
        print new_item
0 голосов
/ 04 ноября 2018

Вы можете дополнить левую и правую стороны X с (или None с) в зависимости от индекса строки, который вы можете получить с помощью enumerate:

grid = [list(s) for s in 'tiwxz shshq avidy bsvsc'.split()]
new_grid = [(['X'] * (len(grid) - 1) + lst)[i:] + ['X'] * i for i, lst in enumerate(grid)]

выход

for l in new_grid:
    print(l)

# ['X', 'X', 'X', 't', 'i', 'w', 'x', 'z']
# ['X', 'X', 's', 'h', 's', 'h', 'q', 'X']
# ['X', 'a', 'v', 'i', 'd', 'y', 'X', 'X']
# ['b', 's', 'v', 's', 'c', 'X', 'X', 'X']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...