aboutsummaryrefslogtreecommitdiff
path: root/challenge-282
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-08-13 10:39:15 +0100
committerGitHub <noreply@github.com>2024-08-13 10:39:15 +0100
commitf30ff0160fc6118f3736ac5d394f54a4dbac272f (patch)
tree2cf5d30342f1ee6db1cc339f5cf079fe8aba1958 /challenge-282
parent5a12366a5c33f1f8f5b3740d7ab5acd9e7a9a879 (diff)
parent1ed5f4218d591921274087ec0feeb402e91201d4 (diff)
downloadperlweeklychallenge-club-f30ff0160fc6118f3736ac5d394f54a4dbac272f.tar.gz
perlweeklychallenge-club-f30ff0160fc6118f3736ac5d394f54a4dbac272f.tar.bz2
perlweeklychallenge-club-f30ff0160fc6118f3736ac5d394f54a4dbac272f.zip
Merge pull request #10605 from deadmarshal/TWC282
TWC282
Diffstat (limited to 'challenge-282')
-rw-r--r--challenge-282/deadmarshal/blog.txt1
-rw-r--r--challenge-282/deadmarshal/cpp/ch-1.cpp28
-rw-r--r--challenge-282/deadmarshal/cpp/ch-2.cpp20
-rw-r--r--challenge-282/deadmarshal/java/Ch1.java22
-rw-r--r--challenge-282/deadmarshal/java/Ch2.java15
-rw-r--r--challenge-282/deadmarshal/modula-3/ch1/src/Ch1.m330
-rw-r--r--challenge-282/deadmarshal/modula-3/ch1/src/m3makefile5
-rw-r--r--challenge-282/deadmarshal/modula-3/ch2/src/Ch2.m322
-rw-r--r--challenge-282/deadmarshal/modula-3/ch2/src/m3makefile5
-rw-r--r--challenge-282/deadmarshal/perl/ch-1.pl12
-rw-r--r--challenge-282/deadmarshal/perl/ch-2.pl16
11 files changed, 176 insertions, 0 deletions
diff --git a/challenge-282/deadmarshal/blog.txt b/challenge-282/deadmarshal/blog.txt
new file mode 100644
index 0000000000..40e0ca65c2
--- /dev/null
+++ b/challenge-282/deadmarshal/blog.txt
@@ -0,0 +1 @@
+https://deadmarshal.blogspot.com/2024/08/twc282.html
diff --git a/challenge-282/deadmarshal/cpp/ch-1.cpp b/challenge-282/deadmarshal/cpp/ch-1.cpp
new file mode 100644
index 0000000000..70b7c1737f
--- /dev/null
+++ b/challenge-282/deadmarshal/cpp/ch-1.cpp
@@ -0,0 +1,28 @@
+#include<iostream>
+#include<string>
+
+template<typename T>
+std::string good_integer(T n)
+{
+ std::string str = std::to_string(n);
+ char prev = '\0';
+ std::size_t seen{};
+ for(std::size_t i = 0; i < str.size(); ++i){
+ if(prev == str[i]) seen++;
+ else if(seen == 3) return std::string(3,prev);
+ else {
+ prev = str[i];
+ seen = 1;
+ }
+ }
+ return "-1";
+}
+
+int main()
+{
+ std::cout << good_integer<int>(12344456) << '\n'
+ << good_integer<int>(1233334) << '\n'
+ << good_integer<int>(10020003) << '\n';
+ return 0;
+}
+
diff --git a/challenge-282/deadmarshal/cpp/ch-2.cpp b/challenge-282/deadmarshal/cpp/ch-2.cpp
new file mode 100644
index 0000000000..286b8d2dfc
--- /dev/null
+++ b/challenge-282/deadmarshal/cpp/ch-2.cpp
@@ -0,0 +1,20 @@
+#include<iostream>
+#include<string>
+#include<cctype>
+
+std::size_t changing_keys(const std::string &str)
+{
+ std::size_t count{};
+ for(std::size_t i = 1; i < str.size(); ++i)
+ if(tolower(str[i]) != tolower(str[i-1])) count++;
+ return count;
+}
+
+int main()
+{
+ std::cout << changing_keys("pPeERrLl") << '\n'
+ << changing_keys("rRr") << '\n'
+ << changing_keys("GoO") << '\n';
+ return 0;
+}
+
diff --git a/challenge-282/deadmarshal/java/Ch1.java b/challenge-282/deadmarshal/java/Ch1.java
new file mode 100644
index 0000000000..6267b38b6f
--- /dev/null
+++ b/challenge-282/deadmarshal/java/Ch1.java
@@ -0,0 +1,22 @@
+public class Ch1 {
+ public static void main(String[] args) {
+ System.out.println(good_integer(12344456));
+ System.out.println(good_integer(1233334));
+ System.out.println(good_integer(10020003));
+ }
+
+ private static String good_integer(int digit) {
+ String s = String.valueOf(digit);
+ char prev = Character.MIN_VALUE;
+ int seen = 0;
+ for (int i = 0; i < s.length(); ++i) {
+ if (prev == s.charAt(i)) seen++;
+ else if(seen == 3) return String.valueOf(prev).repeat(3);
+ else {
+ prev = s.charAt(i);
+ seen = 1;
+ }
+ }
+ return "-1";
+ }
+}
diff --git a/challenge-282/deadmarshal/java/Ch2.java b/challenge-282/deadmarshal/java/Ch2.java
new file mode 100644
index 0000000000..efb29739bc
--- /dev/null
+++ b/challenge-282/deadmarshal/java/Ch2.java
@@ -0,0 +1,15 @@
+public class Ch2 {
+ public static void main(String[] args) {
+ System.out.println(changing_keys("pPeERrLl"));
+ System.out.println(changing_keys("rRr"));
+ System.out.println(changing_keys("GoO"));
+ }
+
+ private static int changing_keys(String s) {
+ int c = 0;
+ for (int i = 1; i < s.length(); ++i)
+ if (Character.toLowerCase(s.charAt(i)) != Character.toLowerCase(
+ s.charAt(i - 1))) c++;
+ return c;
+ }
+}
diff --git a/challenge-282/deadmarshal/modula-3/ch1/src/Ch1.m3 b/challenge-282/deadmarshal/modula-3/ch1/src/Ch1.m3
new file mode 100644
index 0000000000..b2fe12a250
--- /dev/null
+++ b/challenge-282/deadmarshal/modula-3/ch1/src/Ch1.m3
@@ -0,0 +1,30 @@
+MODULE Ch1 EXPORTS Main;
+
+IMPORT SIO,Text,Fmt;
+
+PROCEDURE GoodInteger(N:INTEGER):TEXT =
+ VAR
+ Str:TEXT := Fmt.Int(N);
+ Prev:CHAR := '\000';
+ Seen:CARDINAL := 0;
+ BEGIN
+ FOR I := 0 TO Text.Length(Str)-1 DO
+ IF Prev = Text.GetChar(Str,I) THEN INC(Seen)
+ ELSIF Seen = 3 THEN
+ WITH C = Text.FromChar(Prev) DO
+ RETURN C & C & C
+ END;
+ ELSE
+ Prev := Text.GetChar(Str,I);
+ Seen := 1
+ END;
+ END;
+ RETURN "-1";
+ END GoodInteger;
+
+BEGIN
+ SIO.PutText(GoodInteger(12344456) & "\n");
+ SIO.PutText(GoodInteger(1233334) & "\n");
+ SIO.PutText(GoodInteger(10020003) & "\n")
+END Ch1.
+
diff --git a/challenge-282/deadmarshal/modula-3/ch1/src/m3makefile b/challenge-282/deadmarshal/modula-3/ch1/src/m3makefile
new file mode 100644
index 0000000000..9f66e4a51f
--- /dev/null
+++ b/challenge-282/deadmarshal/modula-3/ch1/src/m3makefile
@@ -0,0 +1,5 @@
+import("libm3")
+import("libsio")
+implementation("Ch1")
+program("ch1")
+
diff --git a/challenge-282/deadmarshal/modula-3/ch2/src/Ch2.m3 b/challenge-282/deadmarshal/modula-3/ch2/src/Ch2.m3
new file mode 100644
index 0000000000..436b87e4bb
--- /dev/null
+++ b/challenge-282/deadmarshal/modula-3/ch2/src/Ch2.m3
@@ -0,0 +1,22 @@
+MODULE Ch2 EXPORTS Main;
+
+IMPORT SIO,Text,ASCII;
+
+PROCEDURE ChangingKeys(READONLY Str:TEXT):CARDINAL =
+ VAR C:CARDINAL := 0;
+ BEGIN
+ FOR I := 1 TO Text.Length(Str)-1 DO
+ IF ASCII.Lower[Text.GetChar(Str,I)] #
+ ASCII.Lower[Text.GetChar(Str,I-1)] THEN
+ INC(C)
+ END
+ END;
+ RETURN C
+ END ChangingKeys;
+
+BEGIN
+ SIO.PutInt(ChangingKeys("pPeERrLl")); SIO.Nl();
+ SIO.PutInt(ChangingKeys("rRr")); SIO.Nl();
+ SIO.PutInt(ChangingKeys("GoO")); SIO.Nl()
+END Ch2.
+
diff --git a/challenge-282/deadmarshal/modula-3/ch2/src/m3makefile b/challenge-282/deadmarshal/modula-3/ch2/src/m3makefile
new file mode 100644
index 0000000000..798c627ef3
--- /dev/null
+++ b/challenge-282/deadmarshal/modula-3/ch2/src/m3makefile
@@ -0,0 +1,5 @@
+import("libm3")
+import("libsio")
+implementation("Ch2")
+program("ch2")
+
diff --git a/challenge-282/deadmarshal/perl/ch-1.pl b/challenge-282/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..25bcf23a62
--- /dev/null
+++ b/challenge-282/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,12 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+sub good_integer {
+ $_[0] =~ /(\d)\1{2}(\1)?/ ? ($2 ? -1 : $1 x 3) : ()
+}
+
+print good_integer(12344456),"\n";
+print good_integer(1233334),"\n";
+print good_integer(10020003),"\n";
+
diff --git a/challenge-282/deadmarshal/perl/ch-2.pl b/challenge-282/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..f841ec5461
--- /dev/null
+++ b/challenge-282/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,16 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+sub changing_keys{
+ my ($c,@arr) = (0,split '',lc $_[0]);
+ foreach my $i(0..$#arr-1){
+ $c++ if $arr[$i] ne $arr[$i+1]
+ }
+ $c
+}
+
+printf "%d\n",changing_keys('pPeERrLl');
+printf "%d\n",changing_keys('rRr');
+printf "%d\n",changing_keys('GoO');
+