חידה | לבעלי חוש תיכנות
-
@יעקב-ישראל אמר בחידה | לבעלי חוש תיכנות:
@בערל שמעת על אקסל ?
אם אתה לא יכול בלי אקסל - אתה עף מהפורום
-
@nigun אוקי אני מתנדב להסביר:
א. כיוון שבייצוג בינארי אפשר ע"י 10 סיביות לייצג 1024 אפשרויות (אם כל ספרה היא 0 או 1, מספר האפשרויות הוא 2 בחזקת 10 = 1024) יוצא שעל ידי 10 סיביות אפשר לקבל כל מספר בין 0 ל-1023 (שזה בעצם 1024 אפשרויות)
ב. נחלק את המטבעות כך שבכל מעטפה תהיה חזקה של 2 (כל מעטפה מייצגת סיבית אחת במספר)מעטפה א = 1 מטבעות (2 בחזקת 0)
מעטפה ב = 2 מטבעות (2 בחזקת 1)
מעטפה ג = 4 מטבעות (2 בחזקת 2)
מעטפה ד = 8 מטבעות (2 בחזקת 3)אם נתבונן רגע, נראה שבארבע מעטפות כבר ניתן לקבל 16 אפשרויות
0000 = 0
0001 = 1 (מעטפה א)
0010 = 2 (מעטפה ב)
0011 = 3 (מעטפות א+ב)
....
1111 = 15 (מעטפות א+ב+ג+ד)אם נמשיך באותה הדרך, במעטפות הבאות יהיו הסכומים 16, 32, 64, 128, 256
המעטפה האחרונה תכיל רק 488 במקום 512 כי לא היו מהתחלה 1024 מטבעות, רק 1000. -
@OdedDvir אמר בחידה | לבעלי חוש תיכנות:
@nigun אוקי אני מתנדב להסביר:
כל הכבוד על ההסבר המפורט, לקח לי קצת זמן להבין את האסימון (ללא בדיקת מקורות מידע אחרים)
אני לא זוכר את עצמי פעם לומד את "מדעי המחשב" (אולי ראיתי פעם בויקפדיה בלא להתעמק), אלא את "ביצועי המחשב".., וככזה, באמת לא הבנתי מיד את כל השרשור כאן.
לאחר התבוננות בדבריך אני חושב שהבנתי.
@nigun לא להיבהל, לא זורקים אותנו משום פורום.. -
@חוקר עברתי על כמה מדריכים שמסבירים איך עובד מחשב, ונראה לי שגם אם אתה מתכנת עם שפה ברמה גבוהה (דהיינו רחוקה מהברזל של המחשב) זה עוזר פה ושם להכיר את הדברים האלה.
מי שמתכנת בשפה ברמה נמוכה ודאי חייב להכיר את זה.אני כותב יישומי וינדוס בשפה לא כל כך מוכרת, ושמה משתמשים בבינארי בשביל פרמטרים. אחרי שאתה קולט את השיטה זה בא לשימוש בכל שפה אחרת שאתה מתכנת. בעצם ייתכן מאוד שבשפות אחרות זה גם ככה.
מגדירים לדוגמא שפרמטר A שווה 1, B שווה 2, C שווה 4, וD שווה 8.
ואז אתה קורא לפונקציה, וצריך לתת לה בפרמטר את A וD. אז במקום שיהיהmyFunction(param1, param2, param3, param4) myFunction(true, false, false, true)
אתה עושה במקום זה רק פרמטר אחד, ונותן לו שילוב של הערכים הנל
myFunction(param) myFunction(A + D)
מקווה שהייתי ברור.
-
@nigun אמר בחידה | לבעלי חוש תיכנות:
חשבתי שGO זאת שפה נמוכה
הכל יחסי...
אם אני יכתוב 9 זה יקלוט שאני מתכוון A+D?
כן, כי אין דרך אחרת לייצג את המספר 9
@שואף אמר בחידה | לבעלי חוש תיכנות:
אני כותב יישומי וינדוס בשפה לא כל כך מוכרת, ושמה משתמשים בבינארי בשביל פרמטרים
לא צריך להגיע לשפות לא מוכרות בשביל זה. כך הדרך לייצג אופציות ב-C ו-++C או בכל שפה אם לא רוצים לזלול זכרון, כך עובד כל ה-API של ווינדוס.
-
@nigun אם "תפתח את המחשב" תראה ש9 כתובה ככה:
00001001
כלומר זה אומר שתי אפשרויות דלוקות הראשונה שמייצגת 1 והרביעית שמייצגת 8 (שהרי 1=1, 2=2, 3=4, 4=8 בסדרת המעטפות הנ"ל).
איך יודעים? כי בסדרת המספרים הזו של חזקת 2 יש לכל מספר דרך יחידה בה הוא יכול להתבטא, ממילא אפשר להמיר מספר לכמה אפשרויות של כן/לא ולהיפך.
יש כאלה שמשתמשים עם זה גם בGO
https://play.golang.org/p/Dm3X-akr31 -
@מעמד אמר בחידה | לבעלי חוש תיכנות:
@dovid צריך להעביר את האשכול למקומו הראוי לו
הפוסט הזה נכתב בגומלין שזה מקום שכולם אמורים להבין.
אבל מה לעשות שזה שפת תיכנות שהרבה לא מבינים וככזה אולי צריך להעביר אותו לפורום תכנותאפשר לענות ע"ז גם כחידה.
הדרך לפתרון היא שכדי להגיע לכל מספר אתה צריך לוודא שיש לך את כל האפשרויות בארסנל.
לכן אם כדי להגיע למס' אחד אתה חייב שיהיה את המעטפה עם שקל אחד. למס' 2 אתה חייב שיהיה מעטפה נוספת עם שתים. אבל למס' 3 אתה יכול להגיע בצירוף 2 המעטפות הקודמות. ולמס' 4 אתה צריך מעטפה נוספת, ולכן תשים בה 4.
על הדרך הזו תגיע ג"כ לאותו מודל תשובה (רק בלי המספר 0 ו1023, כיון שבחידה היו רק 1000 מטבעות). -
@מעמד אמר בחידה | לבעלי חוש תיכנות:
@dovid צריך להעביר את האשכול למקומו הראוי לו
הפוסט הזה נכתב בגומלין שזה מקום שכולם אמורים להבין.
אבל מה לעשות שזה שפת תיכנות שהרבה לא מבינים וככזה אולי צריך להעביר אותו לפורום תכנות\
@שואף אמר בחידה | לבעלי חוש תיכנות:
ילד קטן אמר לי חידה,