aboutsummaryrefslogtreecommitdiff
path: root/challenge-258/jeanluc2020/python
diff options
context:
space:
mode:
authorThomas Köhler <jean-luc@picard.franken.de>2024-02-26 21:02:22 +0100
committerThomas Köhler <jean-luc@picard.franken.de>2024-02-26 21:02:22 +0100
commitfa9b1aca1f30a93ca612663fac8b8d3c809d1aa4 (patch)
tree7a327cb20bfb6d0471f5798d10f422e162c2096f /challenge-258/jeanluc2020/python
parent4416b8cd33659c6d380e3ea2c5b3e21e4a861a99 (diff)
downloadperlweeklychallenge-club-fa9b1aca1f30a93ca612663fac8b8d3c809d1aa4.tar.gz
perlweeklychallenge-club-fa9b1aca1f30a93ca612663fac8b8d3c809d1aa4.tar.bz2
perlweeklychallenge-club-fa9b1aca1f30a93ca612663fac8b8d3c809d1aa4.zip
Add solution 258
Signed-off-by: Thomas Köhler <jean-luc@picard.franken.de>
Diffstat (limited to 'challenge-258/jeanluc2020/python')
-rwxr-xr-xchallenge-258/jeanluc2020/python/ch-1.py48
-rwxr-xr-xchallenge-258/jeanluc2020/python/ch-2.py66
2 files changed, 114 insertions, 0 deletions
diff --git a/challenge-258/jeanluc2020/python/ch-1.py b/challenge-258/jeanluc2020/python/ch-1.py
new file mode 100755
index 0000000000..efa600dc7e
--- /dev/null
+++ b/challenge-258/jeanluc2020/python/ch-1.py
@@ -0,0 +1,48 @@
+#!/usr/bin/python3
+# https://theweeklychallenge.org/blog/perl-weekly-challenge-258/#TASK1
+#
+# Task 1: Count Even Digits Number
+# ================================
+#
+# You are given a array of positive integers, @ints.
+#
+# Write a script to find out how many integers have even number of digits.
+#
+## Example 1
+##
+## Input: @ints = (10, 1, 111, 24, 1000)
+## Output: 3
+##
+## There are 3 integers having even digits i.e. 10, 24 and 1000.
+#
+## Example 2
+##
+## Input: @ints = (111, 1, 11111)
+## Output: 0
+#
+## Example 3
+##
+## Input: @ints = (2, 8, 1024, 256)
+## Output: 1
+#
+############################################################
+##
+## discussion
+##
+############################################################
+#
+# Just calculate the length of each integer an check if it is
+# even, then in the end tell how many those were.
+
+def count_even_digits_number(ints: list):
+ print("Input: (", ", ".join(str(x) for x in ints), ")", sep="")
+ result = 0
+ for number in ints:
+ if len(str(number)) % 2 == 0:
+ result += 1
+ print(f"Output: {result}")
+
+count_even_digits_number([10, 1, 111, 24, 1000]);
+count_even_digits_number([111, 1, 11111]);
+count_even_digits_number([2, 8, 1024, 256]);
+
diff --git a/challenge-258/jeanluc2020/python/ch-2.py b/challenge-258/jeanluc2020/python/ch-2.py
new file mode 100755
index 0000000000..79f0382aa2
--- /dev/null
+++ b/challenge-258/jeanluc2020/python/ch-2.py
@@ -0,0 +1,66 @@
+#!/usr/bin/python3
+# https://theweeklychallenge.org/blog/perl-weekly-challenge-258/#TASK2
+#
+# Task 2: Sum of Values
+# =====================
+#
+# You are given an array of integers, @int and an integer $k.
+#
+# Write a script to find the sum of values whose index binary representation has
+# exactly $k number of 1-bit set.
+#
+## Example 1
+##
+## Input: @ints = (2, 5, 9, 11, 3), $k = 1
+## Output: 17
+##
+## Binary representation of index 0 = 0
+## Binary representation of index 1 = 1
+## Binary representation of index 2 = 10
+## Binary representation of index 3 = 11
+## Binary representation of index 4 = 100
+##
+## So the indices 1, 2 and 4 have total one 1-bit sets.
+## Therefore the sum, $ints[1] + $ints[2] + $ints[3] = 17
+#
+## Example 2
+##
+## Input: @ints = (2, 5, 9, 11, 3), $k = 2
+## Output: 11
+#
+## Example 3
+##
+## Input: @ints = (2, 5, 9, 11, 3), $k = 0
+## Output: 2
+#
+############################################################
+##
+## discussion
+##
+############################################################
+#
+# For each element of the list:
+# - calculate the number of 1-bit sets
+# - compare to $k
+# - return result of all ints[$i] where $i has $k 1-bits set
+
+def dec2bin(num: int) -> str:
+ return bin(num)[2:]
+
+def sum_of_values(ints: list, k: int):
+ print("Input: (", ", ".join(str(x) for x in ints) , "), ", k, sep="")
+ result = 0
+ for index in range(len(ints)):
+ bin = dec2bin(index)
+ bits_set = 0
+ for bit in list(bin):
+ if bit == "1":
+ bits_set += 1
+ if bits_set == k:
+ result += ints[index]
+ print(f"Output: {result}")
+
+sum_of_values([2, 5, 9, 11, 3], 1);
+sum_of_values([2, 5, 9, 11, 3], 2);
+sum_of_values([2, 5, 9, 11, 3], 0);
+