aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-316/kjetillll/perl/ch-1.pl7
-rw-r--r--challenge-316/kjetillll/perl/ch-2.pl19
2 files changed, 26 insertions, 0 deletions
diff --git a/challenge-316/kjetillll/perl/ch-1.pl b/challenge-316/kjetillll/perl/ch-1.pl
new file mode 100644
index 0000000000..cd70fcb616
--- /dev/null
+++ b/challenge-316/kjetillll/perl/ch-1.pl
@@ -0,0 +1,7 @@
+sub f { "@_" !~ /(.) (?!\1)/ }
+
+print f("perl", "loves", "scala") ? "ok\n" : "error\n"; # true
+print ! f("love", "the", "programming") ? "ok\n" : "error\n"; # false
+print f("java", "awk", "kotlin", "node.js") ? "ok\n" : "error\n"; # true
+print f("ISI","I","IJK","KAREN") ? "ok\n" : "error\n"; # true
+print ! f("ISI","I","KJK","KAREN") ? "ok\n" : "error\n"; # false
diff --git a/challenge-316/kjetillll/perl/ch-2.pl b/challenge-316/kjetillll/perl/ch-2.pl
new file mode 100644
index 0000000000..22c9aee3f6
--- /dev/null
+++ b/challenge-316/kjetillll/perl/ch-2.pl
@@ -0,0 +1,19 @@
+#Makes a regexp out of the first string by putting .* behind each char
+#and match that against the second input string.
+
+sub f { pop =~ m|@{[ pop =~ s/./\Q$&\E.*/gr ]}| }
+
+print f( "uvw", "bcudvew" ) ? "ok\n" : "error\n"; # true
+print ! f( "aec", "abcde" ) ? "ok\n" : "error\n"; # false
+print f( "sip", "javascript" ) ? "ok\n" : "error\n"; # true
+print ! f( "ae.", "abcdef" ) ? "ok\n" : "error\n"; # false
+print f( "ae.", "abcde.f" ) ? "ok\n" : "error\n"; # false
+print f( "ae.x(", "abcdef.kx(+" ) ? "ok\n" : "error\n"; # false
+
+#regexp allergy?
+sub f2 {
+ my @substr = split//, shift;
+ my @str = split//, shift;
+ $_ eq $substr[0] and shift @substr for @str;
+ !@substr
+}