aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-03-24 16:08:54 +0000
committerGitHub <noreply@github.com>2024-03-24 16:08:54 +0000
commit2af2b576294572185b408bd7a4a4a24d3e44fcff (patch)
treecec7333a490ecfd314042729a8b1ed20f6071180
parent1146c5db7e0815f3ca672c4afe36a0f542ea02a1 (diff)
parentc67b2bd9a1238ab15a9e03615348079be50834e1 (diff)
downloadperlweeklychallenge-club-2af2b576294572185b408bd7a4a4a24d3e44fcff.tar.gz
perlweeklychallenge-club-2af2b576294572185b408bd7a4a4a24d3e44fcff.tar.bz2
perlweeklychallenge-club-2af2b576294572185b408bd7a4a4a24d3e44fcff.zip
Merge pull request #9798 from deadmarshal/TWC261
TWC261
-rw-r--r--challenge-261/deadmarshal/perl/ch-1.pl14
-rw-r--r--challenge-261/deadmarshal/perl/ch-2.pl15
-rw-r--r--challenge-261/deadmarshal/scheme/ch1.scm23
-rw-r--r--challenge-261/deadmarshal/scheme/ch2.scm10
-rw-r--r--challenge-261/deadmarshal/sml/ch1.sml26
-rw-r--r--challenge-261/deadmarshal/sml/ch2.sml10
6 files changed, 98 insertions, 0 deletions
diff --git a/challenge-261/deadmarshal/perl/ch-1.pl b/challenge-261/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..275ce98000
--- /dev/null
+++ b/challenge-261/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,14 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use List::Util qw(sum0);
+
+sub element_digit_sum{
+ abs(sum0(map{split ''}@{$_[0]}) - sum0(@{$_[0]}))
+}
+
+printf "%d\n",element_digit_sum([1,2,3,45]);
+printf "%d\n",element_digit_sum([1,12,3]);
+printf "%d\n",element_digit_sum([1,2,3,4]);
+printf "%d\n",element_digit_sum([236,416,336,350]);
+
diff --git a/challenge-261/deadmarshal/perl/ch-2.pl b/challenge-261/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..2c3917bda1
--- /dev/null
+++ b/challenge-261/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,15 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use List::MoreUtils qw(firstidx);
+
+sub multiply_by_two{
+ my ($arr,$start) = @_;
+ $start *= 2 while((firstidx{$start == $_}@$arr)!=-1);
+ $start
+}
+
+printf "%d\n",multiply_by_two([5,3,6,1,12],3);
+printf "%d\n",multiply_by_two([1,2,4,3],1);
+printf "%d\n",multiply_by_two([5,6,7],2);
+
diff --git a/challenge-261/deadmarshal/scheme/ch1.scm b/challenge-261/deadmarshal/scheme/ch1.scm
new file mode 100644
index 0000000000..b2821c616d
--- /dev/null
+++ b/challenge-261/deadmarshal/scheme/ch1.scm
@@ -0,0 +1,23 @@
+(define (number->list num)
+ (let loop ((num num)
+ (acc '()))
+ (if (< num 10)
+ (cons num acc)
+ (loop (quotient num 10)
+ (cons (remainder num 10) acc)))))
+
+(define (flatten xs)
+ (cond ((null? xs) '())
+ ((pair? xs) (append (flatten (car xs)) (flatten (cdr xs))))
+ (else (list xs))))
+
+(define (element-digit-sum list)
+ (abs (- (apply + (flatten (map number->list list)))
+ (apply + list))))
+
+(begin
+ (display (element-digit-sum '(1 2 3 45))) (newline)
+ (display (element-digit-sum '(1 12 3))) (newline)
+ (display (element-digit-sum '(1 2 3 4))) (newline)
+ (display (element-digit-sum '(236 416 336 350))) (newline))
+
diff --git a/challenge-261/deadmarshal/scheme/ch2.scm b/challenge-261/deadmarshal/scheme/ch2.scm
new file mode 100644
index 0000000000..c864be8009
--- /dev/null
+++ b/challenge-261/deadmarshal/scheme/ch2.scm
@@ -0,0 +1,10 @@
+(define (multiply-by-two list start)
+ (if (member start list)
+ (multiply-by-two list (* start 2))
+ start))
+
+(begin
+ (display (multiply-by-two '(5 3 6 1 12) 3)) (newline)
+ (display (multiply-by-two '(1 2 4 3) 1)) (newline)
+ (display (multiply-by-two '(5 6 7) 2)) (newline))
+
diff --git a/challenge-261/deadmarshal/sml/ch1.sml b/challenge-261/deadmarshal/sml/ch1.sml
new file mode 100644
index 0000000000..008daf234c
--- /dev/null
+++ b/challenge-261/deadmarshal/sml/ch1.sml
@@ -0,0 +1,26 @@
+fun element_digit_sum list =
+ let fun flatten list =
+ let fun aux acc list =
+ case list of
+ [] => acc
+ | []::t => aux acc t
+ | (x::y)::t => aux (x::acc) (y::t)
+ in
+ List.rev (aux [] list)
+ end
+ fun number_to_list n =
+ List.map(fn s => valOf(Int.fromString s))
+ (List.map(fn d => str d)
+ ((String.explode o Int.toString) n))
+ val nums = List.map number_to_list list
+ val flats = flatten nums
+ in
+ abs((List.foldr op+ 0 flats) - (List.foldr op+ 0 list))
+ end
+
+val _ =
+ print(Int.toString(element_digit_sum [1,2,3,45]) ^ "\n");
+ print(Int.toString(element_digit_sum [1,12,3]) ^ "\n");
+ print(Int.toString(element_digit_sum [1,2,3,4]) ^ "\n");
+ print(Int.toString(element_digit_sum [236,416,336,350]) ^ "\n");
+
diff --git a/challenge-261/deadmarshal/sml/ch2.sml b/challenge-261/deadmarshal/sml/ch2.sml
new file mode 100644
index 0000000000..9cf21ae120
--- /dev/null
+++ b/challenge-261/deadmarshal/sml/ch2.sml
@@ -0,0 +1,10 @@
+fun multiply_by_two list start =
+ if List.exists(fn x => x = start) list
+ then multiply_by_two list (start * 2)
+ else start
+
+val _ =
+ print(Int.toString(multiply_by_two [5,3,6,1,12] 3) ^ "\n");
+ print(Int.toString(multiply_by_two [1,2,3,4] 1) ^ "\n");
+ print(Int.toString(multiply_by_two [5,6,7] 2) ^ "\n");
+