aboutsummaryrefslogtreecommitdiff
path: root/challenge-246
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-246')
-rwxr-xr-xchallenge-246/arne-sommer/bash/6-out-of-49.sh20
-rwxr-xr-xchallenge-246/arne-sommer/bash/ch-1.sh20
-rw-r--r--challenge-246/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-246/arne-sommer/perl/6-out-of-49.perl13
-rwxr-xr-xchallenge-246/arne-sommer/perl/ch-1.pl13
-rwxr-xr-xchallenge-246/arne-sommer/raku/6-out-of-493
-rwxr-xr-xchallenge-246/arne-sommer/raku/ch-1.raku3
-rwxr-xr-xchallenge-246/arne-sommer/raku/ch-2.raku33
-rwxr-xr-xchallenge-246/arne-sommer/raku/lroso33
-rwxr-xr-xchallenge-246/arne-sommer/raku/reverse-lroso7
-rwxr-xr-xchallenge-246/arne-sommer/ruby/6-out-of-49.ruby18
-rwxr-xr-xchallenge-246/arne-sommer/ruby/ch-1.rb18
-rwxr-xr-xchallenge-246/arne-sommer/sql/6-out-of-49.sql14
-rwxr-xr-xchallenge-246/arne-sommer/sql/ch-1.sql14
14 files changed, 210 insertions, 0 deletions
diff --git a/challenge-246/arne-sommer/bash/6-out-of-49.sh b/challenge-246/arne-sommer/bash/6-out-of-49.sh
new file mode 100755
index 0000000000..bb80e85cd7
--- /dev/null
+++ b/challenge-246/arne-sommer/bash/6-out-of-49.sh
@@ -0,0 +1,20 @@
+#! /bin/bash
+
+declare -A SIX
+
+for (( ; ; ))
+ do
+ key=$(($RANDOM % 49 + 1))
+ SIX[$key]=1
+
+ if [ ${#SIX[*]} -gt 5 ]; then
+ break
+ fi
+done
+
+IFS=$'\n' sorted=($(sort -n <<<"${!SIX[*]}"))
+unset IFS
+
+for value in ${sorted[@]}; do
+ echo "$value"
+done
diff --git a/challenge-246/arne-sommer/bash/ch-1.sh b/challenge-246/arne-sommer/bash/ch-1.sh
new file mode 100755
index 0000000000..bb80e85cd7
--- /dev/null
+++ b/challenge-246/arne-sommer/bash/ch-1.sh
@@ -0,0 +1,20 @@
+#! /bin/bash
+
+declare -A SIX
+
+for (( ; ; ))
+ do
+ key=$(($RANDOM % 49 + 1))
+ SIX[$key]=1
+
+ if [ ${#SIX[*]} -gt 5 ]; then
+ break
+ fi
+done
+
+IFS=$'\n' sorted=($(sort -n <<<"${!SIX[*]}"))
+unset IFS
+
+for value in ${sorted[@]}; do
+ echo "$value"
+done
diff --git a/challenge-246/arne-sommer/blog.txt b/challenge-246/arne-sommer/blog.txt
new file mode 100644
index 0000000000..65e5669dd2
--- /dev/null
+++ b/challenge-246/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/out-of-linear.html
diff --git a/challenge-246/arne-sommer/perl/6-out-of-49.perl b/challenge-246/arne-sommer/perl/6-out-of-49.perl
new file mode 100755
index 0000000000..f73c982ad1
--- /dev/null
+++ b/challenge-246/arne-sommer/perl/6-out-of-49.perl
@@ -0,0 +1,13 @@
+#! /usr/bin/env perl
+
+my %six;
+
+while (keys %six < 6)
+{
+ $six{ int(1+ rand(48)) } = 1;
+}
+
+foreach my $key (sort { $a <=> $b } keys %six)
+{
+ print "$key\n";
+}
diff --git a/challenge-246/arne-sommer/perl/ch-1.pl b/challenge-246/arne-sommer/perl/ch-1.pl
new file mode 100755
index 0000000000..f73c982ad1
--- /dev/null
+++ b/challenge-246/arne-sommer/perl/ch-1.pl
@@ -0,0 +1,13 @@
+#! /usr/bin/env perl
+
+my %six;
+
+while (keys %six < 6)
+{
+ $six{ int(1+ rand(48)) } = 1;
+}
+
+foreach my $key (sort { $a <=> $b } keys %six)
+{
+ print "$key\n";
+}
diff --git a/challenge-246/arne-sommer/raku/6-out-of-49 b/challenge-246/arne-sommer/raku/6-out-of-49
new file mode 100755
index 0000000000..58cade000d
--- /dev/null
+++ b/challenge-246/arne-sommer/raku/6-out-of-49
@@ -0,0 +1,3 @@
+#! /usr/bin/env raku
+
+(1..49).pick(6).sort>>.say;
diff --git a/challenge-246/arne-sommer/raku/ch-1.raku b/challenge-246/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..58cade000d
--- /dev/null
+++ b/challenge-246/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,3 @@
+#! /usr/bin/env raku
+
+(1..49).pick(6).sort>>.say;
diff --git a/challenge-246/arne-sommer/raku/ch-2.raku b/challenge-246/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..2615f884fd
--- /dev/null
+++ b/challenge-246/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,33 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@a where @a.elems == 5 && all(@a) ~~ Int, :v(:$verbose));
+
+for -10 .. 10 -> $p
+{
+ for -10 .. 10 -> $q
+ {
+ is-lroso(@a, $p, $q) if $p * @a[0] + $q * @a[1] == @a[2];
+ }
+}
+
+say 'false';
+
+sub is-lroso (@a is copy, $p, $q)
+{
+ my $first = @a.shift;
+ my $second = @a.shift;
+ my $target;
+
+ while (@a.elems)
+ {
+ $target = @a.shift;
+ return unless $p * $first + $q * $second == $target;
+
+ $first = $second;
+ $second = $target;
+ }
+
+ say ": p:$p, q:$q" if $verbose;
+ say 'true';
+ exit;
+}
diff --git a/challenge-246/arne-sommer/raku/lroso b/challenge-246/arne-sommer/raku/lroso
new file mode 100755
index 0000000000..2615f884fd
--- /dev/null
+++ b/challenge-246/arne-sommer/raku/lroso
@@ -0,0 +1,33 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@a where @a.elems == 5 && all(@a) ~~ Int, :v(:$verbose));
+
+for -10 .. 10 -> $p
+{
+ for -10 .. 10 -> $q
+ {
+ is-lroso(@a, $p, $q) if $p * @a[0] + $q * @a[1] == @a[2];
+ }
+}
+
+say 'false';
+
+sub is-lroso (@a is copy, $p, $q)
+{
+ my $first = @a.shift;
+ my $second = @a.shift;
+ my $target;
+
+ while (@a.elems)
+ {
+ $target = @a.shift;
+ return unless $p * $first + $q * $second == $target;
+
+ $first = $second;
+ $second = $target;
+ }
+
+ say ": p:$p, q:$q" if $verbose;
+ say 'true';
+ exit;
+}
diff --git a/challenge-246/arne-sommer/raku/reverse-lroso b/challenge-246/arne-sommer/raku/reverse-lroso
new file mode 100755
index 0000000000..b4376a760c
--- /dev/null
+++ b/challenge-246/arne-sommer/raku/reverse-lroso
@@ -0,0 +1,7 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (Int $first, Int $second, Int :$p = 1, Int :$q = 1, UInt :$limit = 10);
+
+my $seq := ($first, $second, $p * * + $q * * ... Inf);
+
+say $seq[^$limit].join(", ");
diff --git a/challenge-246/arne-sommer/ruby/6-out-of-49.ruby b/challenge-246/arne-sommer/ruby/6-out-of-49.ruby
new file mode 100755
index 0000000000..ca73f52770
--- /dev/null
+++ b/challenge-246/arne-sommer/ruby/6-out-of-49.ruby
@@ -0,0 +1,18 @@
+#! /usr/bin/env ruby
+
+six = {}
+
+while six.length < 6 do
+ six[ rand(1...49) ] = 1
+end
+
+seven = [];
+
+six.each do |key, value|
+ seven.push key
+end
+
+seven.sort { |a,b| a <=> b }.each do |key|
+ puts key
+end
+
diff --git a/challenge-246/arne-sommer/ruby/ch-1.rb b/challenge-246/arne-sommer/ruby/ch-1.rb
new file mode 100755
index 0000000000..ca73f52770
--- /dev/null
+++ b/challenge-246/arne-sommer/ruby/ch-1.rb
@@ -0,0 +1,18 @@
+#! /usr/bin/env ruby
+
+six = {}
+
+while six.length < 6 do
+ six[ rand(1...49) ] = 1
+end
+
+seven = [];
+
+six.each do |key, value|
+ seven.push key
+end
+
+seven.sort { |a,b| a <=> b }.each do |key|
+ puts key
+end
+
diff --git a/challenge-246/arne-sommer/sql/6-out-of-49.sql b/challenge-246/arne-sommer/sql/6-out-of-49.sql
new file mode 100755
index 0000000000..fcf1d10e3e
--- /dev/null
+++ b/challenge-246/arne-sommer/sql/6-out-of-49.sql
@@ -0,0 +1,14 @@
+-- sqlite3 --
+
+CREATE TABLE lotto (Value INT NOT NULL);
+
+INSERT INTO lotto VALUES
+ (1), (2), (3), (4), (5), (6), (7), (8), (9), (10),
+(11),(12),(13),(14),(15),(16),(17),(18),(19),(20),
+(21),(22),(23),(24),(25),(26),(27),(28),(29),(30),
+(31),(32),(33),(34),(35),(36),(37),(38),(39),(40),
+(41),(42),(43),(43),(45),(46),(47),(48),(49);
+
+-- SELECT * FROM lotto ORDER BY RANDOM() LIMIT 6;
+
+SELECT * FROM ( SELECT * FROM lotto ORDER BY RANDOM() LIMIT 6 ) ORDER BY Value;
diff --git a/challenge-246/arne-sommer/sql/ch-1.sql b/challenge-246/arne-sommer/sql/ch-1.sql
new file mode 100755
index 0000000000..fcf1d10e3e
--- /dev/null
+++ b/challenge-246/arne-sommer/sql/ch-1.sql
@@ -0,0 +1,14 @@
+-- sqlite3 --
+
+CREATE TABLE lotto (Value INT NOT NULL);
+
+INSERT INTO lotto VALUES
+ (1), (2), (3), (4), (5), (6), (7), (8), (9), (10),
+(11),(12),(13),(14),(15),(16),(17),(18),(19),(20),
+(21),(22),(23),(24),(25),(26),(27),(28),(29),(30),
+(31),(32),(33),(34),(35),(36),(37),(38),(39),(40),
+(41),(42),(43),(43),(45),(46),(47),(48),(49);
+
+-- SELECT * FROM lotto ORDER BY RANDOM() LIMIT 6;
+
+SELECT * FROM ( SELECT * FROM lotto ORDER BY RANDOM() LIMIT 6 ) ORDER BY Value;