aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-341/deadmarshal/blog.txt1
-rw-r--r--challenge-341/deadmarshal/go/ch1.go29
-rw-r--r--challenge-341/deadmarshal/go/ch2.go27
-rw-r--r--challenge-341/deadmarshal/java/Ch1.java33
-rw-r--r--challenge-341/deadmarshal/java/Ch2.java19
-rw-r--r--challenge-341/deadmarshal/perl/ch-1.pl15
-rw-r--r--challenge-341/deadmarshal/perl/ch-2.pl16
7 files changed, 140 insertions, 0 deletions
diff --git a/challenge-341/deadmarshal/blog.txt b/challenge-341/deadmarshal/blog.txt
new file mode 100644
index 0000000000..bf708679e8
--- /dev/null
+++ b/challenge-341/deadmarshal/blog.txt
@@ -0,0 +1 @@
+https://deadmarshal.blogspot.com/2025/09/twc341.html
diff --git a/challenge-341/deadmarshal/go/ch1.go b/challenge-341/deadmarshal/go/ch1.go
new file mode 100644
index 0000000000..16fce3e7a2
--- /dev/null
+++ b/challenge-341/deadmarshal/go/ch1.go
@@ -0,0 +1,29 @@
+package main
+
+import (
+ "fmt"
+ "strings"
+)
+
+func brokenKeyboard(str string, runes []rune) int {
+ chars := string(runes)
+ words := strings.Fields(str)
+ if chars == "" {
+ return len(words)
+ }
+ c := 0
+ for _, w := range words {
+ if !strings.ContainsAny(strings.ToLower(w), chars) {
+ c += 1
+ }
+ }
+ return c
+}
+
+func main() {
+ fmt.Println(brokenKeyboard("Hello World", []rune{'d'}))
+ fmt.Println(brokenKeyboard("apple banana cherry", []rune{'a', 'e'}))
+ fmt.Println(brokenKeyboard("Coding is fun", []rune{}))
+ fmt.Println(brokenKeyboard("The Weekly Challenge", []rune{'a', 'b'}))
+ fmt.Println(brokenKeyboard("Perl and Python", []rune{'p'}))
+}
diff --git a/challenge-341/deadmarshal/go/ch2.go b/challenge-341/deadmarshal/go/ch2.go
new file mode 100644
index 0000000000..9e457223a9
--- /dev/null
+++ b/challenge-341/deadmarshal/go/ch2.go
@@ -0,0 +1,27 @@
+package main
+
+import (
+ "fmt"
+ "strings"
+)
+
+func reverse(s string) string {
+ r := []rune(s)
+ for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
+ r[i], r[j] = r[j], r[i]
+ }
+ return string(r)
+}
+
+func reversePrefix(str string, c rune) string {
+ idx := strings.IndexRune(str, c)
+ return reverse(str[0:idx+1]) + str[idx+1:]
+}
+
+func main() {
+ fmt.Println(reversePrefix("programming", 'g'))
+ fmt.Println(reversePrefix("hello", 'h'))
+ fmt.Println(reversePrefix("abcdefghij", 'h'))
+ fmt.Println(reversePrefix("reverse", 's'))
+ fmt.Println(reversePrefix("perl", 'r'))
+}
diff --git a/challenge-341/deadmarshal/java/Ch1.java b/challenge-341/deadmarshal/java/Ch1.java
new file mode 100644
index 0000000000..102ba004a1
--- /dev/null
+++ b/challenge-341/deadmarshal/java/Ch1.java
@@ -0,0 +1,33 @@
+public class Ch1 {
+ public static void main(String[] args) {
+ System.out.println(broken_keyboard("Hello World",
+ new char[]{'d'}));
+ System.out.println(broken_keyboard("apple banana cherry",
+ new char[]{'a','e'}));
+ System.out.println(broken_keyboard("Coding is fun",
+ new char[]{}));
+ System.out.println(broken_keyboard("The Weekly Challenge",
+ new char[]{'a','b'}));
+ System.out.println(broken_keyboard("Perl and Python",
+ new char[]{'p'}));
+ }
+
+ private static int broken_keyboard(String str,char[] chars) {
+ String keys = new String(chars);
+ String[] words = str.split("\\s+");
+ if(keys.isEmpty()) return words.length;
+ int c = 0;
+ for(String w : words) {
+ if(!containsAny(w.toLowerCase(),keys)) c++;
+ }
+ return c;
+ }
+
+ private static boolean containsAny(String word,String chars) {
+ for(char c : chars.toCharArray()) {
+ if(word.indexOf(c) != -1) return true;
+ }
+ return false;
+ }
+}
+
diff --git a/challenge-341/deadmarshal/java/Ch2.java b/challenge-341/deadmarshal/java/Ch2.java
new file mode 100644
index 0000000000..2e00846fbf
--- /dev/null
+++ b/challenge-341/deadmarshal/java/Ch2.java
@@ -0,0 +1,19 @@
+public class Ch2 {
+ public static void main(String[] args) {
+ System.out.println(reversePrefix("programming",'g'));
+ System.out.println(reversePrefix("hello",'h'));
+ System.out.println(reversePrefix("abcdefghij",'h'));
+ System.out.println(reversePrefix("reverse",'s'));
+ System.out.println(reversePrefix("perl",'r'));
+ }
+
+ private static String reversePrefix(String str,char c) {
+ int idx = str.indexOf(c);
+ if(idx == -1) return str;
+ return new StringBuilder(str.substring(0,idx+1))
+ .reverse()
+ .toString() +
+ str.substring(idx+1);
+ }
+}
+
diff --git a/challenge-341/deadmarshal/perl/ch-1.pl b/challenge-341/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..3297e817ae
--- /dev/null
+++ b/challenge-341/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,15 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+sub broken_keyboard{
+ my $chars = join '',@{$_[1]};
+ scalar grep {$chars eq '' || !/[$chars]/i} split /\W+/,$_[0];
+}
+
+printf "%d\n",broken_keyboard('Hello World',['d']);
+printf "%d\n",broken_keyboard('apple banana cherry',['a','e']);
+printf "%d\n",broken_keyboard('Coding is fun',['']);
+printf "%d\n",broken_keyboard('The Weekly Challenge',['a','b']);
+printf "%d\n",broken_keyboard('Perl and Python',['p'])
+
diff --git a/challenge-341/deadmarshal/perl/ch-2.pl b/challenge-341/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..2d61119670
--- /dev/null
+++ b/challenge-341/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,16 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+sub reverse_prefix{
+ my ($str) = @_;
+ $str =~ s/^(.*?$_[1])/reverse $1/e;
+ $str
+}
+
+printf "%s\n",reverse_prefix('programming','g');
+printf "%s\n",reverse_prefix('hello','h');
+printf "%s\n",reverse_prefix('abcdefghij','h');
+printf "%s\n",reverse_prefix('reverse','s');
+printf "%s\n",reverse_prefix('perl','r')
+