חידה | לבעלי חוש תיכנות
-
@יעקב-ישראל אמר בחידה | לבעלי חוש תיכנות:
@עימוד-עילית מה הקשר ניתן להגיע עם זה ל1000
@שואף אמר בחידה | לבעלי חוש תיכנות:
יש לך אלף מטבעות של שקל
@עימוד-עילית אופפססס צודק
יאללה דבר עם @שואף על כניסה על חשבונו -
לא חשבתי שיש לי חוש תיכנות...
גילוי נאות: לא הסתכלתי בהודעות שלפני, אלא פתרתי את החידה ע"פ הפוסט הראשון.
זה הסכומים שיש בכל מעטפה.
1
2
4
8
16
32
64
128
256
489
החישוב הוא, שתמיד המעטפה הבאה צריכה להיות גדולה ב-1 יותר מצירוף כל המעטפות הקודמות. -
@עימוד-עילית יפה מאוד.
יש לך חלק ממה שנדרש למתכנת. ואת החלק היפה (הכי פחות קשה ומרגיז) מבין החלקים...@dovid אתה ממש משכנע להיות מתכנתים
-
@בערל שמעת על אקסל ?
-
@בערל שמעת על אקסל ?
@יעקב-ישראל אמר בחידה | לבעלי חוש תיכנות:
@בערל שמעת על אקסל ?
אם אתה לא יכול בלי אקסל - אתה עף מהפורום
-
@יעקב-ישראל אמר בחידה | לבעלי חוש תיכנות:
@בערל שמעת על אקסל ?
אם אתה לא יכול בלי אקסל - אתה עף מהפורום
-
-
@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. -
@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)
מקווה שהייתי ברור.
-
@חוקר עברתי על כמה מדריכים שמסבירים איך עובד מחשב, ונראה לי שגם אם אתה מתכנת עם שפה ברמה גבוהה (דהיינו רחוקה מהברזל של המחשב) זה עוזר פה ושם להכיר את הדברים האלה.
מי שמתכנת בשפה ברמה נמוכה ודאי חייב להכיר את זה.אני כותב יישומי וינדוס בשפה לא כל כך מוכרת, ושמה משתמשים בבינארי בשביל פרמטרים. אחרי שאתה קולט את השיטה זה בא לשימוש בכל שפה אחרת שאתה מתכנת. בעצם ייתכן מאוד שבשפות אחרות זה גם ככה.
מגדירים לדוגמא שפרמטר 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)
מקווה שהייתי ברור.
-
@שואף
חשבתי שGO זאת שפה נמוכה
אגב איזה שפה זה?
ואיך זה פתר את הבעיה?
אם אני יכתוב 9 זה יקלוט שאני מתכוון A+D?@nigun אמר בחידה | לבעלי חוש תיכנות:
חשבתי שGO זאת שפה נמוכה
הכל יחסי...
אם אני יכתוב 9 זה יקלוט שאני מתכוון A+D?
כן, כי אין דרך אחרת לייצג את המספר 9
@שואף אמר בחידה | לבעלי חוש תיכנות:
אני כותב יישומי וינדוס בשפה לא כל כך מוכרת, ושמה משתמשים בבינארי בשביל פרמטרים
לא צריך להגיע לשפות לא מוכרות בשביל זה. כך הדרך לייצג אופציות ב-C ו-++C או בכל שפה אם לא רוצים לזלול זכרון, כך עובד כל ה-API של ווינדוס.
-
@שואף
חשבתי שGO זאת שפה נמוכה
אגב איזה שפה זה?
ואיך זה פתר את הבעיה?
אם אני יכתוב 9 זה יקלוט שאני מתכוון A+D?@nigun אם "תפתח את המחשב" תראה ש9 כתובה ככה:
00001001
כלומר זה אומר שתי אפשרויות דלוקות הראשונה שמייצגת 1 והרביעית שמייצגת 8 (שהרי 1=1, 2=2, 3=4, 4=8 בסדרת המעטפות הנ"ל).
איך יודעים? כי בסדרת המספרים הזו של חזקת 2 יש לכל מספר דרך יחידה בה הוא יכול להתבטא, ממילא אפשר להמיר מספר לכמה אפשרויות של כן/לא ולהיפך.
יש כאלה שמשתמשים עם זה גם בGO
https://play.golang.org/p/Dm3X-akr31 -
@nigun אם "תפתח את המחשב" תראה ש9 כתובה ככה:
00001001
כלומר זה אומר שתי אפשרויות דלוקות הראשונה שמייצגת 1 והרביעית שמייצגת 8 (שהרי 1=1, 2=2, 3=4, 4=8 בסדרת המעטפות הנ"ל).
איך יודעים? כי בסדרת המספרים הזו של חזקת 2 יש לכל מספר דרך יחידה בה הוא יכול להתבטא, ממילא אפשר להמיר מספר לכמה אפשרויות של כן/לא ולהיפך.
יש כאלה שמשתמשים עם זה גם בGO
https://play.golang.org/p/Dm3X-akr31 -
אגב בJS המודרנית ניתן לכתוב בJS מספר בהמון ייצוגים, ביניהם גם בינארית (בינארי הכוונה ייצוג זוגי - רק אפס ואחד). כך שתוכלו לכתוב בקונסול 0b00001001 ולראות את התוצאה.
-
@dovid צריך להעביר את האשכול למקומו הראוי לו
הפוסט הזה נכתב בגומלין שזה מקום שכולם אמורים להבין.
אבל מה לעשות שזה שפת תיכנות שהרבה לא מבינים וככזה אולי צריך להעביר אותו לפורום תכנות