diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-03-24 16:08:54 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-24 16:08:54 +0000 |
| commit | 2af2b576294572185b408bd7a4a4a24d3e44fcff (patch) | |
| tree | cec7333a490ecfd314042729a8b1ed20f6071180 | |
| parent | 1146c5db7e0815f3ca672c4afe36a0f542ea02a1 (diff) | |
| parent | c67b2bd9a1238ab15a9e03615348079be50834e1 (diff) | |
| download | perlweeklychallenge-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.pl | 14 | ||||
| -rw-r--r-- | challenge-261/deadmarshal/perl/ch-2.pl | 15 | ||||
| -rw-r--r-- | challenge-261/deadmarshal/scheme/ch1.scm | 23 | ||||
| -rw-r--r-- | challenge-261/deadmarshal/scheme/ch2.scm | 10 | ||||
| -rw-r--r-- | challenge-261/deadmarshal/sml/ch1.sml | 26 | ||||
| -rw-r--r-- | challenge-261/deadmarshal/sml/ch2.sml | 10 |
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"); + |
