diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-06-14 09:05:31 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-14 09:05:31 +0100 |
| commit | 5dbbdfd95c706903cbf41c6152697544f66d1562 (patch) | |
| tree | 2f0a0aaf8d7521ebd54fe07d5bb17b4d9084e4b5 | |
| parent | bc05f12dc3a7ef731c91f2ddbeb18895c3b153c8 (diff) | |
| parent | 63876f502b91d23fc368baf387b52d14c2f781ca (diff) | |
| download | perlweeklychallenge-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.exs | 65 | ||||
| -rw-r--r-- | challenge-273/spadacciniweb/elixir/ch-2.exs | 60 | ||||
| -rw-r--r-- | challenge-273/spadacciniweb/perl/ch-2.pl | 12 | ||||
| -rw-r--r-- | challenge-273/spadacciniweb/python/ch-1.py | 61 | ||||
| -rw-r--r-- | challenge-273/spadacciniweb/python/ch-2.py | 46 |
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) |
