diff options
Diffstat (limited to 'challenge-051/user-person/python')
| -rwxr-xr-x | challenge-051/user-person/python/ch-1.py | 72 | ||||
| -rwxr-xr-x | challenge-051/user-person/python/ch-2.py | 69 |
2 files changed, 141 insertions, 0 deletions
diff --git a/challenge-051/user-person/python/ch-1.py b/challenge-051/user-person/python/ch-1.py new file mode 100755 index 0000000000..e469149cd1 --- /dev/null +++ b/challenge-051/user-person/python/ch-1.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python3 + +########################################################################### +# script name: ch-1.py # +# # +# https://github.com/user-person # +# # +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-051/ # +# # +# 3 Sum # +# Given an array @L of integers. Write a script to find all unique # +# triplets such that a + b + c is same as the given target T. Also make # +# sure a <= b <= c. # +# # +# https://en.wikipedia.org/wiki/3SUM # +# # +# Example: # +# # +# @L = (-25, -10, -7, -3, 2, 4, 8, 10); # +# # +# One such triplet for target 0 i.e. -10 + 2 + 8 = 0. # +# # +########################################################################### + +import re +import sys + +L = [-25, -10, -7, -3, 2, 4, 8, 10] +T = 0 + +if len(sys.argv) > 1: + + input = ' '.join(sys.argv[1:]) + input = re.sub(r'[][)(, ]+', ' ', input) + input = re.sub(r'\A\s+|\s+\Z', '', input) + L = re.split(r' ', input) + + for num in L: + num = re.sub(r'\A0+\Z', '0', num) + numPat = re.compile(r'\A0+(-?\d+)') + num = re.sub(numPat, r'\1', num) + + L = list(map(int,L)) + +else: + + print('Using default input L:',L) + +L.sort() +seen = {} + +for i in range( len(L)-2): + for j in range(i+1, len(L)-1): + for k in range(j+1, len(L) ): + + sum = L[i] + L[j] + L[k] + + if sum == T: + digString = '%i + %i + %i = %i' % ( L[i], L[j], L[k], T) + if digString in seen: + continue + else: + print(digString) + seen.update({digString : True}) + +# output: +# +# Using default input L: [-25, -10, -7, -3, 2, 4, 8, 10] +# -10 + 2 + 8 = 0 +# -7 + -3 + 10 = 0 + + diff --git a/challenge-051/user-person/python/ch-2.py b/challenge-051/user-person/python/ch-2.py new file mode 100755 index 0000000000..85b3394bb6 --- /dev/null +++ b/challenge-051/user-person/python/ch-2.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 + +########################################################################### +# script name: ch-2.py # +# # +# https://github.com/user-person # +# # +# https://perlweeklychallenge.org/blog/perl-weekly-challenge-051/ # +# # +# Colourful Number # +# Write a script to display all Colorful Number with 3 digits. # +# # +# A number can be declare Colorful Number where all the products of # +# consecutive subsets of digit are different. # +# # +# For example, 263 is a Colorful Number since 2, 6, 3, 2x6, 6x3, 2x6x3 # +# are unique. # +# # +########################################################################### + +# The range to search can be narrowed. +# 3 digit numbers gives us a beginning range of 100 .. 999 + +# Q(first appearance) == Q(second appearance) +# Numbers with repetitions are not colourful numbers. + +# 0 == ( Q x 0 ) +# Numbers with 0s are not colorful numbers. + +# Q == ( Q x 1 ) +# Numbers with 1s are not colorful numbers. + +# 100 no, 200, 230, 231, 232, 233 ... 234 seems right. +# 999 no, 989, 988 ... 987 seems right. + +MIN = 234 +MAX = 987 + +for i in range(MIN, MAX+1): + + printThis = True +# seen = {} + + d = list(str(i)) + d = list(map(int,d)) + + products = [ d[0], d[1], d[2], d[0]*d[1], d[1]*d[2], d[0]*d[1]*d[2] ] + + for prdt in products: + if products.count(prdt) > 1: + printThis = False +# else: +# seen.update({i : True}) + + if printThis: + print(i) + +# Output is 328 lines / numbers. +# output: +# +# 234 +# 235 +# 237 +# . +# . +# . +# 985 +# 986 +# 987 |
