diff options
| -rw-r--r-- | challenge-341/deadmarshal/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-341/deadmarshal/go/ch1.go | 29 | ||||
| -rw-r--r-- | challenge-341/deadmarshal/go/ch2.go | 27 | ||||
| -rw-r--r-- | challenge-341/deadmarshal/java/Ch1.java | 33 | ||||
| -rw-r--r-- | challenge-341/deadmarshal/java/Ch2.java | 19 | ||||
| -rw-r--r-- | challenge-341/deadmarshal/perl/ch-1.pl | 15 | ||||
| -rw-r--r-- | challenge-341/deadmarshal/perl/ch-2.pl | 16 |
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') + |
