aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-09-04 22:12:21 +0100
committerGitHub <noreply@github.com>2024-09-04 22:12:21 +0100
commitf129de82fc40b563e19f5528716b12bdb3ada21e (patch)
treee281c2850e0a81fe1ded9346c62fd2fdf5a74815
parent6b187c743b9abda68e14ea0b68e163a41c202786 (diff)
parent9f9759bf51628e5c9216166870965e0ae0357391 (diff)
downloadperlweeklychallenge-club-f129de82fc40b563e19f5528716b12bdb3ada21e.tar.gz
perlweeklychallenge-club-f129de82fc40b563e19f5528716b12bdb3ada21e.tar.bz2
perlweeklychallenge-club-f129de82fc40b563e19f5528716b12bdb3ada21e.zip
Merge pull request #10773 from pauloscustodio/master
Add Python solutions
-rw-r--r--challenge-052/paulo-custodio/python/ch-1.py21
-rw-r--r--challenge-052/paulo-custodio/python/ch-2.py48
-rw-r--r--challenge-284/paulo-custodio/perl/ch-2.pl2
-rw-r--r--challenge-284/paulo-custodio/python/ch-1.py44
-rw-r--r--challenge-284/paulo-custodio/python/ch-2.py48
-rw-r--r--challenge-284/paulo-custodio/t/test-2.yaml6
6 files changed, 165 insertions, 4 deletions
diff --git a/challenge-052/paulo-custodio/python/ch-1.py b/challenge-052/paulo-custodio/python/ch-1.py
new file mode 100644
index 0000000000..7786282a38
--- /dev/null
+++ b/challenge-052/paulo-custodio/python/ch-1.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python
+
+# Challenge 052
+#
+# TASK #1
+# Stepping Numbers
+# Write a script to accept two numbers between 100 and 999. It should then print
+# all Stepping Numbers between them.
+#
+# A number is called a stepping number if the adjacent digits have a difference
+# of 1. For example, 456 is a stepping number but 129 is not.
+
+import sys
+
+STEPPING_NUMS = [123, 234, 345, 456, 567, 678, 789]
+
+start = int(sys.argv[1])
+end = int(sys.argv[2])
+for n in STEPPING_NUMS:
+ if n >= start and n <= end:
+ print(n)
diff --git a/challenge-052/paulo-custodio/python/ch-2.py b/challenge-052/paulo-custodio/python/ch-2.py
new file mode 100644
index 0000000000..1bb6b70bed
--- /dev/null
+++ b/challenge-052/paulo-custodio/python/ch-2.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python3
+
+# Challenge 052
+#
+# TASK #2
+# Lucky Winner
+# Suppose there are following coins arranged on a table in a line in random
+# order.
+#
+# Pound1, 50p, 1p, 10p, 5p, 20p, Pound2, 2p
+#
+# Suppose you are playing against the computer. Player can only pick one coin
+# at a time from either ends. Find out the lucky winner, who has the larger
+# amounts in total?
+
+from random import shuffle
+
+coins = [100, 50, 1, 10, 5, 20, 200, 2]
+shuffle(coins)
+
+human = 0
+computer = 0
+
+while len(coins) > 0:
+ # human
+ draw = ""
+ while draw != "b" and draw != "e":
+ draw = input("Coins: "+" ".join([str(x) for x in coins])+". draw (b/e)? ")
+ if draw == "b":
+ human += coins[0]
+ coins = coins[1:]
+ else:
+ human += coins[-1]
+ coins = coins[:-1]
+
+ # computer
+ if len(coins) > 0:
+ if coins[0] >= coins[-1]:
+ computer += coins[0]
+ coins = coins[1:]
+ else:
+ computer += coins[-1]
+ coins = coins[:-1]
+
+if human > computer:
+ print(f"You WIN ({human}/{computer})")
+else:
+ print(f"You LOOSE ({human}/{computer})")
diff --git a/challenge-284/paulo-custodio/perl/ch-2.pl b/challenge-284/paulo-custodio/perl/ch-2.pl
index 6bb9662a88..4813ce73f0 100644
--- a/challenge-284/paulo-custodio/perl/ch-2.pl
+++ b/challenge-284/paulo-custodio/perl/ch-2.pl
@@ -43,4 +43,4 @@ while (@list2) {
}
push @output, sort {$a <=> $b} @list1;
-say "@output";
+say join ", ", @output;
diff --git a/challenge-284/paulo-custodio/python/ch-1.py b/challenge-284/paulo-custodio/python/ch-1.py
new file mode 100644
index 0000000000..cebd0835de
--- /dev/null
+++ b/challenge-284/paulo-custodio/python/ch-1.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python3
+
+# Challenge 284
+#
+# Task 1: Lucky Integer
+# Submitted by: Mohammad Sajid Anwar
+#
+# You are given an array of integers, @ints.
+#
+# Write a script to find the lucky integer if found otherwise return -1. If
+# there are more than one then return the largest.
+#
+# A lucky integer is an integer that has a frequency in the array equal to
+# its value.
+#
+# Example 1
+#
+# Input: @ints = (2, 2, 3, 4)
+# Output: 2
+#
+# Example 2
+#
+# Input: @ints = (1, 2, 2, 3, 3, 3)
+# Output: 3
+#
+# Example 3
+#
+# Input: @ints = (1, 1, 1, 3)
+# Output: -1
+
+import sys
+
+ints = [int(x) for x in sys.argv[1:]]
+count = {}
+for x in ints:
+ if x in count:
+ count[x] += 1
+ else:
+ count[x] = 1
+lucky = sorted(list(filter(lambda x:x == count[x], ints)))[::-1]
+if len(lucky) > 0:
+ print(lucky[0])
+else:
+ print(-1)
diff --git a/challenge-284/paulo-custodio/python/ch-2.py b/challenge-284/paulo-custodio/python/ch-2.py
new file mode 100644
index 0000000000..b51af0f0ac
--- /dev/null
+++ b/challenge-284/paulo-custodio/python/ch-2.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python3
+
+# Challenge 284
+#
+# Task 2: Relative Sort
+# Submitted by: Mohammad Sajid Anwar
+#
+# You are given two list of integers, @list1 and @list2. The elements in the
+# @list2 are distinct and also in the @list1.
+#
+# Write a script to sort the elements in the @list1 such that the relative
+# order of items in @list1 is same as in the @list2. Elements that is missing
+# in @list2 should be placed at the end of @list1 in ascending order.
+# Example 1
+#
+# Input: @list1 = (2, 3, 9, 3, 1, 4, 6, 7, 2, 8, 5)
+# @list2 = (2, 1, 4, 3, 5, 6)
+# Ouput: (2, 2, 1, 4, 3, 3, 5, 6, 7, 8, 9)
+#
+# Example 2
+#
+# Input: @list1 = (3, 3, 4, 6, 2, 4, 2, 1, 3)
+# @list2 = (1, 3, 2)
+# Ouput: (1, 3, 3, 3, 2, 2, 4, 4, 6)
+#
+# Example 3
+#
+# Input: @list1 = (3, 0, 5, 0, 2, 1, 4, 1, 1)
+# @list2 = (1, 0, 3, 2)
+# Ouput: (1, 1, 1, 0, 0, 3, 2, 4, 5)
+
+import sys
+
+args = (" ".join(sys.argv[1:])).split(',')
+list1 = [int(x) for x in args[0].split()]
+list2 = [int(x) for x in args[1].split()]
+
+output = []
+while len(list2) > 0:
+ n = list2[0]
+ list2 = list2[1:]
+ for x in filter(lambda x:x == n, list1):
+ output.append(x)
+ list1 = list(filter(lambda x:x != n, list1))
+for x in sorted(list1):
+ output.append(x)
+
+print(", ".join([str(x) for x in output]))
diff --git a/challenge-284/paulo-custodio/t/test-2.yaml b/challenge-284/paulo-custodio/t/test-2.yaml
index f4d2db7f63..4d0548ddd5 100644
--- a/challenge-284/paulo-custodio/t/test-2.yaml
+++ b/challenge-284/paulo-custodio/t/test-2.yaml
@@ -2,14 +2,14 @@
cleanup:
args: 2 3 9 3 1 4 6 7 2 8 5 , 2 1 4 3 5 6
input:
- output: 2 2 1 4 3 3 5 6 7 8 9
+ output: 2, 2, 1, 4, 3, 3, 5, 6, 7, 8, 9
- setup:
cleanup:
args: 3 3 4 6 2 4 2 1 3 , 1 3 2
input:
- output: 1 3 3 3 2 2 4 4 6
+ output: 1, 3, 3, 3, 2, 2, 4, 4, 6
- setup:
cleanup:
args: 3 0 5 0 2 1 4 1 1 , 1 0 3 2
input:
- output: 1 1 1 0 0 3 2 4 5
+ output: 1, 1, 1, 0, 0, 3, 2, 4, 5