1 3 4 8 - BAD (3,4,5) 1 4 7 8 - BAD (7 + 8 = 15) 1 6 7 8 - BAD (7 + 8 = 15) 2 3 4 9 - BAD (9 + 4 + 2 = 15) 2 3 6 9 - BAD (9 + 6 = 15) 2 4 7 9 - BAD (9 + 4 + 2 = 15) 2 6 7 9 - BAD (9 + 6 = 15) 3 4 8 9 - BAD (3,5,5) 3 6 8 9 - BAD (9 + 6 = 15) 4 7 8 9 - BAD (7 + 8 = 15) 6 7 8 9 - BAD (9 + 6 = 15) #### #!/usr/bin/perl use strict; use warnings; # Assume that all my $iter = combo( 4, 1..4, 6..9 ); while ( my @combo = $iter->() ) { next if make_10( @combo ); print "@combo\n"; } sub make_10 { my @hand = @_; for ( 2 .. 4 ) { my $iter = combo( $_, @hand ); while ( my @combo = $iter->() ) { my $tot = 0; $tot += $_ for @combo; return 1 if $tot == 10; } } return 0; }