Kurso de Raku / Progresinta / Regofluo / gather kaj
take / Exercises / Kolekti ĝis
plena
Solvo: Kolekti ĝis plena
Jen ebla solvo de la tasko.
Kodo
my $sum = 0;
my @result = gather for 1..100 {
$sum += $_;
last if $sum > 10;
take $_;
}
say @result;🦋 Vi povas trovi la fontkodon en la dosiero gather-big.raku.
Eligo
[1 2 3 4]Komentoj
Al la buklo estas donita intervalo de cent nombroj, multe pli ol ĝi uzos. Tio estas en ordo, ĉar la buklo haltigas sin mem: tuj kiam
$sumsuperas10,lastelsaltas kaj la restantaj nombroj neniam estas vizitataj.La ordo ene de la bloko gravas. Ni unue aldonas al
$sumkaj kontrolas la limon antaŭ ol preni, do la nombro, kiu puŝas la sumon super10(ĉi tie,5), ne estas kolektata. La kuranta sumo atingas ĝuste10post4, do la kolektita listo estas1, 2, 3, 4.Ĉi tiu frua eliro per
forestas tio, kiongather/takepovas fari kajgrepne povas:grepĉiam trairas la tutan liston, dum ĉi tie ni elektas, kiam halti.