השאלה הפתוחה משאלון שלב ב' של התחרות השביעית

עמוד

ברוכים הבאים לאתר תחרויות קודגורו! פורומים חידות השאלה הפתוחה משאלון שלב ב' של התחרות השביעית

מוצגות 2 תגובות – 1 עד 2 (מתוך 2 סה״כ)
  • מאת
    תגובות
  • #77015
    CodeGuru
    מנהל בפורום
    להזכירכם: מה עושה הקטע הבא?
    int f(unsigned int x, unsigned char n)
    {
    return ((((x)-~0UL/255*(n))&~(x)&~0UL/255*128) != 0);
    }

    אתם מוזמנים לשלוח גם תובנות חלקיות.

    #78454
    Son
    משתתף

    int fchar(unsigned char x, unsigned char n)
     return ((x-n) & ~x & 0x7F) != 0

    inf f(unsigned long x, unsigned char n)
     return (fchar(x&0xFF, n) &
             fchar(x>>8&0xFF, n) &
             fchar(x>>16&0xFF, n) &
             fchar(x>>24&0xFF, n) &
            );

    נכן כאשר לכל בייט מx מתקיים xi>n. אחרת carry בחיסור מסבך את זה.

     

    תרגום נכון תמיד אבל טיפה קרוב יותר למקור:

    inf f(unsigned long x, unsigned char n)
    {
     unsigned long n4 = n<<24+n<<16+n<<8+n; // if n=0x5c then n4 = 0x5c5c5c5c
     return (0x7f7f7f7f & ~x & (x-n4) );
    }

     

    אני לא זוכר כבר את כל השטיקים של חיסור במשלים ל-, והcarry מסבך אותי נורא… אני אשאיר את זה למישהו אחר מכאן, בינתיים לפחות.

מוצגות 2 תגובות – 1 עד 2 (מתוך 2 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.