From 1bbb8f12e1d69d8fd57365619e3ebadfdaaa28c6 Mon Sep 17 00:00:00 2001 From: 冯昶 Date: Wed, 6 Jan 2021 19:02:55 +0800 Subject: challenge #044, task #1, raku solution --- challenge-044/feng-chang/ch-1.raku | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100755 challenge-044/feng-chang/ch-1.raku diff --git a/challenge-044/feng-chang/ch-1.raku b/challenge-044/feng-chang/ch-1.raku new file mode 100755 index 0000000000..07e0cb40e8 --- /dev/null +++ b/challenge-044/feng-chang/ch-1.raku @@ -0,0 +1,15 @@ +#!/bin/env raku + +use MONKEY-SEE-NO-EVAL; + +my @even = 0, 2 ... 16; +my @odd = 1, 3 ... 15; + +my @a; +@a[@even] = '123456789'.comb».UInt; + +for [X] (['', '+', '-'] xx 8) -> @ops { + @a[@odd] = @ops; + my $s = @a.join; + put $s if EVAL($s) == 100; +} -- cgit From 865acfd056fb6f409ec6b1a81d60b931cbcb69fe Mon Sep 17 00:00:00 2001 From: 冯昶 Date: Thu, 7 Jan 2021 21:29:02 +0800 Subject: challenge #044, task #1, raku solution --- challenge-044/feng-chang/ch-1.raku | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/challenge-044/feng-chang/ch-1.raku b/challenge-044/feng-chang/ch-1.raku index 07e0cb40e8..c7691dd4a8 100755 --- a/challenge-044/feng-chang/ch-1.raku +++ b/challenge-044/feng-chang/ch-1.raku @@ -5,11 +5,10 @@ use MONKEY-SEE-NO-EVAL; my @even = 0, 2 ... 16; my @odd = 1, 3 ... 15; -my @a; -@a[@even] = '123456789'.comb».UInt; - -for [X] (['', '+', '-'] xx 8) -> @ops { - @a[@odd] = @ops; +([X] (['', '+', '-'] xx 8)).race(degree => 2, batch => 200).map({ + my @a; + @a[@even] = '123456789'.comb; + @a[@odd] = $_; my $s = @a.join; put $s if EVAL($s) == 100; -} +}); -- cgit From f07721a447942936d7189b4beec3c2acae0c635d Mon Sep 17 00:00:00 2001 From: 冯昶 Date: Mon, 15 Mar 2021 19:31:37 +0800 Subject: challenge 104, raku solutions --- challenge-104/feng-chang/raku/ch-1.raku | 12 ++++++++ challenge-104/feng-chang/raku/ch-2.raku | 51 +++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100755 challenge-104/feng-chang/raku/ch-1.raku create mode 100755 challenge-104/feng-chang/raku/ch-2.raku diff --git a/challenge-104/feng-chang/raku/ch-1.raku b/challenge-104/feng-chang/raku/ch-1.raku new file mode 100755 index 0000000000..19d124c75a --- /dev/null +++ b/challenge-104/feng-chang/raku/ch-1.raku @@ -0,0 +1,12 @@ +#!/bin/env raku + +multi fusc(0) { 0 } +multi fusc(1) { 1 } + +multi fusc(UInt:D \n where n > 0 && n %% 2) +{ fusc((n/2).UInt) } + +multi fusc(UInt:D \n where * > 0) +{ fusc(((n-1)/2).UInt) + fusc(((n+1)/2).UInt) } + +put (0..49)».&fusc.join(' '); diff --git a/challenge-104/feng-chang/raku/ch-2.raku b/challenge-104/feng-chang/raku/ch-2.raku new file mode 100755 index 0000000000..81d4200622 --- /dev/null +++ b/challenge-104/feng-chang/raku/ch-2.raku @@ -0,0 +1,51 @@ +#!/bin/env raku + +sub human-play(UInt:D \n --> UInt:D) { + my UInt $pick; + + repeat { + $pick = prompt "{ n } tokens left, please input number of tokens you take: "; + } while $pick != 1|2|3 || $pick > n; + put ''; + + $pick; +} + +sub computer-play(UInt:D \n --> UInt:D) { + my UInt $pick = do given n { + when n < 4 { n } + when n %% 4 { (1..3).pick } + default { n % 4 } + }; + put "{ n } tokens left, I take $pick tokens.\n"; + + $pick; +} + +multi MAIN(UInt:D $n is copy, Bool:D \human-plays-first = True) { + my Bool $human-won = True; + + while $n > 0 { + given human-plays-first { + when ?* { + $n -= human-play($n); + + if $n > 0 { + $n -= computer-play($n); + $human-won = False if $n == 0; + } + } + default { + $n -= computer-play($n); + + if $n == 0 { + $human-won = False; + } else { + $n -= human-play($n); + } + } + } + } + + put "{ $human-won ?? 'You' !! 'I' } won."; +} -- cgit From af66a71f6313aa7102dff899c27ea0958e0b83d2 Mon Sep 17 00:00:00 2001 From: 冯昶 Date: Fri, 23 Apr 2021 12:35:19 +0800 Subject: challenge 109, raku solutions --- challenge-109/feng-chang/raku/ch-1.raku | 2 ++ challenge-109/feng-chang/raku/ch-2.raku | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100755 challenge-109/feng-chang/raku/ch-1.raku create mode 100755 challenge-109/feng-chang/raku/ch-2.raku diff --git a/challenge-109/feng-chang/raku/ch-1.raku b/challenge-109/feng-chang/raku/ch-1.raku new file mode 100755 index 0000000000..0e3494f184 --- /dev/null +++ b/challenge-109/feng-chang/raku/ch-1.raku @@ -0,0 +1,2 @@ +#!/bin/env raku +(1..20).map({ (2..^$^a).grep($^a%%*).sum }).put; diff --git a/challenge-109/feng-chang/raku/ch-2.raku b/challenge-109/feng-chang/raku/ch-2.raku new file mode 100755 index 0000000000..54d6c89ced --- /dev/null +++ b/challenge-109/feng-chang/raku/ch-2.raku @@ -0,0 +1,18 @@ +#!/bin/env raku + +sub tell-the-answer(@*a) { + my %h; + for 'a'..'g' Z ^7 -> ($c, $n) { + %h{$c} = @*a[$n]; + put "$c = { %h{$c} }"; + } + + put "Box 1: a + b = {%h} + {%h} = { %h + %h }"; + put "Box 2: b + c + d = {%h} + {%h} + {%h} = { %h + %h + %h }"; + put "Box 3: d + e + f = {%h} + {%h} + {%h} = { %h + %h + %h }"; + put "Box 4: f + g = {%h} + {%h} = { %h + %h }"; + + put ' - ' x 11; +} + +(1..7).permutations.grep({ .&tell-the-answer if .[0]+.[1] == .[1]+.[2]+.[3] == .[3]+.[4]+.[5] == .[5]+.[6] }); -- cgit From 0142974e5f11adadbaa7ca8d71de9db345318519 Mon Sep 17 00:00:00 2001 From: 冯昶 Date: Mon, 26 Apr 2021 15:18:38 +0800 Subject: challenge 110, raku solutions --- challenge-110/feng-chang/raku/ch-1.raku | 16 ++++++++++++++++ challenge-110/feng-chang/raku/ch-2.raku | 8 ++++++++ challenge-110/feng-chang/raku/ch-2.txt | 5 +++++ 3 files changed, 29 insertions(+) create mode 100755 challenge-110/feng-chang/raku/ch-1.raku create mode 100755 challenge-110/feng-chang/raku/ch-2.raku create mode 100644 challenge-110/feng-chang/raku/ch-2.txt diff --git a/challenge-110/feng-chang/raku/ch-1.raku b/challenge-110/feng-chang/raku/ch-1.raku new file mode 100755 index 0000000000..7e6f7bd5cc --- /dev/null +++ b/challenge-110/feng-chang/raku/ch-1.raku @@ -0,0 +1,16 @@ +#!/bin/env raku + +grammar Phone-Number { + regex TOP { \s+ } + token prefix { '+'\d\d || '('\d\d')' || \d\d\d\d } + token local { \d ** 10 } +} + +my @numbers = + '0044 1148820341', + '+44 1148820341', + '44-11-4882-0341', + '(44) 1148820341', + '00 1148820341'; + +.put if Phone-Number.parse($_) for @numbers; diff --git a/challenge-110/feng-chang/raku/ch-2.raku b/challenge-110/feng-chang/raku/ch-2.raku new file mode 100755 index 0000000000..78a5c3dfb3 --- /dev/null +++ b/challenge-110/feng-chang/raku/ch-2.raku @@ -0,0 +1,8 @@ +#!/bin/env raku + +sub MAIN(Str:D $f where *.IO.e = 'ch-2.txt') { + my @a = $f.IO.lines».split(','); + for ^@a[0].elems -> $i { + put @a.map(*[$i]).join(','); + } +} diff --git a/challenge-110/feng-chang/raku/ch-2.txt b/challenge-110/feng-chang/raku/ch-2.txt new file mode 100644 index 0000000000..716ebdce75 --- /dev/null +++ b/challenge-110/feng-chang/raku/ch-2.txt @@ -0,0 +1,5 @@ +name,age,sex +Mohammad,45,m +Joe,20,m +Julie,35,f +Cristina,10,f -- cgit From b8a0f3583b84bf0f36e8789ac05523b472de9c73 Mon Sep 17 00:00:00 2001 From: 冯昶 Date: Mon, 3 May 2021 20:47:16 +0800 Subject: challenge 111, raku solutions --- challenge-111/feng-chang/raku/ch-1.raku | 19 +++++++++++++++++++ challenge-111/feng-chang/raku/ch-1.txt | 5 +++++ challenge-111/feng-chang/raku/ch-2.raku | 7 +++++++ 3 files changed, 31 insertions(+) create mode 100755 challenge-111/feng-chang/raku/ch-1.raku create mode 100644 challenge-111/feng-chang/raku/ch-1.txt create mode 100755 challenge-111/feng-chang/raku/ch-2.raku diff --git a/challenge-111/feng-chang/raku/ch-1.raku b/challenge-111/feng-chang/raku/ch-1.raku new file mode 100755 index 0000000000..0355d1e80c --- /dev/null +++ b/challenge-111/feng-chang/raku/ch-1.raku @@ -0,0 +1,19 @@ +#!/bin/env raku + +sub binary-search(@a, Int:D $start, Int:D $end, Int:D $n) { + my $middle = ($start + $end) div 2; + do given @a[$middle] { + when $_ == $n { 1 } + when $start == $end { 0 } + when $_ > $n { binary-search(@a, $start, $middle - 1, $n) } + default { binary-search(@a, $middle + 1, $end, $n) } + } +} + +sub MAIN( + Int:D $n, + Str:D $f where *.IO.f = 'ch-1.txt' +) { + my @a = $f.IO.words; + put binary-search(@a, 0, @a.elems - 1, $n); +} diff --git a/challenge-111/feng-chang/raku/ch-1.txt b/challenge-111/feng-chang/raku/ch-1.txt new file mode 100644 index 0000000000..1daf55c92c --- /dev/null +++ b/challenge-111/feng-chang/raku/ch-1.txt @@ -0,0 +1,5 @@ + 1 2 3 5 7 + 9 11 15 19 20 +23 24 25 29 31 +32 33 39 40 42 +45 47 48 49 50 diff --git a/challenge-111/feng-chang/raku/ch-2.raku b/challenge-111/feng-chang/raku/ch-2.raku new file mode 100755 index 0000000000..a5d8d40c7d --- /dev/null +++ b/challenge-111/feng-chang/raku/ch-2.raku @@ -0,0 +1,7 @@ +#!/bin/env raku + +sub MAIN(Str:D $words where *.IO.e = '/usr/share/dict/words') { + my @w = $words.IO.words.grep({ [le] $_.lc.comb }); + my $max-length = @w».chars.max; + @w.grep(*.chars == $max-length).put; +} -- cgit