Dati due secchi di dimensioni diverse, e sapendo quale secchio riempire per primo, determina quante azioni servono per misurare un numero esatto di litri trasferendo il liquido tra i secchi in modo strategico.
La soluzione deve rispettare alcune regole:
Il programma riceverà come input:
Il programma deve determinare:
Nota: qualsiasi modifica apportata a uno dei due secchi o a entrambi conta come una (1) azione.
Esempio: Il secchio one può contenere fino a 7 litri, mentre il secchio two può contenerne fino a 11. Supponiamo che a un certo punto il secchio one contenga 7 litri e il secchio two ne contenga 8 (7,8). Se svuoti il secchio one senza modificare il secchio two, rimanendo con 0 litri e 8 litri rispettivamente (0,8), quello conta come una sola azione. Se invece avessi versato dal secchio one nel secchio two finché il secchio two non fosse pieno, ottenendo 4 litri nel secchio one e 11 litri nel secchio two (4,11), anche quello conterebbe come una sola azione.
Un altro esempio: Il secchio one può contenere 3 litri, mentre il secchio two può contenerne fino a 5. Devi iniziare con il secchio one. Quindi la prima azione è riempire il secchio one. Per la seconda azione scegli di svuotare il secchio one. Come terza azione non puoi riempire il secchio two, perché violerebbe la terza regola: dopo qualsiasi azione non puoi trovarti in uno stato in cui il secchio di partenza è vuoto e l'altro è pieno.
Scritto con <3 alla Fullstack Academy da Lindsay Levine.
Iscriviti a Exercism per imparare e padroneggiare Dart con 78 esercizi e il mentoring di persone reali, tutto gratis.