mirror of
https://github.com/KevinMidboe/knowit_julekalender-2018.git
synced 2026-07-24 02:12:11 +00:00
11 down! Crosstown traffic 🎅🌶
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -0,0 +1,20 @@
|
||||
Sikk sakk
|
||||
|
||||
Julenissen har gjemt gavene til hele Norge, men har glemt hvor han la de. Heldigvis har han notert hvor de ligger. Notatet består av et tall for distanse, samt bokstavene H, V, F og B for retningene høyre, venstre, frem og bak.
|
||||
|
||||
Eksempelvis vil dette notatet:
|
||||
|
||||
2H2F2H3B
|
||||
føre til denne løypen:
|
||||
|
||||
456
|
||||
3 7
|
||||
012 8
|
||||
9
|
||||
med sluttkoordinat [x,y] = [4,-1].
|
||||
|
||||
Last ned notatet.
|
||||
|
||||
Gavene ligger i enden av løypen. Hva er sluttkoordinatet hvor gavene ligger?
|
||||
|
||||
Svaret skal være på formen [x,y] uten noe whitespace.
|
||||
Executable
+50
@@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
|
||||
def getFileContents(path='./input-crisscross.txt'):
|
||||
path = os.path.join(os.path.dirname(__file__), path)
|
||||
with open(path, 'r') as f:
|
||||
return f.read()
|
||||
|
||||
def IsNumber(s):
|
||||
try:
|
||||
float(s)
|
||||
return True
|
||||
except ValueError:
|
||||
return False
|
||||
|
||||
def decideDirection(cords, action, distance=1):
|
||||
if action == 'H':
|
||||
cords['x'] += int(distance)
|
||||
elif action == 'V':
|
||||
cords['x'] -= int(distance)
|
||||
elif action == 'F':
|
||||
cords['y'] += int(distance)
|
||||
elif action == 'B':
|
||||
cords['y'] -= int(distance)
|
||||
else:
|
||||
raise ValueError("Unable to parse action: '{}'".format(action))
|
||||
|
||||
def main():
|
||||
cords = { 'x': 0, 'y': 0}
|
||||
char_buffer = ''
|
||||
|
||||
note_containing_path = getFileContents()
|
||||
# note_containing_path = '2H2F2H3B'
|
||||
for char in note_containing_path:
|
||||
if IsNumber(char):
|
||||
char_buffer = str(char)
|
||||
continue
|
||||
|
||||
if char_buffer:
|
||||
char_buffer += char
|
||||
distance, char = [char_buffer[0],char_buffer[1]]
|
||||
decideDirection(cords, char, distance)
|
||||
else:
|
||||
decideDirection(cords, char)
|
||||
|
||||
return '[{},{}]'.format(cords['x'], cords['y'])
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
print(main())
|
||||
@@ -1,2 +1,4 @@
|
||||
from luke_11.sikksakk import main as sikksakk
|
||||
|
||||
def test_answer():
|
||||
assert False
|
||||
assert sikksakk() == '[-9418,6798]'
|
||||
|
||||
Reference in New Issue
Block a user