ABA


"אתגר קטן"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #13482 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 13482
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   23:00   02.08.06   
אל הפורום  
  אתגר קטן  
 
   עוגן האשכול הוסר בתאריך 07.08.06 בשעה  18:03  על-ידי Nesher, (מנהל הפורום)
 
** עודכן ** תקראו מחדש.

רמת קושי : 2 מתוך 5

נתונה רשימה בעלת 5 מיליון איברים (או יותר - נראה לפי המצב בסוף)
בתוכו יש איברים רנדומלים בטווח בין 0 ל 9999

כתבו אלגוריתמים ההופך את האיברים ברשימה

לדוגמא
8 40 15 30
יהיה
30 15 40 8

הבן אדם שיכתוב את האלגוריתם היעיל ביותר יזכה בצל"ש =]
על מנת למדוד את משך הקוד

אני אמדוד את הקוד בעזרת GetTickCount , כדי שזה יהיה שווה בין כל המשתתפים

רק תרשמו את האלגוריתמים בצורה מובנת ועם שמות משתנים ברורים
השפה לא משנה.

אפשר לעשות את זה בהרבה דרכים מעניינות
תרגישו חופשי לגוון

בהצלחה !



                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  מי שמשתתף שיגיב להודעה .. אני רוצה לדעת Net_Boy  03.08.06 20:51 1
     רשימה מקושרת? sHuMpI 03.08.06 22:38 2
         דו כיוונית אבל לא מעגלית Net_Boy  04.08.06 00:11 4
  רגע, מספר האיברים ברשימה ידוע או לא? עידן_הכלי 03.08.06 23:19 3
     ידוע Net_Boy  04.08.06 00:11 5
         אממ פתרון: עידן_הכלי 04.08.06 00:28 6
             אתה התייחסת לרשימה כמערך Net_Boy  04.08.06 00:34 7
                 זה טיפשי לעשות רשימה מקושרת שמספר האיברים ידוע sHuMpI 04.08.06 13:39 8
                     לא הבנתי מה הקשר אחד בין השני ? Net_Boy  04.08.06 16:44 10
                         תראה עידן_הכלי 04.08.06 22:17 12
                             כנס Net_Boy  04.08.06 23:02 13
                                 צודק אבל עידן_הכלי 04.08.06 23:18 14
                                     כמובן שאפשר לעשות את זה כמערך אבל יש דרך הרבה יותר Net_Boy  05.08.06 13:50 17
                                         לא יודע אם זה יותר טוב אבל אפשר לעשות ככה: עידן_הכלי 05.08.06 15:47 18
                                             תרשום את האלגוריתם שלך בעברית מבנית :) Net_Boy  05.08.06 23:07 21
  אפשר לדעת לפי מה התוכנה הזאת בודקת? sHuMpI 04.08.06 13:43 9
     התוכנה בודקת את הזמן ריצה שלה Net_Boy  04.08.06 16:46 11
         תראה sHuMpI 05.08.06 00:19 15
             יש דרך הרבה יותר פשוטה :) Net_Boy  05.08.06 13:49 16
                 זה מספר פעולות מינימלי...פשוט להחליף הכל sHuMpI 05.08.06 16:43 19
                     תרשום את האלגוריתם שלך בעברית מבנית Net_Boy  05.08.06 23:07 20
  חבר'ה עכשיו עומר יודע את התשובה, גיליתי לו P: Nesher  05.08.06 23:58 22
  במקום להחליף בין איברים, נחליף בין הפוינטרים... bizho 06.08.06 12:06 23
     איזה תגובה פילוסופית הבאת MULI 06.08.06 13:50 24
         אני בנאדם עסוק. :P bizho 08.08.06 02:53 28
     יותר פשוט להחליף בין איברים sHuMpI 06.08.06 14:03 25
     קצר וקולע Net_Boy  06.08.06 19:45 26
         אתה יכול לרשום את זה בבקשה DOWNTOWN 07.08.06 16:21 27
             אשמח גם לראות את זה בשפה. FireAngel 10.08.06 12:04 30
                 טוב לא היה לי כל כך זמן לפיתרון מושקע Net_Boy  10.08.06 23:46 31
         תודה תודה :) bizho 08.08.06 02:54 29
  מכתב verner 05.09.06 18:15 32
     זה רק בהנחה שכל הדרך אתה נוסע בכבישים דו סיטריים dyermaker  07.09.06 12:31 33
         ושאין פקקים MULI 07.09.06 22:28 34

       
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   20:51   03.08.06   
אל הפורום  
  1. מי שמשתתף שיגיב להודעה .. אני רוצה לדעת  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 03.08.06 בשעה 20:53 בברכה, Net_Boy
 
אגב מבחינתי המימוש של הרשימה ממש לא חשוב
מי שעובד בשפת C\C++ אני אוכל לממש לו רשימה

שאר השפות תחפשו בגוגל תמצאו אלפי דוגמאות של ייצוג של רשימה

הרעיון פה פשוט לרשום את האלגוריתם (מצידי אפילו בעברית מבנית)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
sHuMpI

דרג אמינות חבר זה
   22:38   03.08.06   
אל הפורום  
  2. רשימה מקושרת?  
בתגובה להודעה מספר 1
 
   חד כיוונית או דו?
מעגלית?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   00:11   04.08.06   
אל הפורום  
  4. דו כיוונית אבל לא מעגלית  
בתגובה להודעה מספר 2
 
   זאת אומרת שאין קשר בין האיבר הראשון לאחרון


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
עידן_הכלי

דרג אמינות חבר זה
   23:19   03.08.06   
אל הפורום  
  3. רגע, מספר האיברים ברשימה ידוע או לא?  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   00:11   04.08.06   
אל הפורום  
  5. ידוע  
בתגובה להודעה מספר 3
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
עידן_הכלי

דרג אמינות חבר זה
   00:28   04.08.06   
אל הפורום  
  6. אממ פתרון:  
בתגובה להודעה מספר 5
 
   ערכתי לאחרונה בתאריך 04.08.06 בשעה 00:29 בברכה, עידן_הכלי
 

A = list
dim i = 1,n,temp as integer
n = list size

while i < n do
temp = a(i)
a(i) = a(n)
a(n) = temp
n = n-1
wend


סתם משהו שכתבתי הרגע.. זה ב VB


אני מקווה שהבנתי למה התכוונת.. כי זה היה ממש קל חח
יכול להיות שאני מתבלבל פה ולא לזה התכוונת


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   00:34   04.08.06   
אל הפורום  
  7. אתה התייחסת לרשימה כמערך  
בתגובה להודעה מספר 6
 
   ערכתי לאחרונה בתאריך 04.08.06 בשעה 00:37 בברכה, Net_Boy
 
העיקרון של רשימה הוא שאתה לא יכול להגיע לאיבר לפי אינדקס


הרשימה מורכבת מאיברים

איבר מורכב מ

1) ערך - ה INTEGER עצמו
2) פוינטר לאיבר הבא
3) פוינטר לאיבר הקודם

לדוגמא:

while ( node != NULL)
{
printf("%d\n",node->number);
node = node->next;
}

ככה עוברים על כל הרשימה מההתחלה לסוף ומדפיסים את כל האיברים


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
sHuMpI

דרג אמינות חבר זה
   13:39   04.08.06   
אל הפורום  
  8. זה טיפשי לעשות רשימה מקושרת שמספר האיברים ידוע  
בתגובה להודעה מספר 7
 
   כל הרעיון של רשימה זה הקצאה דינאמית
אחרת לרשימה אין מטרה בכלל


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   16:44   04.08.06   
אל הפורום  
  10. לא הבנתי מה הקשר אחד בין השני ?  
בתגובה להודעה מספר 8
 
   יש מחלקה שמייצגת רשימה , יש לה MEMBER שמייצג את מספר האיברים הנוכחי

היא עדיין נשארת דינאמית אבל אנחנו יכולים לדעת את מספר האיברים שבה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
עידן_הכלי

דרג אמינות חבר זה
   22:17   04.08.06   
אל הפורום  
  12. תראה  
בתגובה להודעה מספר 10
 
   מה שהסברת עם הקדימה אחורה סוף התחלה וכו' .. זה מערך דינמי, משתמשים בזה כשאתה לא יודע את מספר האיברים של המערך.

כי היתרון במערך כזה שאתה מוסיף לו תאים בזמן הרצה...

אם אני יודע את מספר האיברים ברשימה, מערך, לא משנה מה זה, תמיד אפשר להחליף בין הסוף להתחלה, וככה להתקדם.

ברגע שאתה לא יודע את מספר האיברים זה כבר יותר מסובך.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   23:02   04.08.06   
אל הפורום  
  13. כנס  
בתגובה להודעה מספר 12
 
   ערכתי לאחרונה בתאריך 04.08.06 בשעה 23:03 בברכה, Net_Boy
 
לרשימה אין אינדקס כמו למערך !
לכן גם אם אתה יודע את מספר האיברים זה לא משנה
זה בהחלט משנה זה ההבדל הקטן , מערך מבוסס על אינדקס , רשימה מבוססת על מצביעים

כדי להגיע לאיבר ה400 מתוך 500 אתה צריך
לעשות דרך או מהאיבר ה500 אחורה
או מהאיבר הראשון עד ה 400


אין דרך לעשות

list(400) - האופרטור () שייך למערכים

אגב תתייחס לסוגריים כמרובעות - פשוט הפורום מסתיר את זה


הבנת ?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
עידן_הכלי

דרג אמינות חבר זה
   23:18   04.08.06   
אל הפורום  
  14. צודק אבל  
בתגובה להודעה מספר 13
 
   הפואנטה דומה, מכיוון שמספר האיברים ידוע, אתה יכול ישר לעבור לסוף הרשימה ואז לזוז כל פעם אחד אחורה מהסוף ואחד קדימה מההתחלה, לעבוד במקביל כאילו, ולהחליף אותם.

האלגוריתם אותו אלגוריתם.. היישום טיפה שונה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   13:50   05.08.06   
אל הפורום  
  17. כמובן שאפשר לעשות את זה כמערך אבל יש דרך הרבה יותר  
בתגובה להודעה מספר 14
 
   פשוטה והרבה יותר מהירה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
עידן_הכלי

דרג אמינות חבר זה
   15:47   05.08.06   
אל הפורום  
  18. לא יודע אם זה יותר טוב אבל אפשר לעשות ככה:  
בתגובה להודעה מספר 17
 
   יש לך את הרשימה שלך,
ויש לך רשימה חדשה מאותחלת.

אתה הולך לסוף הרשימה שלך,
מעביר את האיבר שם לאיבר הראשון ברשימה החדשה

ואז ממשיך ככה מהסוף להתחלה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   23:07   05.08.06   
אל הפורום  
  21. תרשום את האלגוריתם שלך בעברית מבנית :)  
בתגובה להודעה מספר 18
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
sHuMpI

דרג אמינות חבר זה
   13:43   04.08.06   
אל הפורום  
  9. אפשר לדעת לפי מה התוכנה הזאת בודקת?  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 04.08.06 בשעה 13:46 בברכה, sHuMpI
 
הכוונה ל- GetTickCount


ומספר האיברים תמיד זוגי או יכול להיות גם אי זוגי? למרות שזה לא ממש משנה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   16:46   04.08.06   
אל הפורום  
  11. התוכנה בודקת את הזמן ריצה שלה  
בתגובה להודעה מספר 9
 
   GetTickCount - זו פונקצית API שמחזירה בתוך DWORD כמה מילי שניות עברו מאז שמערכת ההפעלה החלה לרוץ.

לוקחים בתחילת התוכנית את הערך

ולאחר ביצוע התוכנית לוקחים שוב את הערך החדש ומחסרים את הערך ההתחלתי
וזה בעצם הזמן שהתוכנית רצה.

ולגבי השאלה השנייה מה שבא לך \ נוח לך


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
sHuMpI

דרג אמינות חבר זה
   00:19   05.08.06   
אל הפורום  
  15. תראה  
בתגובה להודעה מספר 11
 
   בוא נגיד שמספר האיברים לא ידוע (כי אף אחד לא יגיד לך לעשות רשימה שהמספר ידוע, הרבה יותר שווה מערך)

פשוט עוברים על הכל בודקים כמה איברים יש ואז הופכים בין 2 הצדדים עד שמגיעים לאותו איבר שהוא גם N\2


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   13:49   05.08.06   
אל הפורום  
  16. יש דרך הרבה יותר פשוטה :)  
בתגובה להודעה מספר 15
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
sHuMpI

דרג אמינות חבר זה
   16:43   05.08.06   
אל הפורום  
  19. זה מספר פעולות מינימלי...פשוט להחליף הכל  
בתגובה להודעה מספר 16
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   23:07   05.08.06   
אל הפורום  
  20. תרשום את האלגוריתם שלך בעברית מבנית  
בתגובה להודעה מספר 19
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nesher  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.7.02
2 הודעות, 24 פידבק, 43 נקודות
   23:58   05.08.06   
אל הפורום  
  22. חבר'ה עכשיו עומר יודע את התשובה, גיליתי לו P:  
בתגובה להודעה מספר 0
 
ערכתי לאחרונה בתאריך 06.08.06 בשעה 00:01 בברכה, Nesher
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
bizho

דרג אמינות חבר זה
   12:06   06.08.06   
אל הפורום  
  23. במקום להחליף בין איברים, נחליף בין הפוינטרים...  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MULI

דרג אמינות חבר זה
   13:50   06.08.06   
אל הפורום  
  24. איזה תגובה פילוסופית הבאת  
בתגובה להודעה מספר 23
 
  
מה עם קוד אחשלו?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
bizho

דרג אמינות חבר זה
   02:53   08.08.06   
אל הפורום  
  28. אני בנאדם עסוק. :P  
בתגובה להודעה מספר 24
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
sHuMpI

דרג אמינות חבר זה
   14:03   06.08.06   
אל הפורום  
  25. יותר פשוט להחליף בין איברים  
בתגובה להודעה מספר 23
 
   כשאתה מחליף בין פוינטרים יש לך יותר תנאים למקרי קצה וכו'


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   19:45   06.08.06   
אל הפורום  
  26. קצר וקולע  
בתגובה להודעה מספר 23
 
   ערכתי לאחרונה בתאריך 06.08.06 בשעה 19:54 בברכה, Net_Boy
 
התשובה המלאה


1) כל עוד לא מגיעים לסוף הרשימה
1.1) החלף בין הפוינטר של האיבר הקודם לפוינטר של האיבר הבא

2) קבע את האיבר האחרון כאיבר הראשון של הרשימה


תתחדש על הצל"ש

מי שמעוניין לבדוק , זו הדרך הכי יעילה ומהירה , ישנם רק הצבות בפיתרון !


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DOWNTOWN
חבר מתאריך 28.5.02
5388 הודעות, דרג אמינות חבר זה
   16:21   07.08.06   
אל הפורום  
  27. אתה יכול לרשום את זה בבקשה  
בתגובה להודעה מספר 26
 
   בשפה ולא עברית מבנית? כולל המימוש של הרשימה.
אם תוכל בc.

תודה רבה.

s22holyshits33

אני מלך


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
FireAngel

דרג אמינות חבר זה
   12:04   10.08.06   
אל הפורום  
  30. אשמח גם לראות את זה בשפה.  
בתגובה להודעה מספר 27
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק, 2 נקודות
   23:46   10.08.06   
אל הפורום  
  31. טוב לא היה לי כל כך זמן לפיתרון מושקע  
בתגובה להודעה מספר 30
 
   ערכתי לאחרונה בתאריך 11.08.06 בשעה 00:05 בברכה, Net_Boy
 
זו עבודה של 5 דקות
http://rafb.net/paste/results/k0cMwc62.html
אני מקווה שזה מספיק מובן
כמובן שהמימוש רחוק מלהיות מושלם ובנוי מבחינה לוגית לא הכי נכון
אבל הפואנטה זה על האלגוריתם של הההיפוך רשימה

אם למישהו יש שאלות שירגיש חופשי


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
bizho

דרג אמינות חבר זה
   02:54   08.08.06   
אל הפורום  
  29. תודה תודה :)  
בתגובה להודעה מספר 26
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
verner

   18:15   05.09.06   
אל הפורום  
  32. מכתב  
בתגובה להודעה מספר 0
 
   זה כל כך פשוט שאין לי כח לרשום קוד. אם אני שומר את הנתונים ברשימה דו כיוונית יש לי מצביע להתחלה ולסוף. אז בשביל להפוך אותה פשוט מחליפים בין מצביע להתחלה ומצביע לסוף! ( צריך לזכור שהחלפנו כדי לדעת באיזה מ2 המצביעים של איבר להשתמש כדי להגיע לאיבר הבא).

בכלל האתגר די תמוה... כמו לשאול: "אתה יודע איך מגיעים מתל-אביב לחיפה. אבל איך מגיעים מחיפה לתל-אביב?"


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dyermaker 
חבר מתאריך 4.2.03
1644 הודעות
   12:31   07.09.06   
אל הפורום  
  33. זה רק בהנחה שכל הדרך אתה נוסע בכבישים דו סיטריים  
בתגובה להודעה מספר 32
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MULI

   22:28   07.09.06   
אל הפורום  
  34. ושאין פקקים  
בתגובה להודעה מספר 33
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net