Няшная / Говнокод #8475 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
for ( i = 0; i <= n; i++ )
{

    k = 0;

    for ( j = ( 2 * n - i - 1 ); k == 0; k++ )
    {
        a1 = a1 & ~ ( 1 << ( j ) );
        a1 = a1 | ( ( ( a1 >> ( i ) ) & 1 ) << ( j ) );
    };
}

по условию задачи (реверсирование битов числа) студентам нельзя было юзать if.

Запостил: bieber bieber, (Updated )

Комментарии (18) RSS

  • школоло, но все равно смешно.

    минуты две понадобилось что бы 6ю строчку мозги приняли и проинтерпретировали.

    🙂
    Ответить
    • 1. +1. зачем вообще внутренний цикл?
      2. реверсирует? n чему равна? если n = половине разрядности числа - тогда младшая половина не меняется, а старшая - реверс младшей. если n = разрядности числа вообще фигня получается...
      3. в строке 1: i <= n - косяк наверно.
      видимо требовалось что-то типа
      // n = sizeof(a1)*4;
      for(i = 0; i < n; i++){
      j = (2 * n - i - 1);
      t = ((a1 >> i) & 1) ^ ((a1 >> j) & 1);
      a1 ^= (t << i) | (t << j);
      }
      Ответить
  • #include <iostream>
    #include <limits.h>
    #include <assert.h>
    using namespace std;
     
    int main() {
            auto i=100500;
            numeric_limits<decltype(i)> info;
            assert(info.is_integer());
            int n=info.digits()+info.is_signed();
            decltype(i) r=0;
            for(int c=0;c<n;++c)
            {
                    r|=(i&1)<<(n-1);
                    r>>=1;
                    i>>=1;
            };
            cout<<r;
            return 0;
    }

    Не проверял, но можно что-то типа такого.
    Ответить
  • кстати, любой if можно записать как for(; <условие>; ){ <выражение> break;}
    жульничество конечно:)
    Ответить
    • А зачем здесь нужен if? Ума не приложу, куда его впихнуть. Только если цикл for переписать на for(;;) и применять if как условие выхода.
      Ответить

Добавить комментарий

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8