diff options
| author | Jan Krňávek <Jan.Krnavek@gmail.com> | 2025-08-10 21:43:21 +0200 |
|---|---|---|
| committer | Jan Krňávek <Jan.Krnavek@gmail.com> | 2025-08-10 21:43:21 +0200 |
| commit | cfe29ff27ec7f39edbe6667444b11d76e66838a3 (patch) | |
| tree | f4a574d42f4907818bcb31730fef0208684bb5a2 | |
| parent | a3d6722b292f75d24b521a59012db53c9d4f7684 (diff) | |
| download | perlweeklychallenge-club-cfe29ff27ec7f39edbe6667444b11d76e66838a3.tar.gz perlweeklychallenge-club-cfe29ff27ec7f39edbe6667444b11d76e66838a3.tar.bz2 perlweeklychallenge-club-cfe29ff27ec7f39edbe6667444b11d76e66838a3.zip | |
solutions week 333
| -rw-r--r-- | challenge-333/wambash/raku/ch-1.raku | 29 | ||||
| -rw-r--r-- | challenge-333/wambash/raku/ch-2.raku | 21 |
2 files changed, 50 insertions, 0 deletions
diff --git a/challenge-333/wambash/raku/ch-1.raku b/challenge-333/wambash/raku/ch-1.raku new file mode 100644 index 0000000000..38641156f3 --- /dev/null +++ b/challenge-333/wambash/raku/ch-1.raku @@ -0,0 +1,29 @@ +#!/usr/bin/env raku + +sub straight-line (+@list) { + my ($M, $N) = @list.squish( with => &[eqv] ); + return True without $N; + + my $a=$M[0]-$N[0]; + my $b=$M[1]-$N[1]; + + @list + andthen .map: {$b * .[0] - $a * .[1]}\ + andthen [==] $_ +} + +multi MAIN (Bool :test($)!) { + use Test; + is straight-line((2,1),(2,3),(2,5)), True; + is straight-line((1,4),(3,4),(10,4)), True; + is straight-line((0,0),(1,1),(2,3)), False; + is straight-line((1,1),(2,2),(3,3)), True; + is straight-line((1,1),(1,1),(1,1)), True; + is straight-line((1,1),(1,1),(2,2),(3,4)), False; + is straight-line((1_000_000,1_000_000),(2_000_000,2_000_000),(3_000_000,3_000_000)), True; + done-testing; +} + +multi MAIN (+list) { + say straight-line list.map: *.split(',').cache; +} diff --git a/challenge-333/wambash/raku/ch-2.raku b/challenge-333/wambash/raku/ch-2.raku new file mode 100644 index 0000000000..10110f03ff --- /dev/null +++ b/challenge-333/wambash/raku/ch-2.raku @@ -0,0 +1,21 @@ +#!/usr/bin/env raku + +sub duplicate-zeros (+ints) { + ints + andthen .map: { $_ == 0 ?? slip 0,0 !! $_ }\ + andthen .head: ints.elems +} + +multi MAIN (Bool :test($)!) { + use Test; + is duplicate-zeros(1, 0, 2, 3, 0, 4, 5, 0), (1, 0, 0, 2, 3, 0, 0, 4); + is duplicate-zeros(1, 2, 3), (1, 2, 3,); + is duplicate-zeros(1, 2, 3, 0), (1, 2, 3,0); + is duplicate-zeros(0,0,1, 2), (0,0,0,0); + is duplicate-zeros(1, 2, 0, 3,4), (1, 2, 0,0,3); + done-testing; +} + +multi MAIN (+ints) { + put duplicate-zeros ints; +} |
