1. Pascal / Говнокод #10180

    +105

    1. 1
    For i:=0 to 40 do For j:=1 to 10 do if (j=0) and (j=10) then W[i,j]:=0;

    Проблемы?

    Запостил: qweqwe, 03 Мая 2012

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

    • Какой-то слишком очевидный бред.
      Ответить
    • Вы ничего не понимаете, это поиск в двумерном массиве по индексу. Также данный код показывает принцип, как получить элемента массива по индексу за O(N), тем самым приближая функционал такой убогой, свойственной императивщине сущности, как массив, к функционалу списка - основной структуры небыдло-функциональных языков.
      Ответить
      • Мне кажется, там лопата в слове "and".
        Ответить
      • > функционал
        Ответить
      • В функциональных языках есть ещё и "векторы" - иммутабельные массивы с доступом O(1)
        Ответить
        • хаскел способствует написанию тормозного говна с высокой сложностью алгоритма, тк поошряет использовать списки во всех случаях
          Ответить
        • Мм..? Емнип, те же массивы в хаскеле через unsafePerformIO и cpp-биндинг, то бишь мутабельные.
          Ответить
          • Даже если Array и запилен через unsafePerformIO и Си, то его пользователям на это пофиг, т.к. интерфейс все равно не дает возможности модифицировать элементы. Он от этого не становится мутабельным.

            (Здесь я не говорю про действительно мутабельные IOArray/STArray)
            Ответить
            • Да, согласен, это внутренности. Погорячился.
              Ответить
    • откуда это?
      Ответить
    • Там просто опечатка, должно быть if (i=0) and (j=10) then
      Ответить
      • А для чего тогда надо городить циклы, чтобы обнулить один единственный элемент массива? Или там ещё опечатка, чувак забыл дописать else ?
        Ответить
    • Исправим опечатку (j=0 вместо i=0). Вот так будет понятнее:
      For k:=0 to 40 do 
        For l:=0 to 40 do
          begin
            if (k < 8) and (l < 5) then
              begin
                i:=k * 5 + l;
      	  For m:=0 to 10 do
                  For n:=0 to 10 do
                    begin
                      if (m < 2) and (n < 5) then
                        begin
                          j:=m * 5 + n;
                          if (i=0) and (j=10) then W[i,j]:=0;
                        end
                    end
              end
          end;
      Ответить
      • le ćenkä
        Ответить
      • Собственно ровно тот же говнокод остался. Вы бы господа сначала сами научились писать не говнокод, а потом бы на других нападали.
        Всем обязательна к прочтению книга С. Макконнелл "Совершенный код", иначе посты здесь противопоказаны дабы не позориться самому.
        Ответить
    • Вот зачем писать эту целую длинную строку, когда можно написать было (j=0) and (j=10) и всё?
      Ответить
    • Мне все хотелось сосать и сосать, я изредка вынимал его изо рта, чтобы еще полюбоваться им. Одной рукой я сжимал его ствол, другой теребил яички. И тут Пашка стал делать резкие вдохи, прижал мою голову к себе, член, забитый мне по самую глотку, так приятно и мощно затрясся, наполняя мой рот чем-то очень терпким. Пашка застонал.
      Ответить

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