הא לכם סיפור מעניין: כל שנה, כחודש לפני ערב השנה האזרחית החדשה (Новый Год, סילבסטר, מה שתרצו), מתפרסם משחק שמתכנתים ברחבי העולם אוהבים מאוד ונקרא Advent of Code.
הקדמה
למי שלא מכיר – Advent of ... היא מעין ספירת ייאוש נוצרית עד שמגיעה השנה החדשה. חלק מהנוצרים חוגגים את הסיפור ממש עם לוח שנה של תקופת הציפייה שכולל ספירה של 24 עד 31 ימים לאחור, ובחלק מהלוחות הללו יש חלונות קטנים של מתנות סמליות, שהולכות ונהיות משמעותיות יותר ככל שמועד השנה החדשה מתקרב.
אחד המימושים האהובים עלי, לדוגמה, הוא Rum Advent Calendar, שבו בכל חלון שכזה יש בקבוקון רום.
יא חופר מה האתגר
מדובר באתר שלקראת השנה החדשה מפרסם תרגילי קוד חביבים, אחד כל יום, עד השנה החדשה.
חשבתי שיהיה נחמד להתחיל לפתור פה יחד אתכם את האתגרים שהיו בשנה האחרונה. מתוקף הנסיבות ומעצם זה שכולכם עמוסים, נחכה עד שיהיה מספר סביר של פתרונות לאתגר, ואחליט לפי זה מתי עובדים על היום הבא שפורסם ב־Advent of Code.
הבונוס הנחמד – אני אפרסם גם את הפתרון שלי לכל אחד מהתרגילים.
בכל “יום” באתגר יש שני תרגילים – השני נפתח רק אחרי שתפתרו את הראשון. במסגרת האתגר אנחנו נפתור את שניהם.
אז בואו נתחיל! הירשמו ל־Advent of Code ופרסמו פה את התשובה שלכם לשאלה הראשונה.
אתה שטותניק שזה משהו.
אם תעבוד איתי יום אחד ותכתוב שמות משתנים כאלו אני מכניס אותך למקרר ונועל את המשרד
8 לייקים
DissonantHarmony
מצטער, senpi!
פעם אחרונה שאני שם רווח לפני סוגריים בהגדרת פונקציה!
(אם אתה נועל אותי במקרר, אני מחסל לך את כל העוגות!
תמות נפשי עם קישטים!!!)
4 לייקים
aviadamar
- מקווה שסנתה מעריך את המאמץ חחח
הקוד שלי
def fuel_for_mass(mass):
if mass <= 5:
return 0
mass = (mass // 3) - 2
return fuel_for_mass(mass) + mass
def all_fuel_needed(all_masses):
total_fuel = 0
for star_mass in all_masses:
mass_as_int = int(star_mass)
total_fuel += fuel_for_mass(mass_as_int)
return total_fuel
with open('resources/all_masses.txt', 'r') as file:
all_masses = file.readlines()
all_fuel_needed(all_masses)
4 לייקים
orronai
חלק 1
def get_correct_fuel_amount(mass):
# Returns the fuel amount requiered from a specific mass
fuel = (mass // 3) - 2
return fuel
def get_fuel_requierments():
# Returns the sum of all the fuel amounts
total_amount = 0
with open(r"resources\adventofcode\fuels amounts.txt", 'r') as file:
for line in file.readlines():
total_amount += get_correct_fuel_amount(int(line))
return total_amount
print(get_fuel_requierments())
חלק 2
def get_correct_fuel_amount_and_repeat(mass):
# Returns the fuel amount requeired from a specific mass after calculating also the next calculations for the fuels
fuel = (mass // 3) - 2
if fuel <= 0:
return 0
return fuel + get_correct_fuel_amount_and_repeat(fuel)
def get_fuel_repeats_requierments():
# Returns the sum of all the fuel amounts after all the calculations
total_amount = 0
with open(r"resources\adventofcode\fuels amounts.txt", 'r') as file:
for line in file.readlines():
total_amount += get_correct_fuel_amount_and_repeat(int(line))
return total_amount
print(get_fuel_repeats_requierments())
2 לייקים
ori81510
נראה לי שכלכך נהנית עם השמות משתנים שלא שמת לב שכנראה יש לך טעות איפשהו. הפלט שלך קרוב, אבל לא התשובה המדוייקת
מעניין איפה הטעות… על פניו נראה סבבה
עריכה: נראה שאתה צודק! מצטער שהטלתי ספק בנכונות
לייק 1
yosefco3
fuel_1 היא הפונקציה שמחשבת לפי הבקשה בסעיף א , fuel_2 לפי הבקשה בסעיף ב’