코드 출현 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 برای من راحته اینجا ازش استفاده کردیم وگرنه میتونید از هر زبان برنامه نویسی دگه هایکه دگه هایید هر
حتی میتونید دستی حساب کنید ولی چرا؟

좋은 웹페이지 즐겨찾기