diff options
| author | 冯昶 <fengchang@novel-supertv.com> | 2023-11-20 15:40:49 +0800 |
|---|---|---|
| committer | 冯昶 <fengchang@novel-supertv.com> | 2023-11-20 15:40:49 +0800 |
| commit | 72dc5412e640e26601ffdebc4f0247db4c4bc7fe (patch) | |
| tree | d405aa98925dfed0b745e5ec331e9498005b1de7 /challenge-242 | |
| parent | 35d79358f3d12607da66ffefefed5e93c469d396 (diff) | |
| parent | fda51162ad0e1e8b4489fd2c73ef7dfdc8f0df5e (diff) | |
| download | perlweeklychallenge-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.txt | 1 | ||||
| -rwxr-xr-x | challenge-242/jaldhar-h-vyas/perl/ch-1.pl | 32 | ||||
| -rwxr-xr-x | challenge-242/jaldhar-h-vyas/perl/ch-2.pl | 8 | ||||
| -rwxr-xr-x | challenge-242/jaldhar-h-vyas/raku/ch-1.raku | 19 | ||||
| -rwxr-xr-x | challenge-242/jaldhar-h-vyas/raku/ch-2.raku | 10 | ||||
| -rw-r--r-- | challenge-242/paulo-custodio/forth/ch-1.fs | 127 | ||||
| -rw-r--r-- | challenge-242/sgreen/README.md | 3 |
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) |
