Corso di Raku / Appendice 🆕 / Flusso e funzioni / Controllo di flusso e logica / Exercises / Tipo di triangolo
Soluzione: Tipo di triangolo
Ecco una possibile soluzione del compito.
Codice
sub kind($a, $b, $c) {
return 'invalid' unless $a + $b > $c && $a + $c > $b && $b + $c > $a;
given ($a, $b, $c).Set.elems {
when 1 { 'equilateral' }
when 2 { 'isosceles' }
default { 'scalene' }
}
}
for (3, 3, 3), (3, 3, 5), (3, 4, 5), (1, 2, 10) -> ($a, $b, $c) {
say "$a $b $c: { kind($a, $b, $c) }";
}🦋 Trova il programma nel file triangle-kind.raku.
Output
3 3 3: equilateral
3 3 5: isosceles
3 4 5: scalene
1 2 10: invalidCommenti
La guardia
unlessrespinge le lunghezze di lato che violano la disuguaglianza triangolare prima che avvenga qualunque classificazione.Il numero di lunghezze di lato distinte rivela il tipo: una significa tutte uguali (equilatero), due significa esattamente una coppia uguale (isoscele), tre significa tutte diverse (scaleno).
Destrutturare la variabile del ciclo come
-> ($a, $b, $c)scompatta ogni lista interna direttamente in tre lati con un nome.