aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-06-14 09:05:31 +0100
committerGitHub <noreply@github.com>2024-06-14 09:05:31 +0100
commit5dbbdfd95c706903cbf41c6152697544f66d1562 (patch)
tree2f0a0aaf8d7521ebd54fe07d5bb17b4d9084e4b5
parentbc05f12dc3a7ef731c91f2ddbeb18895c3b153c8 (diff)
parent63876f502b91d23fc368baf387b52d14c2f781ca (diff)
downloadperlweeklychallenge-club-5dbbdfd95c706903cbf41c6152697544f66d1562.tar.gz
perlweeklychallenge-club-5dbbdfd95c706903cbf41c6152697544f66d1562.tar.bz2
perlweeklychallenge-club-5dbbdfd95c706903cbf41c6152697544f66d1562.zip
Merge pull request #10257 from spadacciniweb/PWC-273
PWC 273 - Add ch-1 and ch-2 in Python and Elixir, remake ch-2 in Perl
-rw-r--r--challenge-273/spadacciniweb/elixir/ch-1.exs65
-rw-r--r--challenge-273/spadacciniweb/elixir/ch-2.exs60
-rw-r--r--challenge-273/spadacciniweb/perl/ch-2.pl12
-rw-r--r--challenge-273/spadacciniweb/python/ch-1.py61
-rw-r--r--challenge-273/spadacciniweb/python/ch-2.py46
5 files changed, 236 insertions, 8 deletions
diff --git a/challenge-273/spadacciniweb/elixir/ch-1.exs b/challenge-273/spadacciniweb/elixir/ch-1.exs
new file mode 100644
index 0000000000..3fe074e791
--- /dev/null
+++ b/challenge-273/spadacciniweb/elixir/ch-1.exs
@@ -0,0 +1,65 @@
+# Task 1: Percentage of Character
+# Submitted by: Mohammad Sajid Anwar
+#
+# You are given a string, $str and a character $char.
+# Write a script to return the percentage, nearest whole, of given character in the given string.
+#
+# Example 1
+# Input: $str = "perl", $char = "e"
+# Output: 25
+#
+# Example 2
+# Input: $str = "java", $char = "a"
+# Output: 50
+#
+# Example 3
+# Input: $str = "python", $char = "m"
+# Output: 0
+#
+# Example 4
+# Input: $str = "ada", $char = "a"
+# Output: 67
+#
+# Example 5
+# Input: $str = "ballerina", $char = "l"
+# Output: 22
+#
+# Example 6
+# Input: $str = "analitik", $char = "k"
+# Output: 13
+
+defmodule Percentage do
+
+ def freq(str, char) do
+ String.split(str, "", trim: true)
+ |> Enum.frequencies
+ |> Map.get(char)
+ end
+
+ def out(str, char) do
+ IO.write( str <> " " <> char <> " -> ")
+ case freq(str, char) do
+ nil -> IO.puts "0"
+ x -> IO.puts( x / String.length(str)*100 |> round )
+ end
+ end
+
+end
+
+str = "perl"; char = "e";
+Percentage.out(str, char)
+
+str = "java"; char = "a";
+Percentage.out(str, char)
+
+str = "python"; char = "m";
+Percentage.out(str, char)
+
+str = "ada"; char = "a";
+Percentage.out(str, char)
+
+str = "ballerina"; char = "l";
+Percentage.out(str, char)
+
+str = "analitik"; char = "k";
+Percentage.out(str, char)
diff --git a/challenge-273/spadacciniweb/elixir/ch-2.exs b/challenge-273/spadacciniweb/elixir/ch-2.exs
new file mode 100644
index 0000000000..ca07864984
--- /dev/null
+++ b/challenge-273/spadacciniweb/elixir/ch-2.exs
@@ -0,0 +1,60 @@
+# Task 2: B After A
+# Submitted by: Mohammad Sajid Anwar
+#
+# You are given a string, $str.
+# Write a script to return true if there is at least one b, and no a appears after the first b.
+#
+# Example 1
+# Input: $str = "aabb"
+# Output: true
+#
+# Example 2
+# Input: $str = "abab"
+# Output: false
+#
+# Example 3
+# Input: $str = "aaa"
+# Output: false
+#
+# Example 4
+# Input: $str = "bbb"
+# Output: true
+
+defmodule Position do
+
+ def first_b(str) do
+ case Regex.run(~r/b/, str, return: :index) do
+ nil -> nil
+ out -> out |> Enum.fetch!(0) |> elem(0)
+ end
+ end
+
+ def last_a(str, pos) do
+ case Regex.run(~r/a/, str, offset: pos, return: :index) do
+ nil -> IO.puts( "true" )
+ _ -> IO.puts( "false" )
+ end
+ end
+
+ def out(str) do
+ IO.write( str <> " -> " )
+ #IO.inspect( first_b(str) )
+ case first_b(str) do
+ nil -> IO.puts( "false" )
+ out -> last_a(str, out)
+ end
+ end
+
+end
+
+str = "aabb"
+Position.out(str)
+
+str = "abab"
+Position.out(str)
+
+str = "aaa"
+Position.out(str)
+
+str = "bbb"
+Position.out(str)
diff --git a/challenge-273/spadacciniweb/perl/ch-2.pl b/challenge-273/spadacciniweb/perl/ch-2.pl
index a7c968b0fd..9f7cc330ca 100644
--- a/challenge-273/spadacciniweb/perl/ch-2.pl
+++ b/challenge-273/spadacciniweb/perl/ch-2.pl
@@ -42,14 +42,10 @@ exit 0;
sub position {
my $str = shift;
- my $first_b = index($str, 'b');
- my $last_a = index((scalar reverse $str), 'a');
- $last_a = length($str) - $last_a - 1
- if $last_a >= 0;
-
+ my $offset = index($str, 'b');
printf "%s -> %s\n",
$str,
- ($last_a > $first_b)
- ? 'false'
- : 'true';
+ ($offset >= 0 and index($str, 'a', $offset) == -1)
+ ? 'true'
+ : 'false';
}
diff --git a/challenge-273/spadacciniweb/python/ch-1.py b/challenge-273/spadacciniweb/python/ch-1.py
new file mode 100644
index 0000000000..bfbc5cbc57
--- /dev/null
+++ b/challenge-273/spadacciniweb/python/ch-1.py
@@ -0,0 +1,61 @@
+# Task 1: Percentage of Character
+# Submitted by: Mohammad Sajid Anwar
+#
+# You are given a string, $str and a character $char.
+# Write a script to return the percentage, nearest whole, of given character in the given string.
+#
+# Example 1
+# Input: $str = "perl", $char = "e"
+# Output: 25
+#
+# Example 2
+# Input: $str = "java", $char = "a"
+# Output: 50
+#
+# Example 3
+# Input: $str = "python", $char = "m"
+# Output: 0
+#
+# Example 4
+# Input: $str = "ada", $char = "a"
+# Output: 67
+#
+# Example 5
+# Input: $str = "ballerina", $char = "l"
+# Output: 22
+#
+# Example 6
+# Input: $str = "analitik", $char = "k"
+# Output: 13
+
+def percentage(str, char):
+ print("%s -> %d" %
+ ( str,
+ round( str.count(char)*100/len(str) )
+ )
+ )
+
+if __name__ == "__main__":
+ str = "perl"
+ char = "e"
+ percentage(str, char)
+
+ str = "java"
+ char = "a"
+ percentage(str, char)
+
+ str = "python"
+ char = "m"
+ percentage(str, char)
+
+ str = "ada"
+ char = "a"
+ percentage(str, char)
+
+ str = "ballerina"
+ char = "l"
+ percentage(str, char)
+
+ str = "analitik"
+ char = "k"
+ percentage(str, char)
diff --git a/challenge-273/spadacciniweb/python/ch-2.py b/challenge-273/spadacciniweb/python/ch-2.py
new file mode 100644
index 0000000000..dce0bca454
--- /dev/null
+++ b/challenge-273/spadacciniweb/python/ch-2.py
@@ -0,0 +1,46 @@
+#!/usr/bin/env perl
+
+# Task 2: B After A
+# Submitted by: Mohammad Sajid Anwar
+#
+# You are given a string, $str.
+# Write a script to return true if there is at least one b, and no a appears after the first b.
+#
+# Example 1
+# Input: $str = "aabb"
+# Output: true
+#
+# Example 2
+# Input: $str = "abab"
+# Output: false
+#
+# Example 3
+# Input: $str = "aaa"
+# Output: false
+#
+# Example 4
+# Input: $str = "bbb"
+# Output: true
+
+def out(str):
+ offset = str.find('b')
+ if offset >= 0 and str.find('a', offset) == -1:
+ res = "true"
+ else:
+ res = "false"
+ print("%s -> %s" %
+ ( str, res )
+ )
+
+if __name__ == "__main__":
+ str = "aabb"
+ out(str)
+
+ str = "abab"
+ out(str)
+
+ str = "aaa"
+ out(str)
+
+ str = "bbb"
+ out(str)