aboutsummaryrefslogtreecommitdiff
path: root/challenge-224/barroff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2023-07-09 22:18:00 +0100
committerGitHub <noreply@github.com>2023-07-09 22:18:00 +0100
commit6fdcae0fc9efa65c474e88b60a2bf87992f4208f (patch)
treebf8c151dce756660515cf7bb381a5b90470cd17e /challenge-224/barroff
parentbb56db19a6d825b862aecbd16012f52eb017fc4f (diff)
parent5870b6c9e481c29080777214deca8a79833609f6 (diff)
downloadperlweeklychallenge-club-6fdcae0fc9efa65c474e88b60a2bf87992f4208f.tar.gz
perlweeklychallenge-club-6fdcae0fc9efa65c474e88b60a2bf87992f4208f.tar.bz2
perlweeklychallenge-club-6fdcae0fc9efa65c474e88b60a2bf87992f4208f.zip
Merge pull request #8342 from BarrOff/barroff-224
feat: add solutions for challenge 224 from BarrOff
Diffstat (limited to 'challenge-224/barroff')
-rw-r--r--challenge-224/barroff/awk/ch-1.awk36
-rw-r--r--challenge-224/barroff/perl/ch-1.pl40
-rw-r--r--challenge-224/barroff/raku/ch-1.raku23
3 files changed, 99 insertions, 0 deletions
diff --git a/challenge-224/barroff/awk/ch-1.awk b/challenge-224/barroff/awk/ch-1.awk
new file mode 100644
index 0000000000..04a2ebcd4c
--- /dev/null
+++ b/challenge-224/barroff/awk/ch-1.awk
@@ -0,0 +1,36 @@
+#!/usr/bin/env awk
+
+function special_notes(source, target) {
+ split(source, source_split, //);
+ split(target, target_split, //);
+ for (i in source_split) {
+ source_dict[source_split[i]]++;
+ }
+ for (i in target_split) {
+ target_dict[target_split[i]]++;
+ }
+ for (i in target_dict) {
+ if (source_dict[i] < target_dict[i]) {
+ delete source_split;
+ delete source_dict;
+ delete target_split;
+ delete target_dict;
+ return 0;
+ }
+ }
+ return 1;
+}
+
+function works_for(source, target, success) {
+ if (success) {
+ print "Works for source = " source ", and target = " target;
+ } else {
+ print "Does not work for source = " source ", and target = " target;
+ }
+}
+
+END {
+ works_for("abc", "xyz", !special_notes("abc", "xyz"));
+ works_for("scriptinglanguage", "perl", special_notes("scriptinglanguage", "perl"));
+ works_for("aabbcc", "abc", special_notes("aabbcc", "abc"));
+}
diff --git a/challenge-224/barroff/perl/ch-1.pl b/challenge-224/barroff/perl/ch-1.pl
new file mode 100644
index 0000000000..41997891b6
--- /dev/null
+++ b/challenge-224/barroff/perl/ch-1.pl
@@ -0,0 +1,40 @@
+#!/usr/bin/env perl
+
+use v5.36;
+
+sub create_bag (@source_array) {
+ my %bag;
+ for my $element (@source_array) {
+ $bag{$element}++;
+ }
+ return %bag;
+}
+
+sub special_notes ( $source, $target ) {
+ my %source_bag = create_bag( split( //, $source ) );
+ my %target_bag = create_bag( split( //, $target ) );
+ foreach my $key ( keys %target_bag ) {
+ return undef
+ unless defined( $source_bag{$key} )
+ and $source_bag{$key} >= $target_bag{$key};
+ }
+ return 1;
+}
+
+#| Run test cases
+sub MAIN() {
+ if ( @ARGV == 2 ) {
+ say special_notes( $ARGV[0], $ARGV[1] ) ? 'true' : 'false';
+ }
+ else {
+ use Test2::V0 qw( is plan );
+ plan 3;
+
+ is special_notes( 'abc', 'xyz' ), undef, 'works for ("abc", "xyz")';
+ is special_notes( 'scriptinglanguage', 'perl' ), 1,
+ 'works for ("scriptinglanguage", "perl")';
+ is special_notes( 'aabbcc', 'abc' ), 1, 'works for ("aabbcc", "abc")';
+ }
+}
+
+MAIN();
diff --git a/challenge-224/barroff/raku/ch-1.raku b/challenge-224/barroff/raku/ch-1.raku
new file mode 100644
index 0000000000..93f4386085
--- /dev/null
+++ b/challenge-224/barroff/raku/ch-1.raku
@@ -0,0 +1,23 @@
+#!/usr/bin/env raku
+
+use v6.d;
+
+sub special-notes(Str:D $source, Str:D $target --> Bool) {
+ $target.comb.Bag ⊆ $source.comb.Bag;
+}
+
+#| Run test cases
+multi sub MAIN('test') {
+ use Test;
+ plan 3;
+
+ is special-notes('abc', 'xyz'), False, 'works for ("abc", "xyz")';
+ is special-notes('scriptinglanguage', 'perl'), True, 'works for ("scriptinglanguage", "perl")';
+ is special-notes('aabbcc', 'abc'), True, 'works for ("aabbcc", "abc")';
+}
+
+#| Take user provided list like 1 17 8
+multi sub MAIN(Str:D $source, Str:D $target) {
+ say special-notes($source, $target);
+}
+