Raku kurss / Pielikums 🆕 / Plūsma un funkcijas / Izpildes plūsma un loģika / Exercises / Akmens, šķēres, papīrs

Risinājums: Akmens, šķēres, papīrs

Šeit ir iespējams risinājums uzdevumam.

Kods

my %beats = rock => 'scissors', scissors => 'paper', paper => 'rock';

sub winner($a, $b) {
    return 'tie' if $a eq $b;
    return %beats{$a} eq $b ?? "$a wins" !! "$b wins";
}

for <rock scissors>, <paper rock>, <paper paper> -> ($a, $b) {
    say "$a vs $b: { winner($a, $b) }";
}

🦋 Atrodiet programmu failā rock-paper-scissors.raku.

Izvade

rock vs scissors: rock wins
paper vs rock: paper wins
paper vs paper: tie

Komentāri

  1. Jaucējtabula %beats iekodē likumus: katrs gājiens tiek attēlots uz gājienu, ko tas uzvar. Tas tiesāšanu pārvērš vienā uzmeklēšanā garas nosacījumu ķēdes vietā.

  2. Ja %beats{$a} ir pretinieka gājiens, tad uzvar $a; citādi (vienādi gājieni jau ir apstrādāti) uzvar $b.

Kursa navigācija

Akmens, šķēres, papīrs   |   Summējiet, līdz pārsniedz simtu