코드 출현 2021 1일차
همون طور که انتظار میره از مثال های آSON شروع میشه
콰싯 오울
تو چالش اول هونظور که زیریای داره پایین میره یه سری اعداد رو صفحه ظاهر میشن که ورودی پازل ماست
ماباید تمام اون اعدادی رو که از عدد قبلی خودش کوچیک تر هستن رو پیدا کنیم
قاعدتا چون اولین عدد هیچ عدد قبلی نداره به حساب نمیاد
هم یه مثال زده
* 199 (N/A - no previous measurement)
+ 200 (increased)
+ 208 (increased)
+ 210 (increased)
- 200 (decreased)
+ 207 (increased)
+ 240 (increased)
+ 269 (increased)
- 260 (decreased)
+ 263 (increased)
تو این مثال جواب میشه 7
그래서 우리는 당신의 삶을 살 수 있습니다.
بعد از اینکه فایل ورودی رو دریافت کردیم میریم سراغ حل مسله با استفاده از یه زبان برنامه نویسی
미토콘드리아 라우 데스티 하므 히사브 카니드 :)
اینجا ما از پایتون استفاده میکنیم
힌든 디타
قدم اول اینکه ما ورودی پازل 로우 버림 و 디티타 های اون رو تمیز کنیم
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]
# in 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} ]")
قسمت dom
حالا گفته که اندازه گیری این اعداد به تنهایی مفید و کا آمد نیEST و نویز زیادی در داده ها وجود داره
به از میانگین اندازه ها به دست اومده از سه پنجره استفاده میکنیم
خودشیه همچین مثالی زده
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
در واقع یه همچین چیزی
سه تا سه می زنیم و بعد با هم مقایسه میکینم
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
هست
حالا میریم سراغ نوشتن یه برنامه برای اینکار
# in 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} ]")
و در آخر فقط چون استفاده از پایton برای من راحته اینجا ازش استفاده کردیم وگرنه میتونید از هر زبان برنامه نویسی دگه هایکه دگه هایید هر
حتی میتونید دستی حساب کنید ولی چرا؟
Reference
이 문제에 관하여(코드 출현 2021 1일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/yasinazadpour/advented-of-code-2021-day-1-4mkp
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
* 199 (N/A - no previous measurement)
+ 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]
# in 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} ]")
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
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)
# in 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
이 문제에 관하여(코드 출현 2021 1일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yasinazadpour/advented-of-code-2021-day-1-4mkp텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)