33032023-02-24 18:32:2312BotiHanoi tornyai variáns (45)python3Hibás válasz 0/45123ms24788 KiB
current = [[int(x) - 1 for x in input().split()[:-1]] for _ in range(3)]
wanted = [[int(x) - 1 for x in input().split()[:-1]] for _ in range(3)]

N = max(max(t) for t in current) + 1

pos = [-1] * N
for t in range(3):
    for d in current[t]:
        pos[d] = t

wantedpos = [-1] * N
for t in range(3):
    for d in wanted[t]:
        wantedpos[d] = t

other = [
    [-1, 2, 1],
    [2, -1, 0],
    [1, 0, -1],
]

moves = []


def move(d, to):
    if pos[d] == to:
        return
    # print(f"move {d+1} to tower {to}")
    for e in range(d - 1, -1, -1):
        move(e, other[pos[d]][to])
    moves.append((pos[d], to))
    pos[d] = to


for d in range(N - 1, -1, -1):
    # print("doing", d + 1)
    move(d, wantedpos[d])

print(len(moves))
for f, t in moves:
    print(f + 1, t + 1)
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/45
1Hibás válasz0/018ms11744 KiB
2Futási hiba0/017ms12032 KiB
3Futási hiba0/218ms12180 KiB
4Futási hiba0/217ms12624 KiB
5Hibás válasz0/217ms12712 KiB
6Hibás válasz0/318ms13024 KiB
7Hibás válasz0/217ms13076 KiB
8Hibás válasz0/217ms13004 KiB
9Hibás válasz0/217ms13376 KiB
10Hibás válasz0/217ms13576 KiB
11Hibás válasz0/217ms13820 KiB
12Hibás válasz0/218ms13936 KiB
13Hibás válasz0/225ms15080 KiB
14Hibás válasz0/229ms15792 KiB
15Hibás válasz0/263ms18720 KiB
16Hibás válasz0/285ms20620 KiB
17Hibás válasz0/279ms20216 KiB
18Hibás válasz0/2122ms24340 KiB
19Hibás válasz0/379ms20924 KiB
20Hibás válasz0/3115ms23592 KiB
21Hibás válasz0/3123ms24788 KiB
22Hibás válasz0/397ms22000 KiB