From c7797f212a2db97cae7ac808542c20df8402eea5 Mon Sep 17 00:00:00 2001 From: Mariano Spadaccini Date: Thu, 13 Jun 2024 12:18:46 +0200 Subject: Add ch-1 and ch-2 in Elixir --- challenge-273/spadacciniweb/elixir/ch-1.exs | 65 +++++++++++++++++++++++++++++ challenge-273/spadacciniweb/elixir/ch-2.exs | 60 ++++++++++++++++++++++++++ 2 files changed, 125 insertions(+) create mode 100644 challenge-273/spadacciniweb/elixir/ch-1.exs create mode 100644 challenge-273/spadacciniweb/elixir/ch-2.exs 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) -- cgit From 9c95a292ea1d562a61a569f752954220ba6cbbc0 Mon Sep 17 00:00:00 2001 From: Mariano Spadaccini Date: Fri, 14 Jun 2024 09:13:08 +0200 Subject: Add ch-1 and ch-2 in Python --- challenge-273/spadacciniweb/python/ch-1.py | 61 ++++++++++++++++++++++++++++++ challenge-273/spadacciniweb/python/ch-2.py | 46 ++++++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 challenge-273/spadacciniweb/python/ch-1.py create mode 100644 challenge-273/spadacciniweb/python/ch-2.py 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) -- cgit From 63876f502b91d23fc368baf387b52d14c2f781ca Mon Sep 17 00:00:00 2001 From: Mariano Spadaccini Date: Fri, 14 Jun 2024 09:14:27 +0200 Subject: Remake ch-2 in Perl --- challenge-273/spadacciniweb/perl/ch-2.pl | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) 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'; } -- cgit