commit 50e83740a55920001ca377f183dcd713e2109121
parent 8e58fd5a5f27496c8afc66b7ecc6c435feb9f731
Author: mpizzzle <michael.770211@gmail.com>
Date: Sun, 1 Oct 2017 00:12:53 +0100
refactored Euler_98
Diffstat:
| M | Euler_98.py | | | 48 | ++++++++++++------------------------------------ |
1 file changed, 12 insertions(+), 36 deletions(-)
diff --git a/Euler_98.py b/Euler_98.py
@@ -4,42 +4,13 @@ import re
from sets import Set
from datetime import datetime
-def find_unique_squares():
- square_sets = []
- square_is_anagram = False
-
- for i in range(100000):
- square = i**2
-
- if len(str(square)) == len(Set([c for c in str(square)])):
- for square_set in square_sets:
- if sorted(str(square)) == sorted(str(square_set[0])):
- square_set.append(square)
- square_is_anagram = True
- break
-
- if not square_is_anagram:
- square_set = []
- square_set.append(square)
- square_sets.append(square_set)
-
- square_is_anagram = False
-
- squares = []
-
- for square_set in square_sets:
- if len(square_set) > 1:
- squares.append(square_set)
-
- return squares
-
def find_all_anagrams(words):
anagram_sets = []
- word_is_anagram = False
for word in words:
+ word_is_anagram = False
for anagram_set in anagram_sets:
- if sorted(word) == sorted(anagram_set[0]):
+ if sorted(str(word)) == sorted(str(anagram_set[0])):
anagram_set.append(word)
word_is_anagram = True
break
@@ -49,8 +20,6 @@ def find_all_anagrams(words):
anagram_set.append(word)
anagram_sets.append(anagram_set)
- word_is_anagram = False
-
anagrams = []
for anagram_set in anagram_sets:
@@ -59,13 +28,20 @@ def find_all_anagrams(words):
return anagrams
+def match_anagrams_with_squares(anagram_sets, square_sets):
+
+a = datetime.now()
+
with open('files/p098_words.txt') as f:
words = re.split('","',f.read()[1:-1])
-a = datetime.now()
+squares = []
+
+for i in range(100000):
+ if len(str(i**2)) == len(Set([c for c in str(i**2)])):
+ squares.append(i**2)
-anagram_sets = find_all_anagrams(words)
-square_sets = find_unique_squares()
+match_anagrams_with_squares(find_all_anagrams(words), find_all_anagrams(squares))
delta = datetime.now() - a