diff options
| author | Mariano Spadaccini <spadacciniweb@gmail.com> | 2024-06-13 12:18:46 +0200 |
|---|---|---|
| committer | Mariano Spadaccini <spadacciniweb@gmail.com> | 2024-06-13 12:18:46 +0200 |
| commit | c7797f212a2db97cae7ac808542c20df8402eea5 (patch) | |
| tree | da01a669bdb10805b27a49b43b25e37c29268a4c | |
| parent | dd679b917c37fbc332647940157e31e431557005 (diff) | |
| download | perlweeklychallenge-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.exs | 65 | ||||
| -rw-r--r-- | challenge-273/spadacciniweb/elixir/ch-2.exs | 60 |
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) |
