aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMariano Spadaccini <spadacciniweb@gmail.com>2024-06-13 12:18:46 +0200
committerMariano Spadaccini <spadacciniweb@gmail.com>2024-06-13 12:18:46 +0200
commitc7797f212a2db97cae7ac808542c20df8402eea5 (patch)
treeda01a669bdb10805b27a49b43b25e37c29268a4c
parentdd679b917c37fbc332647940157e31e431557005 (diff)
downloadperlweeklychallenge-club-c7797f212a2db97cae7ac808542c20df8402eea5.tar.gz
perlweeklychallenge-club-c7797f212a2db97cae7ac808542c20df8402eea5.tar.bz2
perlweeklychallenge-club-c7797f212a2db97cae7ac808542c20df8402eea5.zip
Add ch-1 and ch-2 in Elixir
-rw-r--r--challenge-273/spadacciniweb/elixir/ch-1.exs65
-rw-r--r--challenge-273/spadacciniweb/elixir/ch-2.exs60
2 files changed, 125 insertions, 0 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)