To tak jak ostatnio pisałem :)
Zamiast myśleć nad oznaczaniem krążków, co jest dość upierdliwe, lepiej pomyśleć jak zareprezentować słupki. No i jest to super proste, jeśli zorientujemy się że słupek opisuje listę krążków na nim.
Więc coś takiego:
Można zapisać jako:
a = [5, 4, 1]
b = [3]
c = [2]
Jak chcemy przesunąć krążek ze słupka A na B, to po prostu:
krazek = a.pop()
b.append(krazek)
I wtedy faktycznie się przesunął:
a == [5, 4]
b == [3, 1]
c == [2]
(być może jeszcze lepiej by zamiast a/b/c również trzymać te słupki w 3-elementowej liście, to łatwiej będzie je indeksować)