Guest User

Untitled

a guest
Jul 21st, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. #!/usr/bin/env perl6
  2.  
  3. use v6;
  4.  
  5. say 'Willkommen bei EuroMillionen!';
  6.  
  7. my %rank_for = {
  8. 5 => {
  9. 2 => 1,
  10. 1 => 2,
  11. 0 => 3,
  12. },
  13. 4 => {
  14. 2 => 4,
  15. 1 => 5,
  16. 0 => 6,
  17. },
  18. 3 => {
  19. 2 => 7,
  20. 1 => 8,
  21. 0 => 10,
  22. },
  23. 2 => {
  24. 2 => 9,
  25. 1 => 12,
  26. },
  27. 1 => {
  28. 2 => 11,
  29. }
  30. };
  31.  
  32. my $play_again;
  33. repeat {
  34. until (my $input = prompt('Wollen sie einen Quicktipp abgeben? j/n: ')) ~~ any( "j", "n" ) {}
  35. my $qtip = $input eq 'j';
  36.  
  37. my @numbers;
  38. my @stars;
  39.  
  40. # could use junction but need array for pick
  41. my @allowed_numbers = (1..50);
  42. my @allowed_stars = (1..9);
  43.  
  44. if ($qtip) {
  45. @numbers = @allowed_numbers.pick(5);
  46. @stars = @allowed_stars.pick(2);
  47. }
  48. else {
  49. for 1..5 {
  50. # ask again until one of the allowed numbers and none of the already chosen numbers
  51. until (my $input = prompt("Bitte geben sie Nummer $_ ein (1-50): ")) ~~ any @allowed_numbers && $input !~~ any @numbers {}
  52. push @numbers, $input;
  53. }
  54. for 1..2 {
  55. # ask again until one of the allowed stars and none of the already chosen stars
  56. until (my $input = prompt("Bitte geben sie Stern $_ ein (1-9): ")) ~~ any @allowed_stars && $input !~~ any @stars {}
  57. push @stars, $input;
  58. }
  59. }
  60.  
  61. say "Ihr Tipp lautet: {@numbers.sort}, {@stars.sort}";
  62.  
  63. my @drawn_numbers = @allowed_numbers.pick(5);
  64. my @drawn_stars = @allowed_stars.pick(2);
  65.  
  66. say "Die gezogenen Nummern und Sterne lauten: {@drawn_numbers.sort}, {@drawn_stars.sort}";
  67.  
  68. my @matching_numbers = @numbers.grep(any(@drawn_numbers));
  69. my @matching_stars = @stars.grep(any(@drawn_stars));
  70.  
  71. my $matching_number_cnt = @matching_numbers.elems;
  72. my $matching_star_cnt = @matching_stars.elems;
  73. my $matching_rank = %rank_for{$matching_number_cnt}{$matching_star_cnt};
  74.  
  75. say "$matching_number_cnt Nummer(n) und $matching_star_cnt Stern(e) stimmen überein: {@matching_numbers}, {@matching_stars}";
  76. say $matching_rank
  77. ?? "Sie haben den Rang $matching_rank erreicht"
  78. !! 'Sie haben leider keinen Rang erreicht';
  79.  
  80. until ($input = prompt('Wollen sie noch einmal spielen? j/n: ')) ~~ any( "j", "n" ) {}
  81. $play_again = $input eq 'j';
  82. } while $play_again;
Add Comment
Please, Sign In to add comment