initial commit

master
Arne Wischer 6 years ago
commit a6d4c09a28
  1. 129
      .gitignore
  2. 13
      advent.py
  3. 2
      days/__init__.py
  4. 33
      days/day1.py
  5. 100
      days/day1_input
  6. 8
      days/day2.py

129
.gitignore vendored

@ -0,0 +1,129 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/

@ -0,0 +1,13 @@
import days
import unittest
def suite():
suite = unittest.TestSuite()
suite.addTest(days.Day1('test_day1a'))
suite.addTest(days.Day1('test_day1b'))
suite.addTest(days.Day2('test_day2a'))
return suite
if __name__ == "__main__":
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite())

@ -0,0 +1,2 @@
from .day1 import Day1
from .day2 import Day2

@ -0,0 +1,33 @@
import unittest
import os
class Day1(unittest.TestCase):
inputfile = os.path.join(os.path.dirname(__file__), "day1_input")
def calc_fuel(self, mass):
fuel = mass // 3 - 2
if(fuel > 0):
return fuel + self.calc_fuel(fuel)
else:
return 0
def test_day1a(self):
fuel = 0
with open(self.inputfile) as fp:
value = fp.readline()
while value:
fuel += int(value) // 3 - 2
value = fp.readline()
self.assertEqual(fuel, 3402609)
def test_day1b(self):
with open(self.inputfile) as fp:
line = fp.readline()
sumfuel = 0
while line:
sumfuel += self.calc_fuel(int(line))
line = fp.readline()
self.assertEqual(sumfuel, 5101025)
if __name__ == "__main__":
unittest.main()

@ -0,0 +1,100 @@
109364
144584
87498
130293
91960
117563
91730
138879
144269
89058
89982
115609
114728
85422
111803
148524
130035
107558
138936
95622
58042
50697
86848
123301
123631
143125
76434
78004
91115
89062
58465
141127
139993
80958
104184
145131
87438
74385
102113
97392
105986
58600
147156
54377
61409
73552
87138
63168
149602
111776
113191
80137
145985
145177
73192
141631
132979
52565
126574
92005
134655
115894
89175
127328
139873
50072
78814
134750
120848
132950
126523
58206
70885
85482
70889
100029
68447
95111
79896
138650
83079
83112
117762
57223
138122
145193
85251
103331
134501
77023
148189
141341
75994
67024
137767
86260
58705
58771
60684
79655

@ -0,0 +1,8 @@
import unittest
class Day2(unittest.TestCase):
def test_day2a(self):
self.assertTrue(1 == 1)
if __name__ == "__main__":
unittest.main()
Loading…
Cancel
Save