Forum Posts

eddiearb
Aug 05, 2021
In General Discussions
החידות בפורום מטרתן לימוד והנאה, אבל יש להן תופעת לוואי נוספת, גילינו שהחידות משמשות גם בראיונות עבודה (וגם תלמידים שרוצים להעתיק פרויקט אינסטנט ולשפר...), ולכן, גם מעסיקים, מרואיינים ותלמידים סוררים מוצאים עניין בחידות מהסוג המופיע בפורום שלנו. הפתרונות לחידות מופיעות כפוסט בתוך הפוסט של החידה. לעיתים יש הסברים לפתרונות ולעיתים הקורא השקדן צריך לנתח את הקוד בעצמו (זה מאוד מאוד קשה - כך שתלמיד שיצטרך להסביר את הקוד עלול להיות בבעיה אם לא ניתח אותו עד הסוף. כמובן שרצוי לנסות לפתור בעצמכם לפני שמציצים בפתרונות שהבן שלי טבע והחתום מטה מצאנו לאורך השנים (רמות הקוד משתנות כתלות בשלב בחיים בו נכתב הפתרון). נשמח לראות הערות ופתרונות שלכם לחידות השונות, אין צורך להיבהל מהרשמה לפורום, אנו לא שולחים ספאם ולא מטרידים איש ואפילו לא מתעניינים ביום ההולדת שלכם. בהצלחה לכולם. אחת לכמה זמן אנו מוחקים את הפוסטים האינפורמטייביים ומשאירים רק את החידות!!
0
0
75
eddiearb
Aug 05, 2021
In General Discussions
אפליקציה יחסית חדשה (עכשיו אמצע 2021) משחק שבו צריך למיין כדורים בתוך מבחנות כך שבסוף המשחק במבחנות רק כדורים באותו צבע. מותר להעביר כדור למבחנה ריקה או למבחנה שאינה מלאה ושהכדור העליון בתוכה זהה לכדור שמעבירים לתוכה. זה הקוד שלנו: from copy import deepcopy Grid=[[2,3,2,1],[2,3,4,1],[1,3,5,5],[4,5,3,2],[4,1,5,4],[],[]] # 1=red, 2=purple, 3=green, 4=blue, 5= yellow def MovePossibilities (alltubes): g=deepcopy(alltubes) possgrid=[] grids=[] for ind,t in enumerate (g): for i, o in enumerate(g): if i!=ind: if len(t) > 0 and len(o) < 4 and (len(o) == 0 or t[-1] == o[-1]): possgrid.append([ind,i]) for i in possgrid: g[i[1]].append(g[i[0]].pop()) grids.append(g) g=deepcopy(alltubes) return grids def Complete(tube): state=0 if len(tube)==0 or (len(tube)==4 and tube[0]==tube[1]==tube[2]==tube[3]): state=1 return state def Check (grid): for tube in grid: if Complete(tube)==1: continue else: return 0 return 1 glib=[] def Solve (grid): global glib if Check(grid): print("Finished:") for t in grid: print(t) print("Very Good!") quit() for g in (MovePossibilities(grid)): if g not in glib: glib.append(g) print(g) Solve(g) Solve(Grid)
מיון כדורים במבחנות content media
0
2
127
eddiearb
Jul 31, 2021
In General Discussions
הפעם כתבנו תוכנה לפתרון פאזל נחמד, דומה לקטמינו, רק שהחלקים דמויי הטטריס מחוררים עם מקום לפינים שיכולים להיכנס לתוכם. בחידה מקבלים מראש את מיקום הפינים הצבעוניים, וצריך לסדר את כל החלקים, באופן שבתוך כל חלק יהיה אך ורק פין תואם בצבע (בתוך חלק אדום רק פין בצבע אדום ולא באף צבע אחר). חלקים יכולים להיות גם ריקים. והנה הקוד: import time ct = time.time() import copy import matplotlib.pyplot as plt z=[] """ red =10 green=30 yellow=20 blue=40 empty pin=minus """ Board=[[0,0,0,0,0,0,0,0], [0,0,0,0,-40,0,0,0], [0,0,0,0,0,-10,-30,0], [0,0,-20,0,0,0,0,-30]] #shapes: R=[[10,1,0],[1,0,0],[10,0,0]] P=[[4,4,4],[0,40,40],[0,0,0]] Z=[[0,1,0],[1,10,0],[1,0,0]] I=[[20,0,0],[2,0,0],[2,0,0]] L=[[4,0,0,0],[40,0,0,0],[4,0,0,0],[4,0,0,0]] V=[[3,30,0],[0,30,0],[0,0,0]] X=[[0,20,0],[2,2,20],[0,0,20]] T=[[3,3,30],[0,30,0],[0,0,0]] def rotateMatrix(matx): N=len(matx[0]) mat = copy.deepcopy(matx) # Consider all squares one by one for x in range(0, 2): # Consider elements in group # of 4 in current square for y in range(x, N - x - 1): # store current cell in temp variable temp = mat[x][y] # move values from right to top mat[x][y] = mat[y][N - 1 - x] # move values from bottom to right mat[y][N - 1 - x] = mat[N - 1 - x][N - 1 - y] # move values from left to bottom mat[N - 1 - x][N - 1 - y] = mat[N - 1 - y][x] # assign temp to left mat[N - 1 - y][x] = temp return mat def allShapeForms(shape): s = [] s.append(shape) cp = copy.deepcopy(shape) for i in range(3): x = rotateMatrix(cp) s.append(x) cp = x cp = [] for item in shape: cp.append(item[::-1]) s.append(cp) for i in range(3): x = rotateMatrix(cp) s.append(x) cp = x return s def fitForm2Board (form,tempboard): board=copy.deepcopy(tempboard) combinationFormList=[] collision = 0 for y in range(4): for x in range (8): for index, row in enumerate(form): for ind, cell in enumerate(row): if cell != 0: if (index+y<4 and ind+x<8) and (board[index+y][ind+x] == 0 or board[index+y][ind+x] == -cell): board[index+y][ind+x] = cell else: collision += 1 if collision > 0: collision = 0 board = copy.deepcopy(tempboard) else: combinationFormList.append(board) board =copy.deepcopy(tempboard) return combinationFormList def print2d(mat): for item in mat: print(item) #return all bords: def allShapePossibilities (shape,board): allposs=[] for item in allShapeForms(shape): for b1 in fitForm2Board(item, board): allposs.append(b1) return allposs for b1 in allShapePossibilities(X,Board): for b2 in allShapePossibilities(I,b1): for b3 in allShapePossibilities(P,b2): for b4 in allShapePossibilities(L,b3): for b5 in allShapePossibilities(R,b4): for b6 in allShapePossibilities(Z,b5): for b7 in allShapePossibilities(T,b6): for b8 in allShapePossibilities(V,b7): print2d(b8) print(time.time()-ct) z=b8 for ind, row in enumerate (z): for index, num in enumerate (row): if num==10: z[ind][index]=10 if num==1: z[ind][index]=12 if num==20: z[ind][index]=40 if num==2: z[ind][index]=42 if num==30: z[ind][index]=30 if num==3: z[ind][index]=32 if num==40: z[ind][index] =20 if num==4: z[ind][index]=22 fig = plt.figure() ax = fig.add_subplot(111) ax.imshow(z, extent=[1, 8, 1, 4], interpolation='none') plt.show() quit() """ #back traking loop for item in allShapeForms(X): for b1 in fitForm2Board(item, Board): for item1 in allShapeForms(Z): for b2 in fitForm2Board(item1, b1): for item2 in allShapeForms(P): for b3 in fitForm2Board(item2, b2): for item3 in allShapeForms(R): for b4 in fitForm2Board(item3, b3): for item4 in allShapeForms(T): for b5 in fitForm2Board(item4, b4): for item5 in allShapeForms(L): for b6 in fitForm2Board(item5, b5): for item6 in allShapeForms(I): for b7 in fitForm2Board(item6, b6): for item7 in allShapeForms(V): for b8 in fitForm2Board(item7, b7): print2d(b8) print("the end") quit() """
IQ Twist Puzzle content media
0
1
38
eddiearb
Jun 18, 2020
In General Discussions
העיתונים בארץ כולל העיתון של המדינה (ובעיקר ברכבת) כוללים גירסא מיוחדת של פאזל חידאתו (hidato puzzle). מדובר בפאזל המפוזרים בו מספרים, בגירסא הרווחת בארץ בין 1-61, וצריך לאתר ולשבץ את המספרים החסרים בפאזל, כאשר החוק הוא שכל מספר חייב לגור בשכנות למספר הגדול והקטן ממנו (למעט המספרים 1 ו- 61 שלהם יש רק שכן מצד אחד). באינטרנט ניתן למצוא פותרי חידאתו לגירסאות ישנות של החידה כאשר המספרים נמצאים בתוך תאים ריבועיים (כמו תשבץ). אנחנו מציגים פתרון לחידות המתפרסמות בידיעות אחרונות שבו מוצג תשבץ בתוך לוח משושה עם תאים משושים. הפתרון שלנו (python 3 כמובן) בהמשך נפרסם הסבר לקוד (לעת עתה אפשר לנסות לפענח לבד - זה לא קל): board = [] given = [] start = None def setup(s): global board, given, start lines = s.splitlines() ncols = len(lines[4].split()) nrows = len(lines) board = [[-1] * (ncols + 2) for _ in range(nrows + 2)] for r, row in enumerate(lines): for c, cell in enumerate(row.split()): if cell == "__": board[r + 1][c + 1] = 0 continue elif cell == ".": continue # -1 else: val = int(cell) board[r + 1][c + 1] = val given.append(val) if val == 1: start = (r + 1, c + 1) given.sort() def solve(r, c, n, next=0): if n > given[-1]: return True if board[r][c] and board[r][c] != n: return False if board[r][c] == 0 and given[next] == n: return False back = 0 if board[r][c] == n: next += 1 back = n board[r][c] = n for i in [-1,0,1]: if i ==0: for j in [-1,1]: if solve(r + i, c + j, n +1, next): return True if i==-1 and r<6: for j in [0,1]: if solve(r + i, c + j, n +1, next): return True if i==-1 and r>5: for j in [-1,0]: if solve(r + i, c + j, n +1, next): return True if i==1 and r<5: for j in [-1,0]: if solve(r + i, c + j, n +1, next): return True if i==1 and r>4: for j in [1,0]: if solve(r + i, c + j, n +1, next): return True board[r][c] = back return False def print_board(): d = {-1: " ", 0: "__"} bmax = max(max(r) for r in board) form = "%" + str(len(str(bmax)) + 1) + "s" for r in board[1:-1]: print( "".join(form % d.get(c, str(c)) for c in r[1:-1])) #here you put the board "__" for empty cell "." for vacant place in th row (out of the hive) #hi =". . . . __ __ __ 25 __ . . . .\n. . . __ 20 __ __ 23 __ . . .\n. . __ __ __ __ __ __ 1 . .\n. __ __ __ __ 17 __ __ __ .\n33 __ 60 __ __ 15 13 12 __\n. 36 __ 61 __ 54 __ __ __ .\n. . __ __ __ __ 53 51 __ . .\n. . . 39 __ 43 __ __ __ . . .\n. . . . 41 __ __ __ __ . . . ." hi =". . . . __ __ __ __ __ . . . .\n. . . __ 48 __ __ __ 42 . . .\n. . __ 51 __ __ __ 41 1 . .\n. __ __ 59 __ 61 __ __ __ .\n__ 56 __ __ __ 33 __ 5 __\n. __ 57 __ 25 __ __ 9 __ .\n. . 22 __ 24 __ __ 10 __ . .\n. . . __ 18 __ __ 12 __ . . .\n. . . . __ __ 15 __ __ . . . ." setup(hi) print_board() print("********************") solve(start[0], start[1], 1) print_board() """out put: __ __ __ __ __ __ 48 __ __ __ 42 __ 51 __ __ __ 41 1 __ __ 59 __ 61 __ __ __ __ 56 __ __ __ 33 __ 5 __ __ 57 __ 25 __ __ 9 __ 22 __ 24 __ __ 10 __ __ 18 __ __ 12 __ __ __ 15 __ __ ******************** 47 46 45 44 43 49 48 38 39 40 42 50 51 37 36 35 41 1 53 52 59 60 61 34 3 2 54 56 58 27 28 33 4 5 6 55 57 26 25 29 32 9 7 22 23 24 30 31 10 8 21 18 17 16 12 11 20 19 15 14 13 """
  (פותר חידאתו (כוורת  - hidato solver (bee hive) content media
0
0
200
eddiearb
Apr 29, 2019
In General Discussions
לתוך שק אטום מכניסים עשרה כדורים כחולים ועשרה כדורים לבנים. מערבבים ושולפים באקראי שני כדורים. אם הכדורים זהים בצבעם, מחזירים לשק במקום שני הכדורים שהוצאנו, כדור אחד כחול ואם הכדורים בעלי צבעים שונים מחזירים לשק כדור לבן אחד בלבד. במצב הזה תמיד יישאר בשק כדור אחרון בצבע מסוים - איזה כדור נשאר אחרון? מה קורה כאשר משנים את תנאי החידה ומספר הכדורים הלבנים הופך לאי זוגי ? או כאשר שניהם אי זוגיים ? כדי לענות על החידה אתם נדרשים לכתוב תוכנית פייתון פשוטה שתדמה מודל של החידה, ואת השלבים המובילים לפתרון. לפני שתציצו בפתרון שלנו, נסו לבנות פתרון בעצמכם.
0
1
80
eddiearb
Apr 28, 2019
In General Discussions
בציור למטה מופיע חלק מלוח שחמט, אנו צריכים לבצע מהלכים של פרש ולנסות להחליף את המיקומים של הפרשים. כך שבסוף המהלכים הפרשים הלבנים יהיו למעלה והשחורים למטה (בפינות כמובן). אתם נדרשים לבנות מודל בפייתון שיניב את דרך הפתרון עד לתוצאה המיוחלת. רמז - למשבצת האמצעית אין שום תפקיד משום שהפרשים לא יכולים להגיע אליה בשום מקרה. בסדר אז זה לא רמז גדול. הפרשים לא צריכים לשחק לפי התור, כלי יכול לנוע פעמיים ברצף.
ארבעת הפרשים - חידת פייתון content media
0
1
113
eddiearb
Apr 28, 2019
In General Discussions
חידה ותיקה שבה צריך להעביר את כל הטבעות הנמצאות על עמוד אחד, לעמוד שלישי, כאשר הכלל היחידי הוא שאסור להניח טבעת גדולה על גבי טבעת קטנה, אלא רק קטנה על גדולה. למשל בציור שלמעלה צריך להעביר את כל הטבעות מעמוד A לעמוד C. מספר הטבעות יכול להיות N ככל שהוא גדול יותר זה לוקח יותר זמן לפתור את החידה (תנסו לפתור אותה עם 8 טבעות) או לכל N טבעות. אנו רוצים לראות מודל של החידה המיוצג בפייתון, ואת השלבים והדרך המובילים לפתרון החידה. אפשר להיעזר בפתרונות לחידות אחרות שהתפרסמו בפורום הזה. בהצלחה. בין הפותרים נכונה לא יוגרל שום דבר. כולם יזכו להערכה ולהערות בונות אם יש. לא לפחד להירשם לפורום, אנחנו לא שולחים ספאם, גם לא ברכות ליום הולדת, אנחנו בכלל לא מעוניינים לדעת מתי יום ההולדת שלכם, אם הוא מתרחש היום אז מזל טוב.
מגדל האנוי - חידת פייתון content media
1
3
173
eddiearb
Apr 23, 2019
In General Discussions
בנהרות בבל לא מקובל היה שגבר ישהה במחיצתה של אישה אחרת, בלי שאשתו לצידו. על גדת החידקל עמדו שלושה זוגות (בעל+אישה) ועליהם לחצות את הנהר באמצעות סירה שיש בה מקום לשני נוסעים בלבד, כך שכל ששת הנוסעים יגיעו לצד השני של הנהר. בשום שלב לא יכול להימצא גבר במחיצת אישה אחרת, אלא אם אשתו לידו, גברים יכולים להיות עם גברים אחרים, ונשים יכולות להיות עם מי שהן רוצות (רק לא עם גבר שאשתו לא לצידו) - ככה זה בבבל. צריך לבנות מודל בפייתון המדמה את החידה ומניב את שלבי הפתרון.
0
0
72
eddiearb
Apr 23, 2019
In General Discussions
חידה שצריך לפתור באמצעות שימוש במודל מתאים בפייתון - שני חברים נסעו לטייל במדבר. לאחד כלי בנפח 8 ליטרים ולשני כלי בנפח 5 ליטרים. הכלים היו מלאים במים אבל המים אזלו בגלל ששני החברים תעו במדבר וכעת יש להם שני כלים ריקים. לשמחתם מצאו מיכל בנפח 12 ליטרים המלא במים. על מנת שלא לריב החליטו לחלק את המים ביניהם חצי בחצי (כל אחד 6 ליטרים). כיצד הם יכולים לעשות את זה באמצעות העברת מים מכלי לכלי ? אנו מחפשים מודל בפייתון וכן את שלבי הפתרון.
0
1
48
eddiearb
Apr 19, 2019
In General Discussions
טוב, וריאציה של ריבוע קסם, רק במשושה של משושים. במשושה הגדול, המורכב מ- 19 משושונים , יש להציב את המספרים 1-19, כך שסכום כל טור וכל אלכסון (כמו אלה שפירקתי סביב המשושה הגדול) לא משנה אם הוא מורכב משלושה, ארבעה או חמישה משושונים, יהיה זהה, כלומר, אותו מספר, באלכסונים העולים (משמאל למטה לימין למעלה), באלכסונים היורדים(משמאל למעלה לימין למטה) ובטורים. בכל רצף של משושונים (שהצלעות שלהן נוגעות זו בזו) לכל כיוון, יהיה בדיוק אותו סכום. מה המספר שאנו מחפשים ? ואיך מסדרים את תשעה עשר המספרים בתוך הכוורת כך שיתקבל המספר האחד הזה בכל הטורים והאלכסונים ? דרושה תוכנית בפייתון, שתייצר מודל של החידה ותמצא את הפתרון. בין הפותרים נכונה תוגרל חלת דבש או כבוד של מלכת דבורים.
כוורת חוזרת בפעם ה- 19 content media
0
1
30
eddiearb
Apr 19, 2019
In General Discussions
בגן החיות בפלורידה מסודרים כלובי החיות בשורה, הנה כמה עובדות על סדר הכלובים: א. האריה נמצא בדיוק באמצע השורה ב. בין הכלב לבין הקוף נמצאת חיה אחת נוספת ג. החתול נמצא מימין לכלב צמוד אליו ד. הפיל נמצא בין הסוס לבין הג'ירף ה. החתול נמצא מימין לסוס (לא בהכרח צמוד אליו) ו. בין הג'ירף לבין הכלב מפרידות 3 חיות אחרות המשימה שלנו היא לכתוב תוכנית בפייתון שמגלה כיצד מסודרות 7 החיות (בשורה) בגן החיות בפלורידה, לפי התנאים שבסיפור. את הפתרון צרפו כתגובה לפוסט הזה. הפותר האלגנטי ביותר יזכה בכבוד של אבירים. בהמשך נצרף פתרון משלנו.
גן החיות בפלורידה - חידת פייתון content media
1
2
74
eddiearb
Apr 15, 2019
In General Discussions
בחידה הזאת צריך להגיע מהמצב ההתחלתי כמתואר למעלה למצב הסופי שגם הוא מתואר למעלה. הכללים של החידה -כל יצור אמפיבי יכול לנוע למשבצת ריקה הסמוכה אליו או לדלג מעל יצור אמפיבי אחר. צפרדעים יכולות לנוע ימינה בלבד וקרפדות יכולות לנוע שמאלה בלבד. התנועה יכולה להתבצע בשני אופנים : צפרדע יכולה לגלוש למשבצת ריקה סמוכה שנמצאת מימין בלבד ואילו קרפדות יכולות לגלוש למשבצת ריקה סמוכה לשמאל בלבד. צפרדעים וקרפדות יכולות גם לדלג, (זה כל הקטע בבחירת דו חי מהסוג הזה) כמובן כל ייצור לכיוון שמותר לו, צפרדעים רק ימינה וקרפדות רק שמאלה. הדילוג יכול להתבצע אך ורק כאשר יש בסמוך לכיוון הדילוג ייצור מסוג אחר ויש גם אחריו משבצת ריקה. כלומר, צפרדע לא יכולה לדלג מעל צפרדע וקרפדה לא יכולה לדלג מעל קרפדה (בין אם יש אחרי משבצת ריקה ובין אם לא). אי אפשר לדלג על יותר מייצור אחד (צפרדע לא יכולה לדלג מעל שתי קרפדות) ואי אפשר לדלג מעל ייצור שאין אחריו משבצת ריקה (וכל אחת כזכור רק לכיוון שהיא יודעת לדלג). צריך לבנות תוכנית, בפייתון (כאילו בזה אנו עוסקים כאן), שתציג מודל של החידה. ותציג את שלבי הפתרון מהמצב ההתחלתי למצב הסופי שבו הצפרדעים והקרפדות מחליפות מקומות. הראשון שיפתור עם תוכנית מרשימה יזכה בתהילת עולם (בקנה המידה המצומצם יותר של קומץ האנשים הנדירים החברים באתר הזה בפורום).
חידת הצפרדעים והקרפדות content media
0
2
234
eddiearb
Apr 12, 2019
In General Discussions
מי יכול למצוא (באמצעות תוכנית קצרה בפייתון) ריבוע קסם הכולל תשע משבצות 3X3, בתוכן צריך לשבץ תשעה מספרים ראשוניים שונים (בין 0 ל- 100). הקסם הוא שסכום כל שורה כל טור וכל אלכסון בריבוע צריך להיות שווה ל- 111. התוכנית היפה ביותר תזכה ב...כל הכבוד אחדשיודע25.
0
1
46
eddiearb
Admin
More actions