#!/usr/bin/env perl use strict; use warnings FATAL => 'all'; use Lowu; my $selected = []; while ($selected->count < 6) { if ($selected->count == 5) { print " > Selected balls: ", $selected->join('-'), "\n"; my $eball; do { print "Select an extra ball between 1 and 35: "; $eball = <STDIN>; chomp $eball; } until $eball and $eball > 0 and $eball < 35; $selected->push($eball); last } my $ball; do { my $current = $selected->count; print " > $current balls selected: ", $selected->join('-'), "\n"; print "Select a ball between 1 and 59: "; $ball = <STDIN>; chomp $ball; } until $ball and $ball > 0 and $ball < 59 and $selected->all_items != $ball; $selected->push($ball); } print " > You selected ", $selected->sliced(0 .. 4)->join('-'), " (", $selected->get(5), ")\n"; my $balls = [ 1 .. 59 ] ->shuffle ->sliced( 1 .. 5 ); my $extra = [ 1 .. 35 ] ->random; print "! Drew: ", $balls->join('-'), ' ', $extra, "\n"; my $hits = $selected->sliced(0 .. 4) ->grep(sub { $balls->any_items == $_[0] }); my $did_hit; if ($hits->has_any) { print "!! You hit on ", $hits->count, " balls: ", $hits->join(', '), "\n"; ++$did_hit } if ($selected->get(0) == $extra) { print "!! You hit on the extra ball ($extra)!\n"; ++$did_hit } print " >> Better luck next time :(\n" unless $did_hit;