From 1a24b3cd77006f9697c6be15a4eeef07a9e0988d Mon Sep 17 00:00:00 2001 From: Ted Brookings Date: Mon, 13 Feb 2017 17:12:18 -0500 Subject: [PATCH] Made project more friendly to non-linux peeps --- ToDo.txt | 6 +----- __init__.py | 0 001.py => euler001.py | 0 002.py => euler002.py | 0 003.py => euler003.py | 0 004.py => euler004.py | 0 005.py => euler005.py | 0 006.py => euler006.py | 0 007.py => euler007.py | 0 008.py => euler008.py | 0 009.py => euler009.py | 0 010.py => euler010.py | 0 011.py => euler011.py | 0 012.py => euler012.py | 0 013.py => euler013.py | 0 014.py => euler014.py | 0 015.py => euler015.py | 0 016.py => euler016.py | 0 017.py => euler017.py | 0 018.py => euler018.py | 0 019.py => euler019.py | 0 020.py => euler020.py | 0 021.py => euler021.py | 0 022.py => euler022.py | 0 023.py => euler023.py | 0 024.py => euler024.py | 0 025.py => euler025.py | 0 026.py => euler026.py | 0 027.py => euler027.py | 0 028.py => euler028.py | 0 029.py => euler029.py | 0 030.py => euler030.py | 0 031.py => euler031.py | 0 032.py => euler032.py | 0 033.py => euler033.py | 0 034.py => euler034.py | 0 035.py => euler035.py | 0 036.py => euler036.py | 0 037.py => euler037.py | 0 038.py => euler038.py | 0 039.py => euler039.py | 0 040.py => euler040.py | 0 041.py => euler041.py | 0 042.py => euler042.py | 0 067.py => euler067.py | 0 euler.py => run_euler.py | 26 ++++++++++++++------------ 46 files changed, 15 insertions(+), 17 deletions(-) create mode 100644 __init__.py rename 001.py => euler001.py (100%) rename 002.py => euler002.py (100%) rename 003.py => euler003.py (100%) rename 004.py => euler004.py (100%) rename 005.py => euler005.py (100%) rename 006.py => euler006.py (100%) rename 007.py => euler007.py (100%) rename 008.py => euler008.py (100%) rename 009.py => euler009.py (100%) rename 010.py => euler010.py (100%) rename 011.py => euler011.py (100%) rename 012.py => euler012.py (100%) rename 013.py => euler013.py (100%) rename 014.py => euler014.py (100%) rename 015.py => euler015.py (100%) rename 016.py => euler016.py (100%) rename 017.py => euler017.py (100%) rename 018.py => euler018.py (100%) rename 019.py => euler019.py (100%) rename 020.py => euler020.py (100%) rename 021.py => euler021.py (100%) rename 022.py => euler022.py (100%) rename 023.py => euler023.py (100%) rename 024.py => euler024.py (100%) rename 025.py => euler025.py (100%) rename 026.py => euler026.py (100%) rename 027.py => euler027.py (100%) rename 028.py => euler028.py (100%) rename 029.py => euler029.py (100%) rename 030.py => euler030.py (100%) rename 031.py => euler031.py (100%) rename 032.py => euler032.py (100%) rename 033.py => euler033.py (100%) rename 034.py => euler034.py (100%) rename 035.py => euler035.py (100%) rename 036.py => euler036.py (100%) rename 037.py => euler037.py (100%) rename 038.py => euler038.py (100%) rename 039.py => euler039.py (100%) rename 040.py => euler040.py (100%) rename 041.py => euler041.py (100%) rename 042.py => euler042.py (100%) rename 067.py => euler067.py (100%) rename euler.py => run_euler.py (63%) diff --git a/ToDo.txt b/ToDo.txt index fa429fb..e13e38b 100644 --- a/ToDo.txt +++ b/ToDo.txt @@ -7,9 +7,5 @@ Do more problems Make all euler functions return answer so that verified answers can be used in unit tests - -Need to rename problem files to start with a letter, since python has - trouble importing files whose name starts with a number -Make all problem files use argparse to pass arguments - -In the future, always unit tests first +Make all problem files use argparse to pass arguments \ No newline at end of file diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/001.py b/euler001.py similarity index 100% rename from 001.py rename to euler001.py diff --git a/002.py b/euler002.py similarity index 100% rename from 002.py rename to euler002.py diff --git a/003.py b/euler003.py similarity index 100% rename from 003.py rename to euler003.py diff --git a/004.py b/euler004.py similarity index 100% rename from 004.py rename to euler004.py diff --git a/005.py b/euler005.py similarity index 100% rename from 005.py rename to euler005.py diff --git a/006.py b/euler006.py similarity index 100% rename from 006.py rename to euler006.py diff --git a/007.py b/euler007.py similarity index 100% rename from 007.py rename to euler007.py diff --git a/008.py b/euler008.py similarity index 100% rename from 008.py rename to euler008.py diff --git a/009.py b/euler009.py similarity index 100% rename from 009.py rename to euler009.py diff --git a/010.py b/euler010.py similarity index 100% rename from 010.py rename to euler010.py diff --git a/011.py b/euler011.py similarity index 100% rename from 011.py rename to euler011.py diff --git a/012.py b/euler012.py similarity index 100% rename from 012.py rename to euler012.py diff --git a/013.py b/euler013.py similarity index 100% rename from 013.py rename to euler013.py diff --git a/014.py b/euler014.py similarity index 100% rename from 014.py rename to euler014.py diff --git a/015.py b/euler015.py similarity index 100% rename from 015.py rename to euler015.py diff --git a/016.py b/euler016.py similarity index 100% rename from 016.py rename to euler016.py diff --git a/017.py b/euler017.py similarity index 100% rename from 017.py rename to euler017.py diff --git a/018.py b/euler018.py similarity index 100% rename from 018.py rename to euler018.py diff --git a/019.py b/euler019.py similarity index 100% rename from 019.py rename to euler019.py diff --git a/020.py b/euler020.py similarity index 100% rename from 020.py rename to euler020.py diff --git a/021.py b/euler021.py similarity index 100% rename from 021.py rename to euler021.py diff --git a/022.py b/euler022.py similarity index 100% rename from 022.py rename to euler022.py diff --git a/023.py b/euler023.py similarity index 100% rename from 023.py rename to euler023.py diff --git a/024.py b/euler024.py similarity index 100% rename from 024.py rename to euler024.py diff --git a/025.py b/euler025.py similarity index 100% rename from 025.py rename to euler025.py diff --git a/026.py b/euler026.py similarity index 100% rename from 026.py rename to euler026.py diff --git a/027.py b/euler027.py similarity index 100% rename from 027.py rename to euler027.py diff --git a/028.py b/euler028.py similarity index 100% rename from 028.py rename to euler028.py diff --git a/029.py b/euler029.py similarity index 100% rename from 029.py rename to euler029.py diff --git a/030.py b/euler030.py similarity index 100% rename from 030.py rename to euler030.py diff --git a/031.py b/euler031.py similarity index 100% rename from 031.py rename to euler031.py diff --git a/032.py b/euler032.py similarity index 100% rename from 032.py rename to euler032.py diff --git a/033.py b/euler033.py similarity index 100% rename from 033.py rename to euler033.py diff --git a/034.py b/euler034.py similarity index 100% rename from 034.py rename to euler034.py diff --git a/035.py b/euler035.py similarity index 100% rename from 035.py rename to euler035.py diff --git a/036.py b/euler036.py similarity index 100% rename from 036.py rename to euler036.py diff --git a/037.py b/euler037.py similarity index 100% rename from 037.py rename to euler037.py diff --git a/038.py b/euler038.py similarity index 100% rename from 038.py rename to euler038.py diff --git a/039.py b/euler039.py similarity index 100% rename from 039.py rename to euler039.py diff --git a/040.py b/euler040.py similarity index 100% rename from 040.py rename to euler040.py diff --git a/041.py b/euler041.py similarity index 100% rename from 041.py rename to euler041.py diff --git a/042.py b/euler042.py similarity index 100% rename from 042.py rename to euler042.py diff --git a/067.py b/euler067.py similarity index 100% rename from 067.py rename to euler067.py diff --git a/euler.py b/run_euler.py similarity index 63% rename from euler.py rename to run_euler.py index ea9d40b..6c835e8 100755 --- a/euler.py +++ b/run_euler.py @@ -3,6 +3,8 @@ import os import time +import euler +import pkgutil _colors = { @@ -40,18 +42,18 @@ def isEulerFile(f): def runAllEuler(eulerDir, exeColor='boldYellow', scriptColor='white'): - dirList = os.listdir(eulerDir) - dirList.sort() - timeCmd = '/usr/bin/time -f "\tElapsedTime: %U"' - for f in dirList: - if isEulerFile(f): - # execute the script - print(_colors[exeColor] + 'executing %s' % f + _colors[scriptColor]) - os.system(timeCmd + ' ' + os.path.join(eulerDir, f)) - print(_colors['endColor']) - - - + for importer, moduleName, ispackage in pkgutil.iter_modules(euler.__path__): + if not moduleName.startswith('euler'): + continue + print(_colors[exeColor] + 'executing %s' % moduleName + _colors[scriptColor]) + funcName = 'euler' + str( int( moduleName[-3:])) + module = importer.find_module(moduleName).load_module(moduleName) + func = getattr( module, funcName ) + startTime = time.time() + func() + endTime = time.time() + print( 'Completed in %.1f seconds' % (endTime - startTime) ) + print(_colors['endColor']) if __name__ == "__main__":