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.
Nel package twobucket, implementa una func Go, Solve, con la seguente firma:
func Solve(sizeBucketOne,
sizeBucketTwo, goalAmount int, startBucket string,
) (goalBucket string, numSteps, otherBucketLevel int, e error)
Solve restituisce quattro valori: il secchio obiettivo risultante ("one" o "two"), il numero di mosse/passi per raggiungere la quantità obiettivo, i litri rimasti nell'altro secchio e un valore di errore. Restituisci un errore se un parametro non è valido o se non è possibile trovare una soluzione.
Iscriviti a Exercism per imparare e padroneggiare Go con 34 concetti165 esercizi e il mentoring di persone reali, tutto gratis.