خب قضیه از این قرار که باید ۲۵ چالش برنامه نویسی حل کینم تا هم امتیاز بگیریم و هم تو کارمون بهتر بشیم
همون طور که انتظار میره از مثال های آسون شروع میشه
قسمت اول
تو چالش اول هونظور که زیردریای داره پایین میره یه سری اعداد رو صفحه ظاهر میشن که ورودی پازل ماست
ماباید تمام اون اعدادی رو که از عدد قبلی خودش کوچیک تر هستن رو پیدا کنیم
قاعدتا چون اولین عدد هیچ عدد قبلی نداره به حساب نمیاد
خودش هم یه مثال زده
* 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} ]")
قسمت دوم
حالا گفته که اندازه گیری این اعداد به تنهایی مفید و کا آمد نیست و نویز زیادی در داده ها وجود داره
به از میانگین اندازه ها به دست اومده از سه پنجره استفاده میکنیم
خودش یه همچین مثالی زده
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} ]")
و در آخر فقط چون استفاده از پایتون برای من راحته اینجا ازش استفاده کردیم وگرنه میتونید از هر زبان برنامه نویسی دیگه ای هم استفاده کنید
حتی میتونید دستی حساب کنید ولی چرا؟
Discussion (0)