project-euler

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 50e83740a55920001ca377f183dcd713e2109121
parent 8e58fd5a5f27496c8afc66b7ecc6c435feb9f731
Author: mpizzzle <michael.770211@gmail.com>
Date:   Sun,  1 Oct 2017 00:12:53 +0100

refactored Euler_98

Diffstat:
MEuler_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