코드의 출현1

음, 목표는 25가지 프로그래밍 문제를 해결하여 스타를 얻고 직장 생활을 더 잘하는 것입니다.

예상대로 쉬운 예제부터 시작합니다.

파트 1



첫 번째 챌린지(Sonar Sweep)에서는 잠수함이 하강하면서 아웃 퍼즐의 입력인 일련의 숫자가 화면에 나타납니다.

이전 숫자보다 큰 숫자를 모두 찾아야 합니다. 일반적으로 첫 번째 숫자에는 이전 숫자가 없기 때문에 첫 번째 숫자는 세지 않습니다.

adventofcode은 다음과 같은 예를 제시했습니다.



* 199 (N/A - no previous number)
+ 200 (increased)
+ 208 (increased)
+ 210 (increased)
- 200 (decreased)
+ 207 (increased)
+ 240 (increased)
+ 269 (increased)
- 260 (decreased)
+ 263 (increased)



이 예에서 답은 7 입니다. 이전 숫자에 비해 증가한 7개의 숫자이기 때문입니다.

입력 파일을 받은 후 프로그래밍 언어를 사용하여 문제를 해결합니다. 물론 수동으로 계산할 수도 있습니다 :)

여기서는 Python을 사용합니다.

입력 데이터 읽기



첫 번째 단계는 퍼즐의 입력을 읽고 데이터를 지우는 것입니다.

‍‍

with open("input.txt") as f:
    lines = f.readlines()
    numbers = [int(i.strip()) for i in lines]


데이터 반복 및 계산



다음 단계는 for 루프 또는 우리가 할 수 있는 방법을 사용하여 데이터를 반복하고 증가 여부를 확인하는 것입니다.

# create a variable containing the first number for first itration
prev_num = numbers[-1]

# on start result is 0
result = 0

for i in numbers:
    # check if the previous value is lower than the current value, increase count by 1
    if i > prev_num:
        result += 1

    # update the prev_num for the next iteration 
    prev_num = i

print(f"[ part1: {result} ]")


두 번째 부분



이제 다음과 같이 말합니다.

Considering every single measurment isn't as useful as you expected: ther's just too much noise in the data. Instead, consider sums of a three-measurment sliding window.



adventofcode은 다음과 같은 예를 제시했습니다.


‍‍‍‍‍

199  A      
200  A B    
208  A B C  
210    B C D
200  E   C D
207  E F   D
240  E F G  
269    F G H
260      G H
263        H



즉, 숫자를 3 x 3 더한 다음 비교해야 합니다.



A: 607 (N/A - no previous sum)
B: 618 (increased)
C: 618 (no change)
D: 617 (decreased)
E: 647 (increased)
F: 716 (increased)
G: 769 (increased)
H: 792 (increased)



이 예에서 대답은 5 입니다.

이제 이를 위한 프로그램을 작성해 봅시다.

# on start result is 0
result = 0

size = len(numbers)

# create a variable containing the sum of the first three-measurement sliding window
prev_window = sum(numbers[:3])

# iterate over the size of the depths file 
for i in range(3, size):
    # calculate the current three-measurement sliding window
    curr_window = prev_window + numbers[i] - numbers[i-3]

    # check if the previous value is lower than the current value, increase count by 1
    if prev_window < curr_window:
        result += 1 

    # update the prev_window for the next iteration 
    prev_window = curr_window

print(f"[ part2: {result} ]")


안녕 :)

좋은 웹페이지 즐겨찾기