בואו נשבור את הראש וננסה לפתור אותן לפי הסדר. זה לא משנה באיזה שפת תכנות בוחרים. מוזמנים להדביק כאן פיתרונות שלכם ולקבל לבבות ו/או הערות על הקוד (או יותר טוב להגיב על פיתרונות של אחרים ולסמן להם לבבות)
המונח Captcha מתיחס לחידות שרק בני אדם יכולים לפתור ותוכנות אוטומטיות מאוד יתקשו בהן. הקפצ׳ה ההפוכה היא חידה שרק מחשב יכול לפתור. בתרגיל הראשון אנחנו מקבלים סידרה של ספרות וצריכים למצוא מהו סכום כל הספרות הזהות לסיפרה שבאה אחריהן. הרשימה היא מעגלית.
לדוגמא בסידרה 1122 הסכום הוא 3. הסיפרה הראשונה 1 זהה לסיפרה שבאה אחריה, אחרי זה יש 1 שלא זהה ל-2 שבאה אחריה אז היא לא נספרת, אחריה 2 שזהה ל-2 שבאה אחריה (עד עכשיו ספרנו 3) ובסוף 2 שלא זהה ל-1 שבאה אחריה (זיכרו הרשימה מעגלית) ולכן לא נספרת.
בסידרה 1111 הסכום הוא 4 כי כל אחת מהספרות זהה לסיפרה שבאה אחריה.
בסידרה 91212129 הסכום הוא 9 כי רק הסיפרה 9 האחרונה זהה לסיפרה שבאה אחריה (ה-9 הראשונה).
האתגר שלכם - כיתבו קוד באיזושהי שפת תכנות שמקבל סידרה ומחשב את סכום הספרות שזהות לאלה שבאות אחריהן.
הדביקו כאן את הקוד שכתבתם כדי לקבל פידבק מחברים או סתם לעוף על עצמכם שאתם אלופים
(ואחרי שעשיתם את זה מוזמנים להירשם אצל אריק ב advent of code. הוא ייתן לכם קלט אישי שיוצר במיוחד עבורכם ואחרי שתפתרו אותו תקבלו גם כוכב באתר).
שם החידות מלוות בבדיקות אוטומטיות שבודקות און ליין את התשובות
בדרך כלל שם אתה מצליח לפתור אבל נופל בכל מיני מקרה קצה של החידה (כך אתה לומד לחשוב תמיד על כל המקרים שיכולים להיות)
string = [int(i) for i in str(11233441)]
flag = 0
res = 0
for index,item in enumerate(string):
if flag < len(string) - 1 and item == string[index + 1]:
res += int(item)
flag += 1
if string[0] == string [-1]:
res += int(string[0])
print res
“”"
get a number and calculate the sequences digits
“”"
print (“enter your number” )
num=int(input())
firstDigit=int(num%10)
sum=0
while num>=10:
temp=int(num%10)
num=int(num/10)
if int(num%10)==temp:
sum+=temp
if firstDigit==int(num):
sum+=firstDigit
print("sum of sequences numbers: ",sum)
בגדול מבחינת קוד זה אומר לפתוח שורה חדשה, לכתוב שלוש פעמים גרש הפוך (הסימן הזה `) ואז שורה חדשה נוספת ואז הקוד. מסיימים שוב ב-3 פעמים גרש הפוך. זה יוצא ככה:
לא כתבתי אבל מתכנן לתרגם ולפרסם כאן את הבעיות מ Advent Of Code בקצב של שתיים בשבוע כלומר הבאה בתור תגיע ביום שלישי. המטרה להגיע מוכנים לדצמבר אז אריק ווסטל יפרסם את הסידרה הבאה שלו
טוב אז התאמצתי עוד קצת וכתבתי בדיקה יותר גנרית המגרילה מספרים בעצמה
הבעיה שזה לא תמיד עובד
אשמח שתסביר לי למה
תודה
import unittest
import random
from exercise_1 import check_iden_digit
from exercise_1 import result
class MyTestCase(unittest.TestCase):
def test_something(self):
self.assertEqual(result,check_iden_digit(random.randint(0, 10000000)))
if __name__ == '__main__':
unittest.main()
השתמשתי במשתנה result להשוואה אבל זה כנראה לא דרך נכונה כי זו התוצאה שהפונקציה מחזירה אז ברור שהבדיקה תצא נכונה. ועם כל זה זה לא עבד.
יש לך רעיון אחר לבדיקת הקוד עם אפשרויות רבות של מספרים?
ומה לגבי הבדיקה הראשונה שכתבתי?
איפה אפשר לראות את הפתרון שלך?
אם אני מבין נכון מה עשית, נראה לי שהוא לא יעבוד טוב בחלק השני של האתגר של היום הראשון, שבו צריך לסכום את הספרות ששוות לספרה שנמצאת מחצית המרחק מהן…
בבדיקה אתה לוקח קלט ידוע ובודק שהפונקציה החזירה עבורו את התוצאה שרצית. קח 3-4 קלטים וכתוב להם בדיקות.
כאן אתה יכול לעשות משהו עוד יותר מוצלח וזה ללכת לאתר של אריק וסטל (ממנו אני לוקח את הסידרה הזאת) בקישור כאן: https://adventofcode.com/2017/day/1
ליצור משתמש ואז תקבל קלט סופר ארוך מותאם אישית עבורך שאריק הכין מבעוד מועד. ואגב אחרי שתפעיל את הקוד שלך על הקלט של אריק ותדביק שם את התוצאה תקבל כוכב ותרגיל בונוס, אז כדאי.