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

    +848.7

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    int p,k,l,i,j,d,q,R,t,r;
      S1:    s=0; p=1;
      S2:    if (s==0) { i=1; j=n; k=n; l=2*n+1; }
             if (s==1) { i=n+1; j=2*n; k=0; l=n+1; }
             d=1; q=p; r=p;
      S3:    if (x[i]>K>x[j]->K) goto S8;
      S4:    k=k+d; x[k]=x[i]; c[k]=c[i];
      S5:    i+=1; q-=1; if (q>0) goto S3;
      S6:    k+=d; if (k==l) goto S13; else x[k]=x[j];c[k]=c[j];
      S7:    j-=1; r-=1; if (r>0) goto S6; else goto S12;
      S8:    k+=d; x[k]=x[j]; c[k]=c[j];
      S9:    j-=1; r-=1; if (r>0) goto S3;
      S10:   k+=d; if (k==l) goto S13; else x[k]=x[i];c[k]=c[i];
      S11:   i+=1; q-=1; if (q>0) goto S10;
      S12:   q=p; r=p; d=-d; t=k; k=l; l=t; if (j-i<p) goto S10; else goto S3;
      S13:   p+=p; if (p<n) { s=1-s; goto S2; }
             if (s==0) for (t=1; t<=n; t+=1) { x[t]=x[t+n];c[t]=c[t+n] }

    Вот такой вариант сортировки предложен в одной известной книге. Оно работает...

    Запостил: guest, 26 Декабря 2008

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

    • simon:
      прям машина тьюринга
      Ответить
    • dj Virus:
      а какого года книга?
      Ответить
    • D Mak:
      ниасилил, каменты б хотяб..
      Ответить
    • Володя:
      А чо, нормальная сортировка
      Ответить
    • coba:
      шо за книга???!!
      Ответить
    • Вроде, в каком-то из промышленных языков прошлого ставились целочисленные метки в начале строк, и IF позволял указывать метку; возможно код был портирован с этого языка.
      Ответить
      • Бэйсик промышленный язык?
        Ответить
        • Я писал на CamBasic - языке для промышленных контроллеров. Забавно, чё.
          Ответить
          • Спермобейсик?!
            Ответить
            • Назмозг ;) Не CumBasic, а CamBasic.

              P.S. Под CAM, видимо, понимается Computer-Aided Manufacturing
              Ответить
              • не, так не интересно
                Ответить
                • Кстати, данный говнокод случайно выдран не из исходников «J»? Уж больно похоже.
                  Ответить
        • В Бейсике (оригинальном, а не Quick/Visual) была бы пронумерована каждая строка.
          Ответить
    • taviscaron:
      basic )
      Ответить
    • ink:
      Освободите паццтул =)
      Ответить
    • Z:
      Профессиональный индус писал :)

      (хотя возможно через извращатель пропустили)
      Ответить
    • Мультикасса:
      Жесть какая... А представьте если подобное дебажить... О_о
      Ответить
    • J:
      васик жив =)
      Ответить
    • Volchara:
      Не дай бог такую книжку дети увидят...
      Ответить
    • Вообще-то, на древнем Фортране (ранее 1977) года не было блоковых конструкций. Поэтому приходилось писать что-то типа IF ... GOTO. По-другому никак нельзя было писать. Приходилось так извращаться. А код, был, вероятно, сконверчен из такого фортрана.
      Хотя вряд-ли. В Фортране только переменные, начинающиеся на i, j, k, l, m, n, являются целочисленными. А тут как целочисленные индексы использовались переменные на q, на r, на d и другие. К тому же Фортран не различает регистр символов.
      Ответить
    • valexey:
      > В Фортране только переменные, начинающиеся на i, j, k, l, m, n, являются целочисленными.

      Сколь я помню фортран, там это можно переопределить.
      Ответить
    • pxn:
      А какая книга?
      Ответить
    • Теперь понятно почему все стали считать GOTO моветоном
      Ответить
    • А какой это алгоритм сортировки? Я вообще не могу понять, но, судя по объему, - быстрая
      Ответить
      • Помоему это шейкерная сортировка на первый взгляд.
        Ответить
    • Обломитесь, товарищи :))) Ничо тут не сортируется :)
      Ахтунг, C++ в 6 строке ;)
      Ответить
    • Это коэн от господина Кнута, думаю знакомы. Думаю, знакомы.
      http://www.etsimo.uniovi.es/cscene/topics/algo/cs9-03.xml.html
      Ответить
    • Как будто суперкомпилятор поработал
      Ответить
    • Это код из моей проги ))) Приятно видеть )))
      Этот говнище код я выдрал из книги кнута - сортировка двусторонним слиянием.
      6я строка не работает посудите сами почему: x[i]>K>x[j]->K - тут нет указателей, это обычные переменные и массивы.
      Еще k не может принимать значения выше 500. хз почему. Я пытался исправить, но сами понимаете тут нечитаемо.
      Представьте себе я с этой херью сдавал прогу. Препод попросил объяснить как работает код ))) Я объяснял долго и безуспешно )
      Ответить
    • всем вьибал по минусу
      Ответить
    • Что-то уж больно знакомое. Кажется я видел оригинал на BASIC'е
      Ответить
    • Много букв. Не осилил.
      Ответить
    • я сначала растерялся, и не понял что за язык... :(
      Ответить

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