הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   החלפת 2 ערכים של משתנים אחד בשני בלי שימוש במשתנה נוסף (https://hosts.co.il/forums/showthread.php?t=92687)

IgalSt 11-10-11 13:56

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

חיפשתי דרך להחליף ערכים של שני משתנים אחד בשני (לאו דווקא ערכים נומריים) בלי להשתמש במשתנה temp לצורך הפעולה.

ובכן ישנה דרך מעניינת לעשות את זה תוך שימוש ב-XOR Swap Algorithm:
קוד:

x = x XOR y
y = x XOR y
x = x XOR y


Erez | TrustMedia.co.il 11-10-11 14:17

ברובי זה עוד יותר פשוט:
x, y = y, x

IgalSt 11-10-11 15:07

ארז,
קראתי לפני כמה שבועות מאמר מאוד מעניין על פסיקים ב-JS ונראה לי אפשר לעשות ב-JS משהו דומה ל- x,y=y,x

בכל אופן, גרמת לי לחפור עוד קצת בזה.
מצאתי את השאלה הזאת ב-SO עם סיכום דיי יפה שלה שיטות הקיימות לפי שפות:
(חלק מהרשימה)
קוד:

PHP
list($a, $b) = array($b, $a);

JavaScript 1.7
[a, b] = [b, a]

Python/Ruby
a, b = b, a

Numbers only:
a = a + b
b = a - b
a = a - b


Xinxy 11-10-11 17:18

שיטה ידועה ומגניבה
עוד שיטה:
x=x+y
y=x-y
x=x-y

עריכה: עכשיו קלטתי שפירסמת את זה למעלה

IgalSt 11-10-11 18:11

ציטוט:

נכתב במקור על ידי Xinxy (פרסם 821420)
שיטה ידועה ומגניבה
עוד שיטה:
x=x+y
y=x-y
x=x-y

עריכה: עכשיו קלטתי שפירסמת את זה למעלה

והיא טובה רק לערכים נומריים.


כל הזמנים הם GMT +2. הזמן כעת הוא 03:29.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ