Welcome to קודגורו Sign in | Join | Faq

חידות

Started by yoav zilberman at 04-18-2008 8:50. Topic has 11 replies.

Print Search
Sort Posts:    
   04-18-2008, 8:50
yoav zilberman is not online. Last active: 3/17/2009 12:02:20 AM yoav zilberman

Top 10 Posts
Joined on 04-08-2008
Posts 53
חידה יפה

נסו לייעל את קטע התוכנית הבא:

int x;

if(x%2!=1)

      x=x/2+1;

else

   x=x/2;

 


   Report 
   04-19-2008, 3:57
lhason is not online. Last active: 4/23/2008 10:15:27 PM lhason

Top 50 Posts
Joined on 04-19-2008
Posts 7
Re: חידה יפה
x = x/2+!(x%2);
   Report 
   04-19-2008, 7:40
yoav zilberman is not online. Last active: 3/17/2009 12:02:20 AM yoav zilberman

Top 10 Posts
Joined on 04-08-2008
Posts 53
Re: חידה יפה

אין משמעות לאופרטור "לא" עבור ביטוי חישוב ולא השוואתי או בוליאני.

אך אתה קרוב מאוד, נסה לחשוב עוד קצת.

בברכה,

יואב


   Report 
   04-19-2008, 8:35
lhason is not online. Last active: 4/23/2008 10:15:27 PM lhason

Top 50 Posts
Joined on 04-19-2008
Posts 7
Re: חידה יפה

וודאי שלאופרטור "לא" יש משמעות.

השארית שיכולה להתקבל ע"י חלוקה ל-2 היא 1 או 0. לאחר הפעלת האופרטור "לא" השארית תשתנה לאפשרות השנייה.

ייתכן כי התכוונת שבמקום להשתמש ב "!" עלי להשתמש בטילדה- "~"?

 

בברכה,

לירן.


   Report 
   04-19-2008, 13:52
yoav zilberman is not online. Last active: 3/17/2009 12:02:20 AM yoav zilberman

Top 10 Posts
Joined on 04-08-2008
Posts 53
Re: חידה יפה

לירן שלום רב!

קודם כל, כל הכבוד על הניסיונות.

הרצה מהירה בג'אווה תראה לך שאופרטור "הטילדה" מחזיר מינוס 1 או מינוס 2 (מינוס 1 לזוגיים כאופציה שונה ל-מינוס 2 לאי זוגיים), אופרטור ה"לא" כפי שאני מכנה אותו (ולא הרעיון הלוגי) אינו מתקיים על ביטוי חישוב כפי שכבר ציינתי.

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

חג שמח וכשר,

יואב זילברמן


   Report 
   04-19-2008, 13:54
yoav zilberman is not online. Last active: 3/17/2009 12:02:20 AM yoav zilberman

Top 10 Posts
Joined on 04-08-2008
Posts 53
Re: חידה יפה

הנה פתרון אחד לייעול עם טילדה:

x=x+2+~(x%2)

(חשוב למה)

נסה לחשוב על פיתרון נוסף לייעול


   Report 
   04-19-2008, 13:55
yoav zilberman is not online. Last active: 3/17/2009 12:02:20 AM yoav zilberman

Top 10 Posts
Joined on 04-08-2008
Posts 53
Re: חידה יפה

תיקון ללמעלה:

x=x/2+2+~(x%2)


   Report 
   04-19-2008, 14:20
lhason is not online. Last active: 4/23/2008 10:15:27 PM lhason

Top 50 Posts
Joined on 04-19-2008
Posts 7
Re: חידה יפה

אם כך, הרשה לי לציין שהפיתרון שלי הינו ב-C++.

אתה מוזמן לנסות את האופרטור NOT.

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

 

בתודה מראש,

לירן.


   Report 
   04-19-2008, 22:15
yoav zilberman is not online. Last active: 3/17/2009 12:02:20 AM yoav zilberman

Top 10 Posts
Joined on 04-08-2008
Posts 53
Re: חידה יפה

לירן שלום רב!

אני ממש מצטער, הייתי בטוח שכתבת בג'אווה.

אם כך הפתרון שלך בסדר!

לגבי ההסבר לפיתרון שהצעתי:

טילדה היא אינה אופרטור לא אלא אופרטור שמחזיר את המספיר השלילי מהשארית וקטן ממנו ב-1 למשל:

~(5%2)=(-2)

~(19%4)=(-4)

לכן מכיוון שהתוכנית הראשונית אומרת:

אם מספר זוגי- חלק איקס ב-2 והוסף 1

ואם מספר אי זוגי- הכנס איקס לחלק ל-2

אזי אם נכניס טילדה נדע שכאשר מספר זוגי יש לנו חסר של  מינוס אחד ואז איקס לחלק ל-2 ועוד 2 ייתן קלט רצוי

אם מספר אי זוגי טילדה תעשה מינוס 2 ולכן גם כן איקס לחלק ל-2 ועוד 2 יהיה טוב.

אך ארשה לי להציע את הפתרון המיוחל שהוא יותר פשוט מהאחרים:

x=x/2+1-(x%2)

מה אתה חושב?? 


   Report 
   04-19-2008, 22:19
yoav zilberman is not online. Last active: 3/17/2009 12:02:20 AM yoav zilberman

Top 10 Posts
Joined on 04-08-2008
Posts 53
Re: חידה יפה

לירן שלום!

נסה גם לפתור את החידות האחרות שפירסמתי:

את חידת הסדרה, חידה 4, חידה בג'אווה (אם אתה יודע, אם לא אוכל לתרגם לך לשפה שאתה כן יודע מלבד אסמבלי).


   Report 
   04-20-2008, 4:58
lhason is not online. Last active: 4/23/2008 10:15:27 PM lhason

Top 50 Posts
Joined on 04-19-2008
Posts 7
Re: חידה יפה
יואב שלום,

ידוע לי כי אופרטור טילדה אינו מבצע את הפעולה של האופרטור "לא" אך שיערתי כי אתה מעוניין לראות אותו בפיתרון. בכל אופן, אהבתי את הפיתרון האחרון שהצעת.
בקרוב אנסה לפתור את החידות האחרות.

בברכת חג שמח,
לירן.
   Report 
   04-20-2008, 8:33
yoav zilberman is not online. Last active: 3/17/2009 12:02:20 AM yoav zilberman

Top 10 Posts
Joined on 04-08-2008
Posts 53
Re: חידה יפה

אפשר גם :

x=x/2+(x+1)%2

להשתמע,

יואב


   Report 
קודגורו » פורומים » חידות » Re: חידה יפה

Powered by Community Server, by Telligent Systems