mirror of
https://github.com/KevinMidboe/knowit_julekalender-2018.git
synced 2025-10-29 09:40:18 +00:00
11 down! Crosstown traffic 🎅🌶
This commit is contained in:
1
luke_11/input-crisscross.txt
Normal file
1
luke_11/input-crisscross.txt
Normal file
File diff suppressed because one or more lines are too long
20
luke_11/question.txt
Normal file
20
luke_11/question.txt
Normal file
@@ -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.
|
||||
50
luke_11/sikksakk.py
Executable file
50
luke_11/sikksakk.py
Executable file
@@ -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