diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2025-07-31 10:25:49 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-31 10:25:49 +0100 |
| commit | 2676b9faf7f71bbf38ecbfefa9a8e0b714a742e3 (patch) | |
| tree | 75edd82dc75078346c78567326b61ef6ee2e7837 | |
| parent | 1ff2c9796a511d63231d3757acb27e4046a91fb2 (diff) | |
| parent | 4b7cf462c5ea159866becd61eb82ce9aa2f77320 (diff) | |
| download | perlweeklychallenge-club-2676b9faf7f71bbf38ecbfefa9a8e0b714a742e3.tar.gz perlweeklychallenge-club-2676b9faf7f71bbf38ecbfefa9a8e0b714a742e3.tar.bz2 perlweeklychallenge-club-2676b9faf7f71bbf38ecbfefa9a8e0b714a742e3.zip | |
Merge pull request #12443 from deadmarshal/TWC331
TWC331
| -rw-r--r-- | challenge-331/deadmarshal/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-331/deadmarshal/java/Ch1.java | 12 | ||||
| -rw-r--r-- | challenge-331/deadmarshal/java/Ch2.java | 27 | ||||
| -rw-r--r-- | challenge-331/deadmarshal/modula-3/Ch1/src/Ch1.m3 | 41 | ||||
| -rw-r--r-- | challenge-331/deadmarshal/modula-3/Ch1/src/m3makefile | 4 | ||||
| -rw-r--r-- | challenge-331/deadmarshal/modula-3/Ch2/src/Ch2.m3 | 32 | ||||
| -rw-r--r-- | challenge-331/deadmarshal/modula-3/Ch2/src/m3makefile | 4 | ||||
| -rw-r--r-- | challenge-331/deadmarshal/perl/ch-1.pl | 12 | ||||
| -rw-r--r-- | challenge-331/deadmarshal/perl/ch-2.pl | 19 |
9 files changed, 152 insertions, 0 deletions
diff --git a/challenge-331/deadmarshal/blog.txt b/challenge-331/deadmarshal/blog.txt new file mode 100644 index 0000000000..bdbd5a4be3 --- /dev/null +++ b/challenge-331/deadmarshal/blog.txt @@ -0,0 +1 @@ +https://deadmarshal.blogspot.com/2025/07/twc331.html diff --git a/challenge-331/deadmarshal/java/Ch1.java b/challenge-331/deadmarshal/java/Ch1.java new file mode 100644 index 0000000000..23d9fe58f7 --- /dev/null +++ b/challenge-331/deadmarshal/java/Ch1.java @@ -0,0 +1,12 @@ +public class Ch1 { + public static void main(String[] args) { + System.out.println(last_word("The Weekly Challenge")); + System.out.println(last_word(" Hello World ")); + System.out.println(last_word("Let's begin the fun")); + } + + private static int last_word(String s) { + String[] arr = s.trim().split(" "); + return arr[arr.length - 1].length(); + } +} diff --git a/challenge-331/deadmarshal/java/Ch2.java b/challenge-331/deadmarshal/java/Ch2.java new file mode 100644 index 0000000000..db7b5c136b --- /dev/null +++ b/challenge-331/deadmarshal/java/Ch2.java @@ -0,0 +1,27 @@ +public class Ch2 { + public static void main(String[] args) { + System.out.println(buddy_strings("fuck", "fcuk")); + System.out.println(buddy_strings("love", "love")); + System.out.println(buddy_strings("fodo", "food")); + System.out.println(buddy_strings("feed", "feed")); + } + + private static boolean buddy_strings(String s1, String s2) { + if (s1.length() != s2.length()) return false; + int diff = 0; + int[] count1 = new int[26]; + int[] count2 = new int[26]; + for (int i = 0; i < s1.length(); ++i) { + int a = s1.charAt(i), b = s2.charAt(i); + ++count1[a - 'a']; + ++count2[b - 'a']; + if (a != b) ++diff; + } + boolean f = false; + for (int i = 0; i < 26; ++i) { + if (count1[i] != count2[i]) return false; + if (count1[i] > 1) f = true; + } + return diff == 2 || (diff == 0 && f); + } +} diff --git a/challenge-331/deadmarshal/modula-3/Ch1/src/Ch1.m3 b/challenge-331/deadmarshal/modula-3/Ch1/src/Ch1.m3 new file mode 100644 index 0000000000..28b7e0c7dc --- /dev/null +++ b/challenge-331/deadmarshal/modula-3/Ch1/src/Ch1.m3 @@ -0,0 +1,41 @@ +MODULE Ch1 EXPORTS Main; + +IMPORT SIO,Text,TextConv,ASCII; + +PROCEDURE Trim(READONLY Str:TEXT):TEXT = + VAR + Start:CARDINAL := 0; + Stop:CARDINAL := Text.Length(Str); + C:CHAR; + BEGIN + WHILE Start < Stop DO + C := Text.GetChar(Str,Start); + IF NOT C IN ASCII.Spaces THEN EXIT END; + INC(Start) + END; + WHILE Start < Stop DO + C := Text.GetChar(Str,Stop-1); + IF NOT C IN ASCII.Spaces THEN EXIT END; + DEC(Stop) + END; + RETURN Text.Sub(Str,Start,Stop-Start) + END Trim; + +PROCEDURE LastWord(READONLY Str:TEXT):CARDINAL = + CONST + S = SET OF CHAR{' ', '\t', '\n', '\r', '\f'}; + VAR + Trimmed := Trim(Str); + Len := TextConv.ExplodedSize(Trimmed,S); + A := NEW(REF ARRAY OF TEXT,Len); + BEGIN + TextConv.Explode(Trimmed,A^,S); + RETURN Text.Length(A[LAST(A^)]) + END LastWord; + +BEGIN + SIO.PutInt(LastWord("The Weekly Challenge")); SIO.Nl(); + SIO.PutInt(LastWord(" Hello World ")); SIO.Nl(); + SIO.PutInt(LastWord("Let's begin the fun")); SIO.Nl() +END Ch1. + diff --git a/challenge-331/deadmarshal/modula-3/Ch1/src/m3makefile b/challenge-331/deadmarshal/modula-3/Ch1/src/m3makefile new file mode 100644 index 0000000000..643b33d043 --- /dev/null +++ b/challenge-331/deadmarshal/modula-3/Ch1/src/m3makefile @@ -0,0 +1,4 @@ +import("libm3") +import("libsio") +implementation("Ch1") +program("Ch1") diff --git a/challenge-331/deadmarshal/modula-3/Ch2/src/Ch2.m3 b/challenge-331/deadmarshal/modula-3/Ch2/src/Ch2.m3 new file mode 100644 index 0000000000..fe93af35e9 --- /dev/null +++ b/challenge-331/deadmarshal/modula-3/Ch2/src/Ch2.m3 @@ -0,0 +1,32 @@ +MODULE Ch2 EXPORTS Main; + +IMPORT SIO,Text; + +PROCEDURE BuddyStrings(READONLY S1,S2:TEXT):BOOLEAN = + VAR + Flag := FALSE; + Diff:CARDINAL := 0; + Count1,Count2 := ARRAY[0..25] OF CARDINAL{0,..}; + BEGIN + IF Text.Length(S1) # Text.Length(S2) THEN RETURN FALSE END; + FOR I := 0 TO Text.Length(S1)-1 DO + WITH A = Text.GetChar(S1,I),B = Text.GetChar(S2,I) DO + INC(Count1[ORD(A)-ORD('a')]); + INC(Count2[ORD(B)-ORD('a')]); + IF A # B THEN INC(Diff) END + END + END; + FOR I := FIRST(Count1) TO LAST(Count1) DO + IF Count1[I] # Count2[I] THEN RETURN FALSE END; + IF Count1[I] > 1 THEN Flag := TRUE END + END; + RETURN Diff = 2 OR Diff = 0 AND Flag + END BuddyStrings; + +BEGIN + SIO.PutBool(BuddyStrings("fuck","fcuk")); SIO.Nl(); + SIO.PutBool(BuddyStrings("love","love")); SIO.Nl(); + SIO.PutBool(BuddyStrings("fodo","food")); SIO.Nl(); + SIO.PutBool(BuddyStrings("feed","feed")); SIO.Nl() +END Ch2. + diff --git a/challenge-331/deadmarshal/modula-3/Ch2/src/m3makefile b/challenge-331/deadmarshal/modula-3/Ch2/src/m3makefile new file mode 100644 index 0000000000..78802242fe --- /dev/null +++ b/challenge-331/deadmarshal/modula-3/Ch2/src/m3makefile @@ -0,0 +1,4 @@ +import("libm3") +import("libsio") +implementation("Ch2") +program("Ch2") diff --git a/challenge-331/deadmarshal/perl/ch-1.pl b/challenge-331/deadmarshal/perl/ch-1.pl new file mode 100644 index 0000000000..f6fccc6c15 --- /dev/null +++ b/challenge-331/deadmarshal/perl/ch-1.pl @@ -0,0 +1,12 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +sub last_word{ + length((split /\s/,$_[0])[-1]) +} + +printf "%d\n",last_word('The Weekly Challenge'); +printf "%d\n",last_word(' Hello World '); +printf "%d\n",last_word('Let\'s begin the fun'); + diff --git a/challenge-331/deadmarshal/perl/ch-2.pl b/challenge-331/deadmarshal/perl/ch-2.pl new file mode 100644 index 0000000000..0ffc9903cc --- /dev/null +++ b/challenge-331/deadmarshal/perl/ch-2.pl @@ -0,0 +1,19 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use List::MoreUtils qw(uniq pairwise); + +sub buddy_strings{ + return 0 if length($_[0]) != length($_[1]); + my @s1 = split '',$_[0]; + return 1 if $_[0] eq $_[1] and @s1 > uniq(@s1); + my @s2 = split '',$_[1]; + return 0 if (join('',sort @s1) ne join('',sort @s2)); + (grep{$_ != 0} (pairwise{$a cmp $b} @s1,@s2)) == 2 +} + +printf "%d\n",buddy_strings('fuck','fcuk'); +printf "%d\n",buddy_strings('love','love'); +printf "%d\n",buddy_strings('fodo','food'); +printf "%d\n",buddy_strings('feed','feed'); + |
