Как получить список из конкретного ввода чисел (оси X, Y)? - PullRequest
0 голосов
/ 08 декабря 2018
Input= 2 2 2 1 2 0 1 0 0 0 0 1

первое число - это координата X по нормальной оси XY (не в списке), вторая координата Y, третья координата X и т. Д .;поэтому из этого ввода это будет выглядеть следующим образом:

Y
2    *
1*   *
0* * *
 0 1 2 X

(первый *: 2,2, второй *: 2,1, третий *: 2,0 - с правой стороны).

Мне нужно получить вывод, который будет выглядеть так:

 output=
[[0,0,1],
 [1,0,1],
 [1,1,1]]

Пока я пробовал это, но не знаю, как продолжить:

inp=[2,2,2,1,2,0,1, 0, 0, 0, 0, 1]
maxx=0
maxy=0

for i in range(1,len(inp),2): #yaxis
    if inp[i]>maxy:
        maxy=inp[i]
        continue
    else:
        continue

for j in range(0,len(inp),2): #xaxis
    if inp[j]>maxx:
        maxx=inp[j]
        continue
    else:
        continue

part=[]
for i in range(maxy+1):
    part.append([0 for j in range (maxx+1)])
for k in range(0,len(inp),2):
    for j in range(1,len(inp),2):
        for i in range(len(part)):
            part[i][j]=

1 Ответ

0 голосов
/ 09 декабря 2018
inp = [2,2,2,1,2,0,1, 0, 0, 0, 0, 1]
tuples = [(inp[i], inp[i+1]) for i in range(0, len(inp), 2)]
print(tuples) # [(2, 2), (2, 1), (2, 0), (1, 0), (0, 0), (0, 1)]

# Define the dimensions of the matrix 
max_x_value = max([i[0] for i in tuples])+1
max_y_value = max([i[1] for i in tuples])+1

# Build the matrix - fill all cells with 0 for now
res_matrix = [[0 for _ in range(max_y_value)] for _ in range(max_x_value)]

# Iterate through the tuples and fill the 1's into the matrix
for i in tuples:
    res_matrix[i[0]][i[1]]=1

print(res_matrix) # [[1, 1, 0], [1, 0, 0], [1, 1, 1]]

# Rotate the matrix by 90 to get the final answer
res = list(map(list, list(zip(*res_matrix))[::-1]))
print(res) # [[0, 0, 1], [1, 0, 1], [1, 1, 1]]
...