added templates and day 1's input and example1.
This commit is contained in:
		
							parent
							
								
									e8deae0a61
								
							
						
					
					
						commit
						7fd7d753bb
					
				
					 6 changed files with 371 additions and 0 deletions
				
			
		
							
								
								
									
										13
									
								
								Pipfile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								Pipfile
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,13 @@
 | 
				
			||||||
 | 
					[[source]]
 | 
				
			||||||
 | 
					url = "https://pypi.org/simple"
 | 
				
			||||||
 | 
					verify_ssl = true
 | 
				
			||||||
 | 
					name = "pypi"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[packages]
 | 
				
			||||||
 | 
					parse = "*"
 | 
				
			||||||
 | 
					pytest = "*"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[dev-packages]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[requires]
 | 
				
			||||||
 | 
					python_version = "3.9"
 | 
				
			||||||
							
								
								
									
										91
									
								
								Pipfile.lock
									
										
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								Pipfile.lock
									
										
									
										generated
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,91 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    "_meta": {
 | 
				
			||||||
 | 
					        "hash": {
 | 
				
			||||||
 | 
					            "sha256": "0f2e2e1eec7667a0a76ab90193491e106610a921be445eef118b5d170f2d175e"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "pipfile-spec": 6,
 | 
				
			||||||
 | 
					        "requires": {
 | 
				
			||||||
 | 
					            "python_version": "3.9"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "sources": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "name": "pypi",
 | 
				
			||||||
 | 
					                "url": "https://pypi.org/simple",
 | 
				
			||||||
 | 
					                "verify_ssl": true
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "default": {
 | 
				
			||||||
 | 
					        "attrs": {
 | 
				
			||||||
 | 
					            "hashes": [
 | 
				
			||||||
 | 
					                "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6",
 | 
				
			||||||
 | 
					                "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "markers": "python_version >= '3.5'",
 | 
				
			||||||
 | 
					            "version": "==22.1.0"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "iniconfig": {
 | 
				
			||||||
 | 
					            "hashes": [
 | 
				
			||||||
 | 
					                "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3",
 | 
				
			||||||
 | 
					                "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "version": "==1.1.1"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "packaging": {
 | 
				
			||||||
 | 
					            "hashes": [
 | 
				
			||||||
 | 
					                "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb",
 | 
				
			||||||
 | 
					                "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "markers": "python_version >= '3.6'",
 | 
				
			||||||
 | 
					            "version": "==21.3"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "parse": {
 | 
				
			||||||
 | 
					            "hashes": [
 | 
				
			||||||
 | 
					                "sha256:9ff82852bcb65d139813e2a5197627a94966245c897796760a3a2a8eb66f020b"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "index": "pypi",
 | 
				
			||||||
 | 
					            "version": "==1.19.0"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "pluggy": {
 | 
				
			||||||
 | 
					            "hashes": [
 | 
				
			||||||
 | 
					                "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159",
 | 
				
			||||||
 | 
					                "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "markers": "python_version >= '3.6'",
 | 
				
			||||||
 | 
					            "version": "==1.0.0"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "py": {
 | 
				
			||||||
 | 
					            "hashes": [
 | 
				
			||||||
 | 
					                "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719",
 | 
				
			||||||
 | 
					                "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
 | 
				
			||||||
 | 
					            "version": "==1.11.0"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "pyparsing": {
 | 
				
			||||||
 | 
					            "hashes": [
 | 
				
			||||||
 | 
					                "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb",
 | 
				
			||||||
 | 
					                "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "markers": "python_full_version >= '3.6.8'",
 | 
				
			||||||
 | 
					            "version": "==3.0.9"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "pytest": {
 | 
				
			||||||
 | 
					            "hashes": [
 | 
				
			||||||
 | 
					                "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c",
 | 
				
			||||||
 | 
					                "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "index": "pypi",
 | 
				
			||||||
 | 
					            "version": "==7.1.2"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "tomli": {
 | 
				
			||||||
 | 
					            "hashes": [
 | 
				
			||||||
 | 
					                "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc",
 | 
				
			||||||
 | 
					                "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "markers": "python_version >= '3.7'",
 | 
				
			||||||
 | 
					            "version": "==2.0.1"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "develop": {}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										6
									
								
								day1/example1
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								day1/example1
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,6 @@
 | 
				
			||||||
 | 
					1721
 | 
				
			||||||
 | 
					979
 | 
				
			||||||
 | 
					366
 | 
				
			||||||
 | 
					299
 | 
				
			||||||
 | 
					675
 | 
				
			||||||
 | 
					1456
 | 
				
			||||||
							
								
								
									
										200
									
								
								day1/input
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										200
									
								
								day1/input
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,200 @@
 | 
				
			||||||
 | 
					1772
 | 
				
			||||||
 | 
					1065
 | 
				
			||||||
 | 
					1827
 | 
				
			||||||
 | 
					1671
 | 
				
			||||||
 | 
					1181
 | 
				
			||||||
 | 
					1915
 | 
				
			||||||
 | 
					1657
 | 
				
			||||||
 | 
					1632
 | 
				
			||||||
 | 
					1053
 | 
				
			||||||
 | 
					1546
 | 
				
			||||||
 | 
					1039
 | 
				
			||||||
 | 
					1388
 | 
				
			||||||
 | 
					1698
 | 
				
			||||||
 | 
					1174
 | 
				
			||||||
 | 
					1275
 | 
				
			||||||
 | 
					1250
 | 
				
			||||||
 | 
					1988
 | 
				
			||||||
 | 
					1078
 | 
				
			||||||
 | 
					1075
 | 
				
			||||||
 | 
					1958
 | 
				
			||||||
 | 
					1617
 | 
				
			||||||
 | 
					1387
 | 
				
			||||||
 | 
					1543
 | 
				
			||||||
 | 
					1965
 | 
				
			||||||
 | 
					1867
 | 
				
			||||||
 | 
					1771
 | 
				
			||||||
 | 
					1755
 | 
				
			||||||
 | 
					1331
 | 
				
			||||||
 | 
					1677
 | 
				
			||||||
 | 
					1935
 | 
				
			||||||
 | 
					1488
 | 
				
			||||||
 | 
					911
 | 
				
			||||||
 | 
					1001
 | 
				
			||||||
 | 
					1516
 | 
				
			||||||
 | 
					1949
 | 
				
			||||||
 | 
					1626
 | 
				
			||||||
 | 
					1083
 | 
				
			||||||
 | 
					1402
 | 
				
			||||||
 | 
					1223
 | 
				
			||||||
 | 
					1179
 | 
				
			||||||
 | 
					2001
 | 
				
			||||||
 | 
					1790
 | 
				
			||||||
 | 
					1551
 | 
				
			||||||
 | 
					1117
 | 
				
			||||||
 | 
					1990
 | 
				
			||||||
 | 
					1968
 | 
				
			||||||
 | 
					1532
 | 
				
			||||||
 | 
					1999
 | 
				
			||||||
 | 
					1175
 | 
				
			||||||
 | 
					1126
 | 
				
			||||||
 | 
					1869
 | 
				
			||||||
 | 
					1666
 | 
				
			||||||
 | 
					1753
 | 
				
			||||||
 | 
					513
 | 
				
			||||||
 | 
					1349
 | 
				
			||||||
 | 
					1139
 | 
				
			||||||
 | 
					1941
 | 
				
			||||||
 | 
					1823
 | 
				
			||||||
 | 
					1647
 | 
				
			||||||
 | 
					1835
 | 
				
			||||||
 | 
					1943
 | 
				
			||||||
 | 
					1459
 | 
				
			||||||
 | 
					1833
 | 
				
			||||||
 | 
					1398
 | 
				
			||||||
 | 
					1877
 | 
				
			||||||
 | 
					1625
 | 
				
			||||||
 | 
					1749
 | 
				
			||||||
 | 
					1631
 | 
				
			||||||
 | 
					1864
 | 
				
			||||||
 | 
					1826
 | 
				
			||||||
 | 
					1499
 | 
				
			||||||
 | 
					1336
 | 
				
			||||||
 | 
					1264
 | 
				
			||||||
 | 
					1091
 | 
				
			||||||
 | 
					1558
 | 
				
			||||||
 | 
					1321
 | 
				
			||||||
 | 
					1754
 | 
				
			||||||
 | 
					1729
 | 
				
			||||||
 | 
					1585
 | 
				
			||||||
 | 
					1740
 | 
				
			||||||
 | 
					1767
 | 
				
			||||||
 | 
					1774
 | 
				
			||||||
 | 
					1164
 | 
				
			||||||
 | 
					1318
 | 
				
			||||||
 | 
					1930
 | 
				
			||||||
 | 
					1236
 | 
				
			||||||
 | 
					1995
 | 
				
			||||||
 | 
					1611
 | 
				
			||||||
 | 
					1319
 | 
				
			||||||
 | 
					1361
 | 
				
			||||||
 | 
					1119
 | 
				
			||||||
 | 
					1563
 | 
				
			||||||
 | 
					1578
 | 
				
			||||||
 | 
					1047
 | 
				
			||||||
 | 
					1797
 | 
				
			||||||
 | 
					1787
 | 
				
			||||||
 | 
					1038
 | 
				
			||||||
 | 
					1921
 | 
				
			||||||
 | 
					1656
 | 
				
			||||||
 | 
					1898
 | 
				
			||||||
 | 
					1828
 | 
				
			||||||
 | 
					1727
 | 
				
			||||||
 | 
					1825
 | 
				
			||||||
 | 
					2010
 | 
				
			||||||
 | 
					536
 | 
				
			||||||
 | 
					1395
 | 
				
			||||||
 | 
					1865
 | 
				
			||||||
 | 
					1882
 | 
				
			||||||
 | 
					1638
 | 
				
			||||||
 | 
					1954
 | 
				
			||||||
 | 
					1565
 | 
				
			||||||
 | 
					1296
 | 
				
			||||||
 | 
					1723
 | 
				
			||||||
 | 
					1187
 | 
				
			||||||
 | 
					60
 | 
				
			||||||
 | 
					1130
 | 
				
			||||||
 | 
					1102
 | 
				
			||||||
 | 
					1963
 | 
				
			||||||
 | 
					1048
 | 
				
			||||||
 | 
					1493
 | 
				
			||||||
 | 
					1795
 | 
				
			||||||
 | 
					472
 | 
				
			||||||
 | 
					1496
 | 
				
			||||||
 | 
					1278
 | 
				
			||||||
 | 
					1444
 | 
				
			||||||
 | 
					1889
 | 
				
			||||||
 | 
					860
 | 
				
			||||||
 | 
					1975
 | 
				
			||||||
 | 
					1961
 | 
				
			||||||
 | 
					1070
 | 
				
			||||||
 | 
					1570
 | 
				
			||||||
 | 
					1495
 | 
				
			||||||
 | 
					1644
 | 
				
			||||||
 | 
					1881
 | 
				
			||||||
 | 
					1293
 | 
				
			||||||
 | 
					1090
 | 
				
			||||||
 | 
					1906
 | 
				
			||||||
 | 
					1385
 | 
				
			||||||
 | 
					1549
 | 
				
			||||||
 | 
					1143
 | 
				
			||||||
 | 
					1195
 | 
				
			||||||
 | 
					2004
 | 
				
			||||||
 | 
					1397
 | 
				
			||||||
 | 
					1032
 | 
				
			||||||
 | 
					1681
 | 
				
			||||||
 | 
					2000
 | 
				
			||||||
 | 
					1574
 | 
				
			||||||
 | 
					1400
 | 
				
			||||||
 | 
					1911
 | 
				
			||||||
 | 
					1868
 | 
				
			||||||
 | 
					1917
 | 
				
			||||||
 | 
					1872
 | 
				
			||||||
 | 
					1696
 | 
				
			||||||
 | 
					1086
 | 
				
			||||||
 | 
					1291
 | 
				
			||||||
 | 
					1761
 | 
				
			||||||
 | 
					1703
 | 
				
			||||||
 | 
					1202
 | 
				
			||||||
 | 
					1486
 | 
				
			||||||
 | 
					1705
 | 
				
			||||||
 | 
					1924
 | 
				
			||||||
 | 
					1186
 | 
				
			||||||
 | 
					1676
 | 
				
			||||||
 | 
					1615
 | 
				
			||||||
 | 
					1951
 | 
				
			||||||
 | 
					1556
 | 
				
			||||||
 | 
					1604
 | 
				
			||||||
 | 
					1534
 | 
				
			||||||
 | 
					2002
 | 
				
			||||||
 | 
					1334
 | 
				
			||||||
 | 
					1109
 | 
				
			||||||
 | 
					1108
 | 
				
			||||||
 | 
					1713
 | 
				
			||||||
 | 
					1422
 | 
				
			||||||
 | 
					1909
 | 
				
			||||||
 | 
					1418
 | 
				
			||||||
 | 
					1592
 | 
				
			||||||
 | 
					1887
 | 
				
			||||||
 | 
					1037
 | 
				
			||||||
 | 
					1568
 | 
				
			||||||
 | 
					1914
 | 
				
			||||||
 | 
					1780
 | 
				
			||||||
 | 
					1929
 | 
				
			||||||
 | 
					1973
 | 
				
			||||||
 | 
					1684
 | 
				
			||||||
 | 
					1581
 | 
				
			||||||
 | 
					1148
 | 
				
			||||||
 | 
					1931
 | 
				
			||||||
 | 
					1619
 | 
				
			||||||
 | 
					1082
 | 
				
			||||||
 | 
					1166
 | 
				
			||||||
 | 
					1913
 | 
				
			||||||
 | 
					1312
 | 
				
			||||||
 | 
					1330
 | 
				
			||||||
 | 
					1540
 | 
				
			||||||
 | 
					1841
 | 
				
			||||||
 | 
					1977
 | 
				
			||||||
 | 
					1769
 | 
				
			||||||
 | 
					1691
 | 
				
			||||||
 | 
					1821
 | 
				
			||||||
							
								
								
									
										29
									
								
								template.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								template.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,29 @@
 | 
				
			||||||
 | 
					# aoc_template.py
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import pathlib
 | 
				
			||||||
 | 
					import sys
 | 
				
			||||||
 | 
					import parse
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def parse(puzzle_input):
 | 
				
			||||||
 | 
					    """Parse input"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def part1(data):
 | 
				
			||||||
 | 
					    """Solve part 1"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def part2(data):
 | 
				
			||||||
 | 
					    """Solve part 2"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def solve(puzzle_input):
 | 
				
			||||||
 | 
					    """Solve the puzzle for the given input"""
 | 
				
			||||||
 | 
					    data = parse(puzzle_input)
 | 
				
			||||||
 | 
					    solution1 = part1(data)
 | 
				
			||||||
 | 
					    solution2 = part2(data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return solution1, solution2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == "__main__":
 | 
				
			||||||
 | 
					    for path in sys.argv[1:]:
 | 
				
			||||||
 | 
					        print(f"{path}:")
 | 
				
			||||||
 | 
					        puzzle_input = pathlib.Path(path).read_text().strip()
 | 
				
			||||||
 | 
					        solutions = solve(puzzle_input)
 | 
				
			||||||
 | 
					        print("\n".join(str(solution) for solution in solutions))
 | 
				
			||||||
							
								
								
									
										32
									
								
								test_template.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								test_template.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,32 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import pathlib
 | 
				
			||||||
 | 
					import pytest
 | 
				
			||||||
 | 
					import template as aoc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PUZZLE_DIR = pathlib.Path(__file__).parent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#these test fixtures setup the test, mainly by reading the filename into a string in this simple case.
 | 
				
			||||||
 | 
					@pytest.fixture
 | 
				
			||||||
 | 
					def example1():
 | 
				
			||||||
 | 
					    puzzle_input = (PUZZLE_DIR / "example1").read_text().strip()
 | 
				
			||||||
 | 
					    return aoc.parse(puzzle_input)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@pytest.fixture
 | 
				
			||||||
 | 
					def example2():
 | 
				
			||||||
 | 
					    puzzle_input = (PUZZLE_DIR / "example2").read_text().strip()
 | 
				
			||||||
 | 
					    return aoc.parse(puzzle_input)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@pytest.mark.skip(reason="Not implemented")
 | 
				
			||||||
 | 
					def test_parse_example1(example1):
 | 
				
			||||||
 | 
					    """Test that input is parsed properly"""
 | 
				
			||||||
 | 
					    assert example1 == ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@pytest.mark.skip(reason="Not implemented")
 | 
				
			||||||
 | 
					def test_part1_example1(example1):
 | 
				
			||||||
 | 
					    """Test part 1 on example input"""
 | 
				
			||||||
 | 
					    assert aoc.part1(example1) == ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@pytest.mark.skip(reason="Not implemented")
 | 
				
			||||||
 | 
					def test_part2_example2(example2):
 | 
				
			||||||
 | 
					    """Test part 2 on example input"""
 | 
				
			||||||
 | 
					    assert aoc.part2(example2) == ...
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue