Курс по Raku / Приложение 🆕 / Поток и функции / Управление на потока и логика / Exercises / Вид триъгълник
Решение: Вид триъгълник
Ето едно възможно решение на задачата.
Код
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) }";
}🦋 Намерете програмата във файла triangle-kind.raku.
Изход
3 3 3: equilateral
3 3 5: isosceles
3 4 5: scalene
1 2 10: invalidКоментари
Пазачът с
unlessотхвърля дължините на страни, които нарушават неравенството на триъгълника, още преди каквато и да е класификация.Броят на различните дължини на страни казва какъв е видът: една означава, че всички са равни (равностранен), две — че точно една двойка е равна (равнобедрен), три — че всички са различни (разностранен).
Деструктурирането на променливата на цикъла като
-> ($a, $b, $c)разопакова всеки вътрешен списък направо в три именувани страни.