aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-228/deadmarshal/blog.txt1
-rw-r--r--challenge-228/deadmarshal/cl/ch1.lisp15
-rw-r--r--challenge-228/deadmarshal/cl/ch2.lisp12
-rw-r--r--challenge-228/deadmarshal/lua/ch-1.lua18
-rw-r--r--challenge-228/deadmarshal/lua/ch-2.lua15
-rw-r--r--challenge-228/deadmarshal/perl/ch-1.pl15
-rw-r--r--challenge-228/deadmarshal/perl/ch-2.pl17
-rw-r--r--challenge-228/deadmarshal/raku/ch-1.raku13
-rw-r--r--challenge-228/deadmarshal/raku/ch-2.raku16
-rw-r--r--challenge-228/deadmarshal/ruby/ch1.rb12
-rw-r--r--challenge-228/deadmarshal/ruby/ch2.rb14
11 files changed, 148 insertions, 0 deletions
diff --git a/challenge-228/deadmarshal/blog.txt b/challenge-228/deadmarshal/blog.txt
new file mode 100644
index 0000000000..1aa770ca37
--- /dev/null
+++ b/challenge-228/deadmarshal/blog.txt
@@ -0,0 +1 @@
+https://deadmarshal.blogspot.com/2023/07/twc228.html
diff --git a/challenge-228/deadmarshal/cl/ch1.lisp b/challenge-228/deadmarshal/cl/ch1.lisp
new file mode 100644
index 0000000000..d3ab63c2f0
--- /dev/null
+++ b/challenge-228/deadmarshal/cl/ch1.lisp
@@ -0,0 +1,15 @@
+(defun unique-sum (list)
+ (flet ((get-keys (ht num)
+ (loop :for k :being :the :hash-keys :of ht
+ :when (= (gethash k ht) num)
+ :collect k)))
+ (let ((ht (make-hash-table :size (list-length list))))
+ (loop :for i :in list
+ :do (incf (gethash i ht 0)))
+ (apply #'+ (get-keys ht 1)))))
+
+(progn
+ (print (unique-sum '(2 1 3 2)))
+ (print (unique-sum '(1 1 1 1)))
+ (print (unique-sum '(2 1 3 4))))
+
diff --git a/challenge-228/deadmarshal/cl/ch2.lisp b/challenge-228/deadmarshal/cl/ch2.lisp
new file mode 100644
index 0000000000..7c75af8ca3
--- /dev/null
+++ b/challenge-228/deadmarshal/cl/ch2.lisp
@@ -0,0 +1,12 @@
+(defun empty-array (list count)
+ (if (null list)
+ count
+ (if (= (car list) (apply #'min list))
+ (empty-array (cdr list) (1+ count))
+ (empty-array (append (cdr list) (list (car list)))
+ (1+ count)))))
+
+(progn
+ (print (empty-array '(3 4 2) 0))
+ (print (empty-array '(1 2 3) 0)))
+
diff --git a/challenge-228/deadmarshal/lua/ch-1.lua b/challenge-228/deadmarshal/lua/ch-1.lua
new file mode 100644
index 0000000000..0de103fe4e
--- /dev/null
+++ b/challenge-228/deadmarshal/lua/ch-1.lua
@@ -0,0 +1,18 @@
+#!/usr/bin/env lua
+
+local function unique_sum(t)
+ local hash,sum = {},0
+ setmetatable(hash,{__index = function(t,k) return 0 end})
+ for i=1,#t do
+ hash[t[i]] = hash[t[i]] + 1
+ end
+ for k,v in pairs(hash) do
+ if v == 1 then sum = sum + k end
+ end
+ return sum
+end
+
+print(unique_sum({2,1,3,2}))
+print(unique_sum({1,1,1,1}))
+print(unique_sum({2,1,3,4}))
+
diff --git a/challenge-228/deadmarshal/lua/ch-2.lua b/challenge-228/deadmarshal/lua/ch-2.lua
new file mode 100644
index 0000000000..8f3245f208
--- /dev/null
+++ b/challenge-228/deadmarshal/lua/ch-2.lua
@@ -0,0 +1,15 @@
+#!/usr/bin/env lua
+
+local function empty_array(t)
+ local count = 0
+ while #t ~= 0 do
+ if t[1] == math.min(table.unpack(t)) then table.remove(t,1)
+ else table.insert(t,table.remove(t,1)) end
+ count = count + 1
+ end
+ return count
+end
+
+print(empty_array({3,4,2}))
+print(empty_array({1,2,3}))
+
diff --git a/challenge-228/deadmarshal/perl/ch-1.pl b/challenge-228/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..fe599e35a9
--- /dev/null
+++ b/challenge-228/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,15 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use List::Util qw(sum0);
+
+sub unique_sum{
+ my %hash;
+ $hash{$_}++ foreach(@{$_[0]});
+ sum0 grep{$hash{$_} == 1} keys %hash;
+}
+
+printf "%d\n", unique_sum([2,1,3,2]);
+printf "%d\n", unique_sum([1,1,1,1]);
+printf "%d\n", unique_sum([2,1,3,4]);
+
diff --git a/challenge-228/deadmarshal/perl/ch-2.pl b/challenge-228/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..1098233ec7
--- /dev/null
+++ b/challenge-228/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,17 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use List::Util qw(min);
+
+sub empty_array{
+ my ($count,$arr) = (0,@_);
+ while(@$arr){
+ $arr->[0] == min(@$arr) ? shift @$arr : push @$arr,shift @$arr;
+ $count++
+ }
+ $count
+}
+
+printf "%d\n", empty_array([3,4,2]);
+printf "%d\n", empty_array([1,2,3]);
+
diff --git a/challenge-228/deadmarshal/raku/ch-1.raku b/challenge-228/deadmarshal/raku/ch-1.raku
new file mode 100644
index 0000000000..b9dac8d01b
--- /dev/null
+++ b/challenge-228/deadmarshal/raku/ch-1.raku
@@ -0,0 +1,13 @@
+#!/usr/bin/env raku
+
+sub unique-sum(@arr)
+{
+ my %hash;
+ %hash{$_}++ for @arr;
+ %hash.keys.grep({%hash{$_} == 1}).sum
+}
+
+say unique-sum([2,1,3,2]);
+say unique-sum([1,1,1,1]);
+say unique-sum([2,1,3,4]);
+
diff --git a/challenge-228/deadmarshal/raku/ch-2.raku b/challenge-228/deadmarshal/raku/ch-2.raku
new file mode 100644
index 0000000000..62d71595e0
--- /dev/null
+++ b/challenge-228/deadmarshal/raku/ch-2.raku
@@ -0,0 +1,16 @@
+#!/usr/bin/env raku
+
+sub empty-array(@arr)
+{
+ my $count = 0;
+ while @arr
+ {
+ @arr[0] == @arr.min ?? @arr.shift !! @arr.push(@arr.shift);
+ $count++;
+ }
+ $count
+}
+
+say empty-array([3,4,2]);
+say empty-array([1,2,3]);
+
diff --git a/challenge-228/deadmarshal/ruby/ch1.rb b/challenge-228/deadmarshal/ruby/ch1.rb
new file mode 100644
index 0000000000..e16a4f31c3
--- /dev/null
+++ b/challenge-228/deadmarshal/ruby/ch1.rb
@@ -0,0 +1,12 @@
+#!/usr/bin/env ruby
+
+def unique_sum(arr)
+ hash = Hash.new(0)
+ arr.each {|n| hash[n] += 1}
+ hash.keys.select {|k| hash[k] == 1}.sum
+end
+
+puts unique_sum([2,1,3,2])
+puts unique_sum([1,1,1,1])
+puts unique_sum([2,1,3,4])
+
diff --git a/challenge-228/deadmarshal/ruby/ch2.rb b/challenge-228/deadmarshal/ruby/ch2.rb
new file mode 100644
index 0000000000..1c906e629d
--- /dev/null
+++ b/challenge-228/deadmarshal/ruby/ch2.rb
@@ -0,0 +1,14 @@
+#!/usr/bin/env ruby
+
+def empty_array(arr)
+ count = 0
+ while arr.length != 0
+ arr[0] == arr.min ? arr.shift : arr.push(arr.shift)
+ count += 1
+ end
+ count
+end
+
+puts empty_array([3,4,2])
+puts empty_array([1,2,3])
+