Рубрики
Без рубрики

Advent of Code 2015 – мой день 1 решения

Мои решения к появлению кода 2015 задач на день 1. Помечено AC2015, AdventOfCode, Python.

Привет!

Это мой первый пост на 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”