תכנות, רקורסיה, מערכים, מחרוזות, עצים בינאריים ורשימות מקושרות
hash_mod מתוך המחלקה hashtable שראינו בכיתה:self.hash_mod = lambda key: hash_func(key) % mhash_func, ציינו עבור כל מימוש האם הוא:math.log(x,b) מחזירה float המייצג (בקירוב) את הערך של .lambda x: x%10lambda x: random.randint(x)lambda x: 1lambda x: -1*xlambda x: int(math.log(x,2))res[1] + res[2] == 1res[1] + res[2] > 0.2res[4] <= res[3](res[0] == res[4]) or (res[4] == res[3])random.random() מחזירה מספר אקראי בקטע (לא כולל 1).res == [1,1,1,0,0] → אפשרי / לא אפשריres == [1,0,0,0,2] → אפשרי / לא אפשריres == [0,1,0,2,0] → אפשרי / לא אפשריMath.random().array אינו null ושאורכו לא אפס. יש לאפשר להחזיר כל ערך מתוך איברי המערך. להלן דוגמת שימוש:Math.random() מחזירה ערך אקראי כלשהו מטיפוס double.array שאורכו לפחות , ומחזירה את ערך האיבר ה- במערך.array אינו null, שאורכו לפחות , ושכל האיברים במערך שונים זה מזה. אין למיין את המערך.splitLess מקבלת מערך array של שלמים וערך שלם value ומחזירה מערך בו כל הערכים מתוך array שהם קטנים ממש מהערך value. הפונקציה splitGreater מקבלת מערך array של שלמים וערך שלם value ומחזירה מערך בו כל הערכים מתוך array שהם גדולים ממש מהערך value.lst באורך שאיבריה הם ערכים מספריים. השלימו את מימוש הפונקציה partial_sums(lst) שבהינתן רשימה lst כזו, מחזירה רשימה חדשה שבה האיבר באינדקס מכיל את סכום האיברים באינדקסים קטנים או שווים ל- ברשימה lst.RandomWeightedChoice, שמבצעת סימולציה של בחירה ממושקלת של איברים כפי שנסביר להלן.__init__ ו-choose שאותן עליכם להשלים.__init__ תקבל שני קלטים מטיפוס list בנוסף ל-self:items הינו רשימה של איברים כלשהם,weights הינו רשימה של מספרים מטיפוס float בתחום שמייצגים משקלים.sum(weights) שווה 1.items[i] הינו weights[i].items בתוך שדה self.items, ואת weights בתוך השדה self.weights. בנוסף לשמירת הקלטים המתודה יכולה גם לעשות פעולות נוספות ולהגדיר שדה או שדות נוספים (וכן, גם להשתמש בפונקציה מסעיף א').__init__ להיות במקרה הגרוע.choose לא תקבל קלט מלבד self. הפעלה שלה תחזיר איבר אקראי מתוך self.items בהתאם למשקל המתאים לו. כלומר הסיכוי של כל איבר להיבחר צריך להיות כמשקלו.random.random, שמחזירה מספר אקראי מטיפוס float שמקיים .choose להיות מסיבוכיות זמן נמוכה ככל האפשר במקרה הגרוע.__init__ ו-choose כנדרש:choose שמימשתם כפונקציה של : is_prime אשר נלמדה בהרצאה:is_prime עשויה להחזיר שהמספר הנתון הוא פריק אף על פי שהוא בעצם ראשוני, בהסתברות של .is_prime כדי לפצח הצפנות שכאלה. בהינתן מספר אשר יש לפרקו לגורמים — הוא יקרא לפונקציה is_prime(m, True). אם המספר אינו ראשוני הפונקציה תדפיס גם את העד (witness). כאשר דני יחלק את המספר ב-witness שהודפס הוא יקבל את הגורם השני של המספר וכך יפצח את הקוד. האם תוכניתו של דני תצליח לפרק מספר פריק לגורמים? אם לא, נמקו.rps_play שמקבלת שני איטרטורים (יהופץ וצפניה) ומחזירה את הניקוד הסופי כזוג סדור. ניתן להניח אורך זהה.player_yehopatz(history) שמקבלת את מהלך המשחק עד כה (רשימת זוגות) ומחזירה את הסימן הבא של יהופץ. מטרתו: לנצח כמה שיותר ולהפסיד כמה שפחות. הסבירו את האסטרטגיה.player_yehopatz לבין רובו-צפניה: מהי התוצאה הטובה ביותר, הגרועה ביותר, והאופיינית ליהופץ?to_matrix שמחזירה Matrix ובו מטריצת התמורה המתאימה ל-self. הסבירו במילים וממשו בקוד פייתון.is_royal שמקבלת תמורה ומחזירה ערך בוליאני האם היא מלכותית. דוגמה: מלכותית.perms(n) המחזיר איטרטור שעובר (בסדר כלשהו) על כל התמורות באורך . כיתבו פונקציה royal_prob(n) שמחזירה מספר ממשי שהוא ההסתברות שתמורה מקרית (מהתפלגות אחידה) באורך היא מלכותית."ATCAAGTCAATCA" הצמדים המקסימליים מאורך הם .שאלות תרגול במבוא למדעי המחשב בנושא הסתברות ממבחנים של האוניברסיטה הפתוחה, אוניברסיטת תל אביב, אוניברסיטת בר-אילן, הטכניון. השאלות ממוינות לפי רמת קושי, עם פתרונות לבדיקה עצמית - כך שניתן ללמוד מטעויות ולהבין את דרך הפתרון לפני הבחינה. ניתן לאתר שאלות חוזרות ולהריץ מבחני סימולציה ממוקדים בנושא הסתברות.