Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
87
Task/Fraction-reduction/Python/fraction-reduction.py
Normal file
87
Task/Fraction-reduction/Python/fraction-reduction.py
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
def indexOf(haystack, needle):
|
||||
idx = 0
|
||||
for straw in haystack:
|
||||
if straw == needle:
|
||||
return idx
|
||||
else:
|
||||
idx += 1
|
||||
return -1
|
||||
|
||||
def getDigits(n, le, digits):
|
||||
while n > 0:
|
||||
r = n % 10
|
||||
if r == 0 or indexOf(digits, r) >= 0:
|
||||
return False
|
||||
le -= 1
|
||||
digits[le] = r
|
||||
n = int(n / 10)
|
||||
return True
|
||||
|
||||
def removeDigit(digits, le, idx):
|
||||
pows = [1, 10, 100, 1000, 10000]
|
||||
sum = 0
|
||||
pow = pows[le - 2]
|
||||
i = 0
|
||||
while i < le:
|
||||
if i == idx:
|
||||
i += 1
|
||||
continue
|
||||
sum = sum + digits[i] * pow
|
||||
pow = int(pow / 10)
|
||||
i += 1
|
||||
return sum
|
||||
|
||||
def main():
|
||||
lims = [ [ 12, 97 ], [ 123, 986 ], [ 1234, 9875 ], [ 12345, 98764 ] ]
|
||||
count = [0 for i in range(5)]
|
||||
omitted = [[0 for i in range(10)] for j in range(5)]
|
||||
|
||||
i = 0
|
||||
while i < len(lims):
|
||||
n = lims[i][0]
|
||||
while n < lims[i][1]:
|
||||
nDigits = [0 for k in range(i + 2)]
|
||||
nOk = getDigits(n, i + 2, nDigits)
|
||||
if not nOk:
|
||||
n += 1
|
||||
continue
|
||||
d = n + 1
|
||||
while d <= lims[i][1] + 1:
|
||||
dDigits = [0 for k in range(i + 2)]
|
||||
dOk = getDigits(d, i + 2, dDigits)
|
||||
if not dOk:
|
||||
d += 1
|
||||
continue
|
||||
nix = 0
|
||||
while nix < len(nDigits):
|
||||
digit = nDigits[nix]
|
||||
dix = indexOf(dDigits, digit)
|
||||
if dix >= 0:
|
||||
rn = removeDigit(nDigits, i + 2, nix)
|
||||
rd = removeDigit(dDigits, i + 2, dix)
|
||||
if (1.0 * n / d) == (1.0 * rn / rd):
|
||||
count[i] += 1
|
||||
omitted[i][digit] += 1
|
||||
if count[i] <= 12:
|
||||
print "%d/%d = %d/%d by omitting %d's" % (n, d, rn, rd, digit)
|
||||
nix += 1
|
||||
d += 1
|
||||
n += 1
|
||||
print
|
||||
i += 1
|
||||
|
||||
i = 2
|
||||
while i <= 5:
|
||||
print "There are %d %d-digit fractions of which:" % (count[i - 2], i)
|
||||
j = 1
|
||||
while j <= 9:
|
||||
if omitted[i - 2][j] == 0:
|
||||
j += 1
|
||||
continue
|
||||
print "%6s have %d's omitted" % (omitted[i - 2][j], j)
|
||||
j += 1
|
||||
print
|
||||
i += 1
|
||||
return None
|
||||
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue