aboutsummaryrefslogtreecommitdiff
path: root/challenge-242
diff options
context:
space:
mode:
author冯昶 <fengchang@novel-supertv.com>2023-11-20 15:40:49 +0800
committer冯昶 <fengchang@novel-supertv.com>2023-11-20 15:40:49 +0800
commit72dc5412e640e26601ffdebc4f0247db4c4bc7fe (patch)
treed405aa98925dfed0b745e5ec331e9498005b1de7 /challenge-242
parent35d79358f3d12607da66ffefefed5e93c469d396 (diff)
parentfda51162ad0e1e8b4489fd2c73ef7dfdc8f0df5e (diff)
downloadperlweeklychallenge-club-72dc5412e640e26601ffdebc4f0247db4c4bc7fe.tar.gz
perlweeklychallenge-club-72dc5412e640e26601ffdebc4f0247db4c4bc7fe.tar.bz2
perlweeklychallenge-club-72dc5412e640e26601ffdebc4f0247db4c4bc7fe.zip
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-242')
-rw-r--r--challenge-242/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-242/jaldhar-h-vyas/perl/ch-1.pl32
-rwxr-xr-xchallenge-242/jaldhar-h-vyas/perl/ch-2.pl8
-rwxr-xr-xchallenge-242/jaldhar-h-vyas/raku/ch-1.raku19
-rwxr-xr-xchallenge-242/jaldhar-h-vyas/raku/ch-2.raku10
-rw-r--r--challenge-242/paulo-custodio/forth/ch-1.fs127
-rw-r--r--challenge-242/sgreen/README.md3
7 files changed, 197 insertions, 3 deletions
diff --git a/challenge-242/jaldhar-h-vyas/blog.txt b/challenge-242/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..bad309f0c4
--- /dev/null
+++ b/challenge-242/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2023/11/perl_weekly_challenge_week_242.html
diff --git a/challenge-242/jaldhar-h-vyas/perl/ch-1.pl b/challenge-242/jaldhar-h-vyas/perl/ch-1.pl
new file mode 100755
index 0000000000..150b04ab72
--- /dev/null
+++ b/challenge-242/jaldhar-h-vyas/perl/ch-1.pl
@@ -0,0 +1,32 @@
+#!/usr/bin/perl
+use warnings;
+use 5.030;
+
+sub setDifference {
+ my ($arr1, $arr2) = @_;
+ my %difference = map { $_ => 0 } @{$arr1};
+
+ for my $elem (@{$arr2}) {
+ if (exists $difference{$elem}) {
+ $difference{$elem}++;
+ }
+ }
+
+ return sort grep { !$difference{$_} } keys %difference;
+}
+
+
+my ($arg1, $arg2) = @ARGV;
+
+my @arr1 = split q{ }, $arg1;
+my @arr2 = split q{ }, $arg2;
+
+say q{(},
+ (
+ join q{, }, map { q{[} . ( join q{, }, $_ ) . q{]} } grep { length $_ }
+ (
+ ( join q{, }, setDifference(\@arr1, \@arr2) ),
+ ( join q{, }, setDifference(\@arr2, \@arr1) ),
+ )
+ ),
+q{)};
diff --git a/challenge-242/jaldhar-h-vyas/perl/ch-2.pl b/challenge-242/jaldhar-h-vyas/perl/ch-2.pl
new file mode 100755
index 0000000000..1f58321076
--- /dev/null
+++ b/challenge-242/jaldhar-h-vyas/perl/ch-2.pl
@@ -0,0 +1,8 @@
+#!/usr/bin/perl
+use 5.020;
+use warnings;
+
+my @matrix;
+push @matrix, map { [split q{ }, $_] } @ARGV;
+@matrix = map { [ map { $_ ^ 1 } reverse @{$_} ] } @matrix;
+say q{(} . (join q{, }, map { q{[} . (join q{, }, @{$_}) . q{]} } @matrix) . q{)};
diff --git a/challenge-242/jaldhar-h-vyas/raku/ch-1.raku b/challenge-242/jaldhar-h-vyas/raku/ch-1.raku
new file mode 100755
index 0000000000..d81763d855
--- /dev/null
+++ b/challenge-242/jaldhar-h-vyas/raku/ch-1.raku
@@ -0,0 +1,19 @@
+#!/usr/bin/raku
+
+sub MAIN(
+ Str $arg1,
+ Str $arg2
+){
+ my @arr1 = $arg1.split(q{ });
+ my @arr2 = $arg2.split(q{ });
+
+ say q{(},
+ (
+ (@arr1 ∖ @arr2).keys.sort.join(q{, }),
+ (@arr2 ∖ @arr1).keys.sort.join(q{, })
+ )
+ .grep({ .chars })
+ .map({ q{[} ~ $_.join(q{, }) ~ q{]} })
+ .join(q{, }),
+ q{)};
+} \ No newline at end of file
diff --git a/challenge-242/jaldhar-h-vyas/raku/ch-2.raku b/challenge-242/jaldhar-h-vyas/raku/ch-2.raku
new file mode 100755
index 0000000000..6f45993014
--- /dev/null
+++ b/challenge-242/jaldhar-h-vyas/raku/ch-2.raku
@@ -0,0 +1,10 @@
+#!/usr/bin/raku
+
+sub MAIN(
+ *@args
+) {
+ my @matrix;
+ @matrix.push(| @args.map({ $_.split(q{ }).map({ $_.Int }) }) );
+ @matrix = @matrix.map({ $_.reverse.map({ (!$_).Int }) });
+ say q{(} ~ @matrix.map({ q{[} ~ $_.join(q{, }) ~ q{]} }).join(q{, }) ~ q{)};
+} \ No newline at end of file
diff --git a/challenge-242/paulo-custodio/forth/ch-1.fs b/challenge-242/paulo-custodio/forth/ch-1.fs
new file mode 100644
index 0000000000..6de8f3a904
--- /dev/null
+++ b/challenge-242/paulo-custodio/forth/ch-1.fs
@@ -0,0 +1,127 @@
+#! /usr/bin/env gforth
+
+\ Challenge 242
+\
+\ Task 1: Missing Members
+\ Submitted by: Mohammad S Anwar
+\ You are given two arrays of integers.
+\
+\ Write a script to find out the missing members in each other arrays.
+\
+\ Example 1
+\ Input: @arr1 = (1, 2, 3)
+\ @arr2 = (2, 4, 6)
+\ Output: ([1, 3], [4, 6])
+\
+\ (1, 2, 3) has 2 members (1, 3) missing in the array (2, 4, 6).
+\ (2, 4, 6) has 2 members (4, 6) missing in the array (1, 2, 3).
+\ Example 2
+\ Input: @arr1 = (1, 2, 3, 3)
+\ @arr2 = (1, 1, 2, 2)
+\ Output: ([3])
+\
+\ (1, 2, 3, 3) has 2 members (3, 3) missing in the array (1, 1, 2, 2). Since they are same, keep just one.
+\ (1, 1, 2, 2) has 0 member missing in the array (1, 2, 3, 3).
+
+CREATE arr1 256 CELLS ALLOT
+CREATE arr2 256 CELLS ALLOT
+
+: array_size ( arr-addr -- size-addr ) ;
+: array[] ( arr-addr i -- elem-addr ) 1+ CELLS + ;
+
+: array_push_back ( arr-addr n -- )
+ { arr n }
+ arr array_size @ ( size )
+ arr SWAP array[] ( elem-addr )
+ n SWAP !
+ arr array_size 1 SWAP +!
+;
+
+: array_find ( arr-addr n -- f )
+ { arr n }
+ FALSE { found }
+ arr array_size @ 0 ?DO
+ arr I array[] @ n = IF TRUE TO found LEAVE THEN
+ LOOP
+ found
+;
+
+: array_push_back_if_new ( arr-add n -- )
+ { arr n }
+ arr n array_find 0= IF
+ arr n array_push_back
+ THEN
+;
+
+: is_digit ( c -- f )
+ DUP '0' >= SWAP '9' <= AND
+;
+
+: starts_with_digit ( addr len -- f )
+ 0 > SWAP C@ is_digit AND
+;
+
+: skip_non_digits ( addr len -- addr len )
+ BEGIN DUP WHILE
+ 2DUP starts_with_digit IF EXIT THEN
+ 1 /STRING
+ REPEAT
+;
+
+: parse_number ( addr len -- addr len number t | addr len f )
+ 0 { num }
+ skip_non_digits
+ 2DUP starts_with_digit IF
+ BEGIN 2DUP starts_with_digit WHILE
+ OVER C@ '0' - num BASE * + TO num
+ 1 /STRING
+ REPEAT
+ num TRUE
+ ELSE
+ FALSE
+ THEN
+;
+
+: array_parse_nums ( arr-add str-addr size -- )
+ { arr str len }
+ BEGIN str len parse_number WHILE
+ arr SWAP array_push_back_if_new
+ TO len TO str
+ REPEAT
+ 2DROP
+;
+
+: collect_args ( -- )
+ arr1 NEXT-ARG array_parse_nums
+ arr2 NEXT-ARG array_parse_nums
+;
+
+: print_missing ( arr1 arr2 is-first -- )
+ { arr1 arr2 is-first }
+ FALSE { found }
+ arr1 array_size @ 0 ?DO
+ arr1 I array[] @
+ arr2 SWAP array_find 0= IF
+ found 0= IF
+ is-first 0= IF ." , " THEN
+ ." ["
+ ELSE
+ ." , "
+ THEN
+ TRUE TO found
+ arr1 I array[] @ .
+ THEN
+ LOOP
+ found IF ." ]" THEN
+;
+
+: output ( -- )
+ ." ("
+ arr1 arr2 TRUE print_missing
+ arr2 arr1 FALSE print_missing
+ ." )" CR
+;
+
+collect_args
+output
+BYE
diff --git a/challenge-242/sgreen/README.md b/challenge-242/sgreen/README.md
deleted file mode 100644
index fbeb2f577f..0000000000
--- a/challenge-242/sgreen/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# The Weekly Challenge 241
-
-Blog: [Triplets and Sorting](https://dev.to/simongreennet/similar-frequency-3i6b)