Programozó versenyek

Nyári Informatikai Tábor 2015

2015. augusztus 25. 0:00 – 2015. szeptember 30. 12:00

A két kancsó problémája

Írjon programot, amely „a két kancsó problémája” egy lehetséges megoldását adja meg! A probléma a következő:

Adott két kancsó, egy 3 literes és egy 5 literes. Kezdetben mindkét kancsó üres. A feladat az, hogy az 5 literes kancsóban kimérjünk pontosan 4 liter vizet úgy, hogy csak az alábbi műveleteket végezhetjük:

  • Bármelyik kancsót teletölthetjük egy csapból (ahonnan korlátlan mennyiségű víz folyik), ha a kancsó nincs tele.
  • Bármelyik kancsónak kiönthetjük a teljes tartalmát, ha nem üres.
  • Az egyik kancsóból (forrás) átönthetünk bizonyos mennyiségű vizet a másik kancsóba (cél), ha a forrás kancsó nem üres, a cél kancsó pedig nincs tele. Az átöntés mindaddig tart, amíg vagy ki nem ürül a forrás kancsó, vagy meg nem telik a cél kancsó, közben nem állhat meg.

További megkötés, hogy a megoldás folyamán nem állhat elő olyan állapot, amely korábban már egyszer előfordult, azaz a két kancsóban lévő vízmennyiség nem lehet ugyanaz, mint korábban.

A bemenet specifikációja

Ennek a feladatnak nincs bemenete.

A kimenet specifikációja

A kimenetre a probléma egy lehetséges megoldását kell kiírni. Minden sornak pontosan egy állapotot kell tartalmaznia (V3,V5) formában, ahol V3 a 3 literes, V5 pedig az 5 literes kancsóban található víz mennyisége egész számként. A kimenet első sorában a kezdőállapotnak, azaz a (0,0) állapotnak kell szerepelnie. Az utolsó sorban pedig V5 értékének 4-nek kell lennie (például (3,4)).

Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.