Привет!
Это мой первый пост на Dev, и мой первый год пытается завершить появление кода.
РЕДАКТИРОВАТЬ
Упс! Это из 2015 Действительно Я начал Slack Channel на работе на AOC и использовал 2015 день 1 в качестве прогрева для группы. Название отредактировано, чтобы отразить это.
День 1 Часть 1
Я решил использовать Python 3, так как язык, с которым мне наиболее удобно решать небольшие проблемы, подобные этому. Я также пишу в Java на работе, поэтому, используя Python вот приятный способ оставаться острым и продолжать строить свои навыки на этом языке.
Day1Part1_v1.py
import re input_string = 'input.txt' with open(input_string, 'r') as input_file: for line in input_file: open_parens = re.findall(r'\(', line) close_parens = re.findall(r'\)',line) open_parens_count = len(open_parens) close_parens_count = len(close_parens) floor = open_parens_count - close_parens_count print("Santa, go to floor " + str(floor)) input_file.close()
Я хотел использовать Запросы
Модуль, чтобы получить текст ввода вместо того, чтобы сохранить до .текст
, Но тогда мне пришлось бы провести время в курсе способа войти в систему и установить сеанс в моем скрипте.
Использование Regex, вероятно, неожиданно, поскольку разыскиваются строковые шаблоны, являются лишь одиночными символами, но я так используется для использования Regex с помощью сценариев Python Parsing, что это то, что я тянутся из-за привычки.
Поэтому я решил реформировать после того, как увидел въезд коллеги и был пощечен количеством в результате в результате скобки в моем скрипте!
Day1Part1_v2.py
input_string = 'input.txt' with open(input_string, 'r') as input_file: for line in input_file: print("Floor #: " + str(len(line.split('('))-len((line.split(')')))))
1 день Часть 2
Я решил попробовать рефакторовать Третий Время, когда это было доведено до моего внимания, что была часть вторая! К счастью, моя третья версия оказалась, что поедет в направлении, который подходит мне потребности в этой проблеме, итерацией по каждому персонажу, поэтому я просто изменил его, чтобы затем решить для второй проблемы.
Я не помню, как или почему я пришел, чтобы использовать Оператор
модуль, кроме я, вероятно, искал что-то, чтобы сделать строковое сравнение таким образом, что у Java есть .equals
?
Day1Part2_v1.py
import operator input_string = 'input.txt' floor = 0 char_count = 0 in_basement = False with open(input_string, 'r') as input_file: for line in input_file: for char in line: if operator.eq('(',char): floor += 1 elif operator.eq(')',char): floor -= 1 else: print('invalid input') char_count += 1 if(floor < 0): if not in_basement: in_basement = True print("Entered basement at char: " + str(char_count)) print("Floor: " + str(floor)) input_file.close()
Мне было очень весело с этими головоломками! Я буду делать запись на 2 день, который я закончил, и (надеюсь) каждый день после их завершения.
Я, конечно, приветствую любую и все отзывы, так как моя основная цель в участии и обменах – быть лучшим программистом.
Спасибо за прочтение!
Оригинал: “https://dev.to/jonchiou/advent-of-code-2018—my-day-1-solutions-4ajb”