1. C++ / Говнокод #853

    +1034.8

    1. 1
    2. 2
    int i=8, a1, a2;
    for (a1=a2=1; i>2; a1=(a2+=a1)-a1) i--;

    Вычисление i-го числа из ряда Фиббоначи.
    Ответ в а2.
    ЗЫ. Эта прога съела мозг учителя в институте. Рекомендую ;)

    Запостил: guest, 10 Апреля 2009

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

    • прога из серии "я знаю что в циклах в c/c++ можно писать всякую эзотерическую поебень"
      -1
      Ответить
    • Гость-говно:
      А по-моему, красивее
      for (a1=a2=1; i>2; a1+=a2+=a1)i-=2;
      нечетные в a1, четные в a2.
      [quote=Говногость]прога из серии "я знаю что в циклах в c/c++ можно писать всякую эзотерическую поебень"
      -1[/quote]
      По-моему, нормальное использование возможностей языка. Нафиг писать сложнее, когда и так все ясно?
      Ответить
    • Milez:
      Гениально!
      Ответить
      • а чтоб никто не изгадил иддилию я схоронил страницу
        http://www.peeep.us/1d429236
        Ответить
      • Learning a ton from these neat arsilcet.
        Ответить
    • КО:
      это какая-то хуита
      Ответить
    • ядщи:
      автору линейкой по рукам
      Ответить
      • −5.4
        "0 за и 2 против"
        ай лолд

        http://govnokod.ru/853#comment2667
        −1.8
        "1 за и 0 против"
        ай лолд хард
        Ответить
    • Йа:
      Студент - молодец, преподавателя - сад, коментаторов, которые наезжают на код - в биореактор. Нормальный код, читается на раз, кто не знает элементарных операций и их приоритетов - пусть читают c++ для школьнеГов.
      Ответить
    • Михаил:
      [quote=Йа]Нормальный код, читается на раз, кто не знает элементарных операций и их приоритетов - пусть читают c++ для школьнеГов.[/quote]
      почитайте Макконнелла штоле, нешкольнег, прежде чем эдакую хуйню писать
      Ответить
    • Ггггг:
      с вводом с консоли и выводом на экран
      for (int a1 = 1, a2 = 1,  i = scanf_s("%d",&i) + i-1; (i--)>2; a1=(a2+=a1)-a1 , (i==2)? printf_s("Result = %d \n", a2):NULL ) ;
      Ответить
    • К О:
      на язык brainfuck не смотрели, он вам понравиться. я гарантирую это
      Ответить
    • для вуза - отлично, хотя стоит накрутить и побольше.
      Ну а если хотя бы даже для себя пишешь, то такого лучше избегать
      Ответить
    • Если скорость больше чем у "разжёванного" цикла, то для библиотечной документированной функции вполне себе сойдёт. Для обычных проектов слишком закручено
      Ответить
    • Чистый С++:
      #include <iostream> 
      int main() { for(int a1 = 0, a2 = 1; !(a2 & (1 << 31)); a2 += (a1 += a2), std::cout << a1 << std::endl << a2 << std::endl); return 0; }
      Ответить
    • такое чувство что всякие люди, которые кричат "гениально" злоупотребляют веществами, ломать мозг хорошо когда нечем занятся, когда ипшешь большой проект и там куча таких вот штук это не то слово что зло
      Ответить
    • int FibonacciReccurent(const double Index){
      double mIndex = Index + 1;
      double alpha_1_Root = pow( 1.618035, mIndex );
      double alpha_2_Root = pow( -0.618035, mIndex );
      return 0.4472132 * ( alpha_1_Root - alpha_2_Root );
      }

      Да, я школоло.
      Но не лучше ли так, пусть и с ворнингом, если нужна библиотечная функция?
      Макконнелла прочитал, изотерикой не занимаюсь.
      А вообще для универа считал вот так -

      int Fibonacci(int const lastIndex)
      {
      int a = 1; // 0 index
      int b = 1; // 1 index
      int temp = 0;
      for ( int i = 1; i < lastIndex; i++ ){
      temp = a;
      a = b;
      b += temp;
      }
      return b;
      } //yes, variable names liek a,b,temp are gay.
      Ответить
    • За такой код в любой приличной конторе подарят много-много дюлей.
      Ответить
    • Покороче:
      int n = 8, a1, a2;
      for (a1=a2=1; n-->0; printf("n = %d\n", a2-(a1=(a2+=a1)-a1)));
      Ответить
      • Cainllg all cars, calling all cars, we're ready to make a deal.
        Ответить
    • А вот так вроде бы и коротко, и понятно:
      for(a1=a2=1; i>2; i--){
      	a2+=a1;
      	a1=a2-a1;
      }
      Ответить
    • Выглядит элегантно, но нахуя выебываться - я не понимаю, компилятор все равно соберет точно также, как и кучу других аналогичных вариантов. Зато если продолжать следовать такому стилю говнокода то рано или поздно нтакнешься на UB шо сам не поймешь откуда что растет. В общем главное преимущество ЯП высокого уровня - простота сопровождения идет нахуй.
      Разница между реализациями выплыветкогда пинами контроллера нужно будет от балды подергать, ВЧ-синтезатор на атмеге (к чему она вообще не предназначена) реализовать или впихнуть программу управления энергосистемой в 2кб флеша на какой-нить нищебродский 470, тут да, каждый изъебывается сколько может, мереются размерами кода и количеством тактов, до тех пор пока не столкнутся с задачей по сложнее, например, по типу синтеза регулятора реактивного двигателя, вот тогда да, тогда все засовыают свою килобайты пиносв обратно в штаны и работают как приличные люди.

      Вообщем такой же бред, как использование рекурсии за пределами рекурентных функций (типа синтеза фильтра Калмана). Элегантно, но нахуй никому не нужно, а может даже и вредно.
      Ответить
    • А у меня Фибоначчи считается так:
      Recurrence(Algo::Op::Add<int>, 1, 1).Drop(7).Front()
      Если я только с индексом не ошибся.
      Ответить

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