코드의 출현1
예상대로 쉬운 예제부터 시작합니다.
파트 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} ]")
안녕 :)
Reference
이 문제에 관하여(코드의 출현1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/yasinazadpour/advent-of-code-day1-4175
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
* 199 (N/A - no previous number)
+ 200 (increased)
+ 208 (increased)
+ 210 (increased)
- 200 (decreased)
+ 207 (increased)
+ 240 (increased)
+ 269 (increased)
- 260 (decreased)
+ 263 (increased)
with open("input.txt") as f:
lines = f.readlines()
numbers = [int(i.strip()) for i in lines]
# 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} ]")
안녕 :)
Reference
이 문제에 관하여(코드의 출현1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yasinazadpour/advent-of-code-day1-4175텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)