diff options
| -rw-r--r-- | challenge-228/deadmarshal/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-228/deadmarshal/cl/ch1.lisp | 15 | ||||
| -rw-r--r-- | challenge-228/deadmarshal/cl/ch2.lisp | 12 | ||||
| -rw-r--r-- | challenge-228/deadmarshal/lua/ch-1.lua | 18 | ||||
| -rw-r--r-- | challenge-228/deadmarshal/lua/ch-2.lua | 15 | ||||
| -rw-r--r-- | challenge-228/deadmarshal/perl/ch-1.pl | 15 | ||||
| -rw-r--r-- | challenge-228/deadmarshal/perl/ch-2.pl | 17 | ||||
| -rw-r--r-- | challenge-228/deadmarshal/raku/ch-1.raku | 13 | ||||
| -rw-r--r-- | challenge-228/deadmarshal/raku/ch-2.raku | 16 | ||||
| -rw-r--r-- | challenge-228/deadmarshal/ruby/ch1.rb | 12 | ||||
| -rw-r--r-- | challenge-228/deadmarshal/ruby/ch2.rb | 14 |
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]) + |
