Pretakanje

Rok za oddajo: torek, 26. oktober 2021, 08.00

V oni stari nalogi imamo dva vrča; v vrč a gre 7 litrov in v vrč b gredo 4 litri. Vodo lahko točimo:

  • iz jezera v vrč, pri čemer vrč vedno napolnimo do vrha;
  • iz vrča v jezero, pri čemer vrč vedno popolnoma izpraznimo;
  • iz vrča v vrč, pri čemer točimo toliko časa, da je vrč, v katerega točimo, poln, ali pa vrč, iz katerega točimo, prazen - karkoli od tega se zgodi prej.

Naloga običajno zahteva, da z vrčema namerimo določeno količino vode, na primer dva litra. Naša ni takšna.

Obvezna naloga

Tole je skoraj bolj naloga iz pogojev kot iz zank.

Zaporedje pretakanj naj bo podano takole (te vrstice skopiraj na začetek programa):

poteze = [("j", "a"), ("a", "b"), ("b", "j"), ("a", "b"), ("j", "a"), ("a", "b"), 
          ("b", "j"), ("a", "b"), ("a", "j"), ("b", "a"), ("j", "a"), ("a", "j")]

Pri tem prvi element para pove, odkod točimo, drugi pa, kam. Napiši program, ki simulira takšno pretakanje in sproti poroča, koliko vode je v katerem vrču. Za gornji primer mora izpisati:

a: 7 b: 0
a: 3 b: 4
a: 3 b: 0
a: 0 b: 3
a: 7 b: 3
a: 6 b: 4
a: 6 b: 0
a: 2 b: 4
a: 0 b: 4
a: 4 b: 0
a: 7 b: 0
a: 0 b: 0

Dodatna naloga

Zdaj pa obratno: imamo zaporedje stanj vrčev, podanih s seznamom terk, na primer.

stanja = [(7, 0), (3, 4), (3, 0), (0, 3), (7, 3), (6, 4),
          (6, 0), (2, 4), (0, 4), (4, 0), (7, 0), (0, 0)]

Napiši program, ki za takšno zaporedje izpiše pripadajoči vrstni red pretakanj. Izpis naj bo v takšni obliki:

j a
a b
b j
a b
j a
a b
b j
a b
a j
b a
j a
a j