לתוך שק אטום מכניסים עשרה כדורים כחולים ועשרה כדורים לבנים. מערבבים ושולפים באקראי שני כדורים. אם הכדורים זהים בצבעם, מחזירים לשק במקום שני הכדורים שהוצאנו, כדור אחד כחול ואם הכדורים בעלי צבעים שונים מחזירים לשק כדור לבן אחד בלבד. במצב הזה תמיד יישאר בשק כדור אחרון בצבע מסוים - איזה כדור נשאר אחרון? מה קורה כאשר משנים את תנאי החידה ומספר הכדורים הלבנים הופך לאי זוגי ? או כאשר שניהם אי זוגיים ? כדי לענות על החידה אתם נדרשים לכתוב תוכנית פייתון פשוטה שתדמה מודל של החידה, ואת השלבים המובילים לפתרון. לפני שתציצו בפתרון שלנו, נסו לבנות פתרון בעצמכם.
top of page
bottom of page
הפתרון שלנו ליצירת מודל של החידה עושה שימוש בספריית random המאפשרת, בין היתר, ערבוב, של רשימות. לאחר שיצרנו מודל של החידה, אנו רואים שהכדור האחרון שיישאר בשק הוא כדור כחול. (אלא אם נשנה את מספר הכדורים הלבנים למספר אי זוגי)
import random b='b'*10 w='w'*10 lista=[i for i in (b+w)] random.shuffle(lista) print(lista) while len (lista)>1: a=lista.pop() b=lista.pop() if a==b: lista.append('b') else: lista.append('w') print(lista) random.shuffle(lista)
כך נראה הפתרון שלנו -
['w', 'b', 'w', 'b', 'b', 'w', 'w', 'b', 'b', 'w', 'w', 'b', 'w', 'w', 'w', 'b', 'b', 'w', 'b', 'b']
['w', 'b', 'w', 'b', 'b', 'w', 'w', 'b', 'b', 'w', 'w', 'b', 'w', 'w', 'w', 'b', 'b', 'w', 'b']
['w', 'b', 'w', 'w', 'b', 'b', 'b', 'w', 'b', 'b', 'w', 'b', 'w', 'w', 'w', 'w', 'w', 'b']
['w', 'b', 'w', 'w', 'w', 'b', 'w', 'w', 'w', 'b', 'b', 'b', 'w', 'b', 'w', 'b', 'w']
['w', 'b', 'w', 'w', 'w', 'b', 'w', 'w', 'w', 'b', 'b', 'w', 'b', 'w', 'b', 'w']
['w', 'b', 'w', 'w', 'b', 'w', 'b', 'b', 'w', 'w', 'b', 'w', 'b', 'w', 'b']
['b', 'b', 'w', 'b', 'w', 'b', 'w', 'w', 'b', 'w', 'w', 'w', 'w', 'b']
['w', 'b', 'w', 'b', 'w', 'b', 'b', 'w', 'w', 'w', 'b', 'b', 'b']
['b', 'b', 'w', 'b', 'w', 'w', 'w', 'b', 'w', 'b', 'b', 'w']
['b', 'w', 'w', 'b', 'w', 'b', 'b', 'w', 'b', 'w', 'w']
['b', 'w', 'w', 'w', 'w', 'w', 'b', 'b', 'w', 'b']
['b', 'w', 'w', 'b', 'w', 'w', 'b', 'b', 'b']
['w', 'b', 'b', 'b', 'b', 'w', 'w', 'w']
['w', 'b', 'w', 'w', 'b', 'w', 'b']
['w', 'b', 'w', 'w', 'b', 'w']
['w', 'w', 'b', 'b', 'b']
['b', 'b', 'w', 'w']
['b', 'w', 'w']
['b', 'b']
['b']