aboutsummaryrefslogtreecommitdiff
path: root/challenge-214
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-214')
-rw-r--r--challenge-214/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-214/arne-sommer/raku/ch-1.raku23
-rwxr-xr-xchallenge-214/arne-sommer/raku/ch-2.raku41
-rwxr-xr-xchallenge-214/arne-sommer/raku/collect-points25
-rwxr-xr-xchallenge-214/arne-sommer/raku/collect-points-cheat41
-rwxr-xr-xchallenge-214/arne-sommer/raku/collect-points-last30
-rwxr-xr-xchallenge-214/arne-sommer/raku/rank-scores23
-rw-r--r--challenge-214/athanasius/perl/ch-1.pl215
-rw-r--r--challenge-214/athanasius/raku/ch-1.raku202
-rw-r--r--challenge-214/avery-adams/blog.txt1
-rw-r--r--challenge-214/avery-adams/blog1.txt1
-rw-r--r--challenge-214/avery-adams/perl/ch-1.pl20
-rw-r--r--challenge-214/barroff/raku/ch-1.pl47
-rw-r--r--challenge-214/barroff/raku/ch-1.raku39
-rw-r--r--challenge-214/bob-lied/README6
-rw-r--r--challenge-214/bob-lied/blog.txt1
-rw-r--r--challenge-214/bob-lied/perl/ch-1.pl84
-rw-r--r--challenge-214/bob-lied/perl/ch-2.pl134
-rw-r--r--challenge-214/cheok-yin-fung/perl/ch-1.pl40
-rw-r--r--challenge-214/cheok-yin-fung/perl/ch-2.pl64
-rw-r--r--challenge-214/duncan-c-white/C/Makefile17
-rw-r--r--challenge-214/duncan-c-white/C/README10
-rw-r--r--challenge-214/duncan-c-white/C/args.c234
-rw-r--r--challenge-214/duncan-c-white/C/args.h12
-rw-r--r--challenge-214/duncan-c-white/C/ch-1.c93
-rw-r--r--challenge-214/duncan-c-white/C/parseints.c114
-rw-r--r--challenge-214/duncan-c-white/C/parseints.h1
-rw-r--r--challenge-214/duncan-c-white/C/printarray.c39
-rw-r--r--challenge-214/duncan-c-white/C/printarray.h1
-rw-r--r--challenge-214/duncan-c-white/C/rank.c46
-rw-r--r--challenge-214/duncan-c-white/C/rank.h1
-rw-r--r--challenge-214/duncan-c-white/README123
-rwxr-xr-xchallenge-214/duncan-c-white/perl/ch-1.pl93
-rwxr-xr-xchallenge-214/duncan-c-white/perl/ch-2.pl159
-rwxr-xr-xchallenge-214/e-choroba/perl/ch-1.pl49
-rwxr-xr-xchallenge-214/e-choroba/perl/ch-2.pl39
-rwxr-xr-xchallenge-214/eric-cheung/python/ch-1.py12
-rwxr-xr-xchallenge-214/eric-cheung/python/ch-2.py11
-rw-r--r--challenge-214/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-214/jaldhar-h-vyas/perl/ch-1.pl33
-rwxr-xr-xchallenge-214/jaldhar-h-vyas/perl/ch-2.pl39
-rwxr-xr-xchallenge-214/jaldhar-h-vyas/raku/ch-1.raku33
-rwxr-xr-xchallenge-214/jaldhar-h-vyas/raku/ch-2.raku40
-rw-r--r--challenge-214/james-smith/README.md159
-rw-r--r--challenge-214/james-smith/blog.txt1
-rw-r--r--challenge-214/james-smith/perl/ch-1.pl59
-rw-r--r--challenge-214/james-smith/perl/ch-2.pl94
-rw-r--r--challenge-214/jeanluc2020/blog.txt1
-rw-r--r--challenge-214/jeanluc2020/blog1.txt1
-rwxr-xr-xchallenge-214/jeanluc2020/perl/ch-1.pl101
-rwxr-xr-xchallenge-214/jeanluc2020/perl/ch-2.pl122
-rwxr-xr-xchallenge-214/jo-37/perl/ch-1.pl83
-rwxr-xr-xchallenge-214/jo-37/perl/ch-2.pl98
-rw-r--r--challenge-214/lubos-kolouch/perl/ch-1.pl44
-rw-r--r--challenge-214/lubos-kolouch/perl/ch-2.pl46
-rw-r--r--challenge-214/lubos-kolouch/python/ch-1.py31
-rw-r--r--challenge-214/lubos-kolouch/python/ch-2.py43
-rw-r--r--challenge-214/mark-anderson/raku/ch-1.raku22
-rw-r--r--challenge-214/mark-anderson/raku/ch-2.raku36
-rwxr-xr-xchallenge-214/perlboy1967/perl/ch-1.pl56
-rw-r--r--challenge-214/peter-campbell-smith/blog.txt1
-rwxr-xr-xchallenge-214/peter-campbell-smith/perl/ch-1.pl48
-rwxr-xr-xchallenge-214/peter-campbell-smith/perl/ch-2.pl94
-rw-r--r--challenge-214/polettix/blog.txt1
-rw-r--r--challenge-214/polettix/blog1.txt1
-rw-r--r--challenge-214/polettix/perl/ch-1.pl22
-rw-r--r--challenge-214/polettix/perl/ch-2.pl75
-rw-r--r--challenge-214/polettix/raku/ch-1.raku16
-rw-r--r--challenge-214/polettix/raku/ch-2.raku67
-rwxr-xr-xchallenge-214/robbie-hatley/perl/ch-1.pl136
-rw-r--r--challenge-214/roger-bell-west/blog.txt1
-rwxr-xr-xchallenge-214/roger-bell-west/javascript/ch-1.js88
-rwxr-xr-xchallenge-214/roger-bell-west/javascript/ch-2.js70
-rw-r--r--challenge-214/roger-bell-west/kotlin/ch-1.kt58
-rw-r--r--challenge-214/roger-bell-west/kotlin/ch-2.kt73
-rwxr-xr-xchallenge-214/roger-bell-west/lua/ch-1.lua102
-rwxr-xr-xchallenge-214/roger-bell-west/lua/ch-2.lua86
-rwxr-xr-xchallenge-214/roger-bell-west/perl/ch-1.pl36
-rwxr-xr-xchallenge-214/roger-bell-west/perl/ch-2.pl57
-rw-r--r--challenge-214/roger-bell-west/postscript/ch-1.ps256
-rw-r--r--challenge-214/roger-bell-west/postscript/ch-2.ps178
-rwxr-xr-xchallenge-214/roger-bell-west/python/ch-1.py44
-rwxr-xr-xchallenge-214/roger-bell-west/python/ch-2.py53
-rwxr-xr-xchallenge-214/roger-bell-west/raku/ch-1.p634
-rwxr-xr-xchallenge-214/roger-bell-west/raku/ch-2.p652
-rwxr-xr-xchallenge-214/roger-bell-west/ruby/ch-1.rb51
-rwxr-xr-xchallenge-214/roger-bell-west/ruby/ch-2.rb63
-rwxr-xr-xchallenge-214/roger-bell-west/rust/ch-1.rs54
-rwxr-xr-xchallenge-214/roger-bell-west/rust/ch-2.rs65
-rw-r--r--challenge-214/roger-bell-west/tests.yaml87
-rw-r--r--challenge-214/shimon-ben-avraham/raku/ch-1.raku135
-rw-r--r--challenge-214/shimon-ben-avraham/raku/ch-2.raku53
-rw-r--r--challenge-214/solathian/perl/ch-1.pl59
-rw-r--r--challenge-214/wambash/raku/ch-1.raku26
-rw-r--r--challenge-214/wlmb/blog.txt2
-rwxr-xr-xchallenge-214/wlmb/perl/ch-1.pl17
-rwxr-xr-xchallenge-214/wlmb/perl/ch-2.pl38
-rw-r--r--challenge-214/zapwai/perl/ch-1.pl64
98 files changed, 5521 insertions, 77 deletions
diff --git a/challenge-214/arne-sommer/blog.txt b/challenge-214/arne-sommer/blog.txt
new file mode 100644
index 0000000000..cdf6b72676
--- /dev/null
+++ b/challenge-214/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/bagging-scorepoints.html
diff --git a/challenge-214/arne-sommer/raku/ch-1.raku b/challenge-214/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..13dd968aad
--- /dev/null
+++ b/challenge-214/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,23 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@scores where @scores.elems > 0 && all(@scores) ~~ UInt, :v(:$verbose));
+
+my %freq = @scores>>.Int.Bag;
+my @sort = @scores.sort.squish.reverse;
+
+say ": Frequency: { %freq.raku }" if $verbose;
+
+my %gold = (1 => 'G', 2 => 'S', 3 => 'B');
+my %rank;
+
+for @sort -> $score
+{
+ state $rank = 1;
+ %rank{$score} = %gold{$rank} // $rank;
+ say ": Score $score with rank: %rank{$score} and frequency: %freq{$score}" if $verbose;
+ $rank += %freq{$score};
+}
+
+say "(" ~ @scores.map({ %rank{$_} }).join(",") ~ ")";
+
+
diff --git a/challenge-214/arne-sommer/raku/ch-2.raku b/challenge-214/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..5479fa301e
--- /dev/null
+++ b/challenge-214/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,41 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@numbers where @numbers.elems > 0 && all(@numbers) ~~ Numeric, :v(:$verbose));
+
+my $score = 0;
+my %freq;
+my $cheat = False;
+
+while (@numbers.elems)
+{
+ $cheat
+ ?? ( $cheat = False )
+ !! ( %freq = @numbers.Bag );
+
+ my $size = @numbers.elems;
+
+ for %freq.keys.sort -> $value
+ {
+ my $freq = %freq{$value};
+ my $index = @numbers.first($value, :k);
+
+ if all(@numbers[$index .. $index + $freq -1]) eq $value
+ {
+ sink @numbers.splice($index, $freq);
+ $score += $freq * $freq;
+ say ": Removed the value $value ($freq items, at index: $index .. { $index + $freq -1}). New score: $score" if $verbose;
+ }
+ }
+
+ if @numbers.elems == $size
+ {
+ my $val = %freq.keys.sort({ %freq{$_} }).first;
+ %freq{$val}--;
+ $cheat = True;
+ say ": Enable cheat mode on value $val" if $verbose;
+ }
+}
+
+say "ERROR: Unable to reduce @numbers[]" if @numbers.elems;
+
+say $score;
diff --git a/challenge-214/arne-sommer/raku/collect-points b/challenge-214/arne-sommer/raku/collect-points
new file mode 100755
index 0000000000..219cc9421f
--- /dev/null
+++ b/challenge-214/arne-sommer/raku/collect-points
@@ -0,0 +1,25 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@numbers where @numbers.elems > 0 && all(@numbers) ~~ Numeric, :v(:$verbose));
+
+my $score = 0;
+
+while (@numbers.elems)
+{
+ my %freq = @numbers.Bag;
+
+ for %freq.keys.sort -> $value
+ {
+ my $freq = %freq{$value};
+ my $index = @numbers.first($value, :k);
+
+ if all(@numbers[$index .. $index + $freq -1]) eq $value
+ {
+ sink @numbers.splice($index, $freq);
+ $score += $freq * $freq;
+ say ": Removed the value $value ($freq items, at index: $index .. { $index + $freq -1}). New score: $score" if $verbose;
+ }
+ }
+}
+
+say $score;
diff --git a/challenge-214/arne-sommer/raku/collect-points-cheat b/challenge-214/arne-sommer/raku/collect-points-cheat
new file mode 100755
index 0000000000..5479fa301e
--- /dev/null
+++ b/challenge-214/arne-sommer/raku/collect-points-cheat
@@ -0,0 +1,41 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@numbers where @numbers.elems > 0 && all(@numbers) ~~ Numeric, :v(:$verbose));
+
+my $score = 0;
+my %freq;
+my $cheat = False;
+
+while (@numbers.elems)
+{
+ $cheat
+ ?? ( $cheat = False )
+ !! ( %freq = @numbers.Bag );
+
+ my $size = @numbers.elems;
+
+ for %freq.keys.sort -> $value
+ {
+ my $freq = %freq{$value};
+ my $index = @numbers.first($value, :k);
+
+ if all(@numbers[$index .. $index + $freq -1]) eq $value
+ {
+ sink @numbers.splice($index, $freq);
+ $score += $freq * $freq;
+ say ": Removed the value $value ($freq items, at index: $index .. { $index + $freq -1}). New score: $score" if $verbose;
+ }
+ }
+
+ if @numbers.elems == $size
+ {
+ my $val = %freq.keys.sort({ %freq{$_} }).first;
+ %freq{$val}--;
+ $cheat = True;
+ say ": Enable cheat mode on value $val" if $verbose;
+ }
+}
+
+say "ERROR: Unable to reduce @numbers[]" if @numbers.elems;
+
+say $score;
diff --git a/challenge-214/arne-sommer/raku/collect-points-last b/challenge-214/arne-sommer/raku/collect-points-last
new file mode 100755
index 0000000000..c11c023438
--- /dev/null
+++ b/challenge-214/arne-sommer/raku/collect-points-last
@@ -0,0 +1,30 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@numbers where @numbers.elems > 0 && all(@numbers) ~~ Numeric, :v(:$verbose));
+
+my $score = 0;
+
+while (@numbers.elems)
+{
+ my %freq = @numbers.Bag;
+ my $size = @numbers.elems;
+
+ for %freq.keys.sort -> $value
+ {
+ my $freq = %freq{$value};
+ my $index = @numbers.first($value, :k);
+
+ if all(@numbers[$index .. $index + $freq -1]) eq $value
+ {
+ sink @numbers.splice($index, $freq);
+ $score += $freq * $freq;
+ say ": Removed the value $value ($freq items, at index: $index .. { $index + $freq -1}). New score: $score" if $verbose;
+ }
+ }
+
+ last if @numbers.elems == $size;
+}
+
+say "ERROR: Unable to reduce @numbers[]" if @numbers.elems;
+
+say $score;
diff --git a/challenge-214/arne-sommer/raku/rank-scores b/challenge-214/arne-sommer/raku/rank-scores
new file mode 100755
index 0000000000..13dd968aad
--- /dev/null
+++ b/challenge-214/arne-sommer/raku/rank-scores
@@ -0,0 +1,23 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@scores where @scores.elems > 0 && all(@scores) ~~ UInt, :v(:$verbose));
+
+my %freq = @scores>>.Int.Bag;
+my @sort = @scores.sort.squish.reverse;
+
+say ": Frequency: { %freq.raku }" if $verbose;
+
+my %gold = (1 => 'G', 2 => 'S', 3 => 'B');
+my %rank;
+
+for @sort -> $score
+{
+ state $rank = 1;
+ %rank{$score} = %gold{$rank} // $rank;
+ say ": Score $score with rank: %rank{$score} and frequency: %freq{$score}" if $verbose;
+ $rank += %freq{$score};
+}
+
+say "(" ~ @scores.map({ %rank{$_} }).join(",") ~ ")";
+
+
diff --git a/challenge-214/athanasius/perl/ch-1.pl b/challenge-214/athanasius/perl/ch-1.pl
new file mode 100644
index 0000000000..4d7ec02f41
--- /dev/null
+++ b/challenge-214/athanasius/perl/ch-1.pl
@@ -0,0 +1,215 @@
+#!perl
+
+################################################################################
+=comment
+
+Perl Weekly Challenge 214
+=========================
+
+TASK #1
+-------
+*Rank Score*
+
+Submitted by: Mohammad S Anwar
+
+You are given a list of scores (>=1).
+
+Write a script to rank each score in descending order. First three will get
+medals i.e. G (Gold), S (Silver) and B (Bronze). Rest will just get the ranking
+number.
+
+ Using the standard model of giving equal scores equal rank, then advancing
+ that number of ranks.
+
+Example 1
+
+ Input: @scores = (1,2,4,3,5)
+ Output: (5,4,S,B,G)
+
+ Score 1 is the 5th rank.
+ Score 2 is the 4th rank.
+ Score 4 is the 2nd rank i.e. Silver (S).
+ Score 3 is the 3rd rank i.e. Bronze (B).
+ Score 5 is the 1st rank i.e. Gold (G).
+
+Example 2
+
+ Input: @scores = (8,5,6,7,4)
+ Output: (G,4,B,S,5)
+
+ Score 8 is the 1st rank i.e. Gold (G).
+ Score 5 is the 4th rank.
+ Score 6 is the 3rd rank i.e. Bronze (B).
+ Score 7 is the 2nd rank i.e. Silver (S).
+ Score 4 is the 5th rank.
+
+Example 3
+
+ Input: @list = (3,5,4,2)
+ Output: (B,G,S,4)
+
+Example 4
+
+ Input: @scores = (2,5,2,1,7,5,1)
+ Output: (4,S,4,6,G,S,6)
+
+=cut
+################################################################################
+
+#--------------------------------------#
+# Copyright © 2023 PerlMonk Athanasius #
+#--------------------------------------#