aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Cabergs <me@cacharle.xyz>2021-01-15 12:34:37 +0100
committerCharles Cabergs <me@cacharle.xyz>2021-01-15 12:34:37 +0100
commit599e9db538390cf83d8e1967f9da7795b20e3e48 (patch)
tree861a80212f49c2c7992eb047ec986c6349902cc2
parent74ac4927d7caad179c398b7bb8a54c71e783ef2e (diff)
downloadproject_euler-599e9db538390cf83d8e1967f9da7795b20e3e48.tar.gz
project_euler-599e9db538390cf83d8e1967f9da7795b20e3e48.tar.bz2
project_euler-599e9db538390cf83d8e1967f9da7795b20e3e48.zip
Added problem 33 in python
-rw-r--r--.gitignore2
-rw-r--r--python/033-digit_cancelling_fractions.py44
-rw-r--r--requirements.txt1
3 files changed, 47 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index d0da360..ccef705 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,5 @@ haskell/wip/*
rust/*
!rust/*.rs
+
+tags
diff --git a/python/033-digit_cancelling_fractions.py b/python/033-digit_cancelling_fractions.py
new file mode 100644
index 0000000..7154fa5
--- /dev/null
+++ b/python/033-digit_cancelling_fractions.py
@@ -0,0 +1,44 @@
+###
+# Digit cancelling fractions
+# Problem 33
+#
+# The fraction 49/98 is a curious fraction, as an inexperienced mathematician in attempting to simplify
+# it may incorrectly believe that 49/98 = 4/8, which is correct, is obtained by cancelling the 9s.
+#
+# We shall consider fractions like, 30/50 = 3/5, to be trivial examples.
+#
+# There are exactly four non-trivial examples of this type of fraction, less than one in value,
+# and containing two digits in the numerator and denominator.
+#
+# If the product of these four fractions is given in its lowest common terms, find the value of the denominator.
+###
+
+solution_n = 1
+solution_d = 1
+
+for n in range(10, 100):
+ for d in range(10, 100):
+ if n / d >= 1.0:
+ continue
+ if n % 10 == 0 or d % 10 == 0:
+ continue
+ sn = str(n)
+ sd = str(d)
+ if sn[0] in sd:
+ sd = sd.strip(sn[0])
+ sn = sn[1]
+ elif sn[1] in sd:
+ sd = sd.strip(sn[1])
+ sn = sn[0]
+ else:
+ continue
+ if len(sn) == 0 or len(sd) == 0 or float(sd) == 0:
+ continue
+ if int(sn)/ int(sd) == n / d:
+ print(n, "/", d)
+ solution_n *= n
+ solution_d *= d
+
+
+print(solution_n, "/", solution_d)
+print("= 1 / 100")
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..3aa7871
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1 @@
+ beautifulsoup4==4.9.3