1. Си / Говнокод #12190

    +133

    1. 1
    2. 2
    3. 3
    #include <math.h>
     ...
    result = (thisCos ? cos : sin)(3.140);

    Коллега занимается инновациями в Сколково, так они там изобрели операцию NOT на континууме.

    Запостил: serpinski, 24 Ноября 2012

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

    • thisCos это че?
      Ответить
      • thisCos инициализируется указателем на cos, если thisCosFlag = true, иначе thisCos = NULL;
        Ответить
        • А вот это уже жесть. Почему тогда просто не назвать thisOp и присваивать адрес нужной функции одного аргумента?
          Ответить
        • Где в этом коде thisCos инициализируется указателем на cos?
          Ответить
        • хуйню написал
          Ответить
    • Боян
      Ответить
      • Специально для минусующих ньюфагов:
        http://govnokod.ru/1318
        Разница лишь в том, что тогда этот код тонул, а сейчас ньюфаги увидили невидаль и плюсуют топик
        Ответить
        • Разница в том, что там было M_PI, а здесь магическая константа, да ещё с финальным нулём зачем-то.
          Ответить
    • bormand только что #
      Вот им больше в Сколково делать нехуй, кроме как писать эту хуиту с косинусами?
      Ответить
      • Ну почему же, я уверен что еще есть хуита с тангенсами и гиперболическими синусами
        Ответить
    • И какое уёбище умудрилось округлить 3.1415926... до 3.14. Правилам округления видимо в школе не учили.
      Ответить
      • И какое уёбище умудрилось округлить 3.1415926... до 3.14. Правилам округления видимо в школе не учили.

        fxd.
        Ответить
        • Да что такое, куда пропадает 0.

          3.14[color]15[/color]926 до 3.14
          Ответить
          • Страйко, че за баги? Если у 3.140 покрасить красным нолик, получается 3.14!

            3.14
            Тест: 3.14хуй
            Ответить
            • 3.14

              Oh shi...
              Ответить
            • взяв символ 0 в любой тег - он пропадает
              Ответить
              • К разработке шахматного движка на хаскеле присоединиться еще хочешь?

                Постучи тогда в личку https://github.com/failuref/HaskellChess, дам право коммитить.
                Ответить
                • Крылов. Басня.
                  Гумно гумна звало на хацкеле писать,
                  Да призадумалось...
                  Ответить
              • взяв символ 0 в любой тег - он пропадает
                Символ берёт сам себя?
                Учи русский вместо хацкеля, гумно.
                Ответить
            • Тест.
              Жирный нолик: «».
              Косой нолик: «».
              Подчёркнутый нолик: «».
              Зачёркнутый нолик: «».
              Мигающий нолик: «».
              Зелёный нолик: «».
              Большой нолик: «».
              Код из нолика: «
              0
              ».
              Ответить
              • Итого: нолик исчезает, если он в любом теге, кроме code.
                Ответить
                • 3.14
                  Ответить
                • Видимо парсер проверяет пустоту блока через (!block), и соответственно считает его пустым (т.к. "0" парсится в 0, и считается как false).

                  Два нолика: (00)
                  Ответить
                  • 3.14
                    Ответить
                  • Ахаха петудинамическая петузация такая петуническая петузация...
                    Ответить
                    • Да тарас, это большое преимущество динамической типизации. Ведь красные нолики это большое зло, а благодаря динамической питузации их невозможно написать.
                      Ответить
                    • > петудинамическая

                      Да не динамическая тут виновата блжад. А нестрогая, из-за которой строка неявно к числу приводится.

                      На том же питоне с его строгой динамической такого говна никогда не случится.
                      Ответить
                    • false
                      Ответить
                    • ВНЕЗАПНО: http://www.php.net/manual/ru/types.comparisons.php

                      empty('0') == true, а is_null('0') == false вопреки тому, что ожидается из названий функций.

                      s/empty/is_null/ в модуле bbcode.php, тогда нолик исчезать не будет.
                      Ответить
                      • Лучше длину строки на проверить по-моему.
                        Ответить

                  • Фэйл )
                    Ответить
                • > нолик исчезает, если он в любом теге, кроме code.

                  [color=red]0[/color]

                  не исчез
                  Ответить
              • 3.14
                Ответить
              • 3.14
                Ответить
                • I did it! I did it!
                  Ответить
                • Ответить
                • 3.140
                  Ответить
                  • 3.14
                    Ответить
                    • Блин, не понял как получилось...
                      Ответить
                      • fail.
                        http://img.sc/img/395e8008b0cc696f1e3de08ce0987f8d.png
                        Ответить
                        • Спасибо
                          Ответить
                        • ЩРЕВТЫЫЫ
                          Ответить
                          • мож у него монитор BGR и ему хорошо, что ты так сразу
                            Ответить
                            • Что за BGR? Там скорее питухосью пахнет.
                              Ответить
                              • Ну порядок пикселей в матрице бывает RGB и BGR. Соответственно когда в питухоси субпиксельный антиалиасинг включаешь, надо пощелкать эти режимы, и выбрать подходящий к твоему монику. Иначе смотрится дерьмово, как этот рисунок.
                                Ответить
                                • А теперь смертельный номер: выбираем шрифт Myriad Pro... С этим шрифтом картинка не дерьмо только при полностью выключенном сглаживании.
                                  Ответить
                                  • спасибо, теперь я знаю термин "гуманистический гротеск"
                                    Ответить
                                    • "гуманистический гротеск" это когда смотрится как говно при любом сглаживании?
                                      Ответить
                                      • На питухоси, т.е. линуксе, щревты почти всегда говно.

                                        // К.О.

                                        П.С. Вы солярку не видели.
                                        Ответить
                                        • > На питухоси, т.е. линуксе, щревты почти всегда говно.
                                          К сожалению да.

                                          Искренне ваш, пользователь питухоси.
                                          Ответить
                                        • > П.С. Вы солярку не видели.
                                          Видел, видел... заказывал нахаляву диск от сана, еще во времена CRT моников. Так вот - видео там работало только на 60Гц, дров навскидку найти не смог (инет тогда у меня был был gprs помегабайтный), да и сам интерфейс смотрелся как говно, даже по сравнению с линухой... Поэтому снес ее нахер, а диск отправил под кружку с чаем ;)

                                          Может быть сейчас она и получше...
                                          Ответить
              • иканус, как дела?
                Ответить
            • 42
              Ответить
    •        // Код с отступом в первой строке
              if (!block) {
                      // ...
              }
      Ответить
    • Ответить
    • Те, кто умудряется округлять π до 3.140, и не видит разницы между 3.14 и 3.140, могут минусовать этот пост и идти нахуй.
      Ответить
      • Первый пошел ;)

        В некоторых случаях значащий ноль может находиться и в конце числа; округляя, например, число 2,540002, мы получаем число 2,54000, в котором все ноли на конце - значащие, так как указывают на заведомое отсутствие единиц в соответствующих разрядах.
        Ответить
        • Кстати, при округлении 2,539997 тоже получим 2,54000.
          Ответить
          • Да, все верно. Эти нолики показывают точность. 0⁣
            Ответить
            • Точнее будет так: 2,54000 — это не число, а полуоткрытый промежуток [2,539995; 2,540005). То есть работая с десятичными дробями, мы на самом деле имеем дело с промежутками.
              Ответить
            • И я считаю, что людей, которые не видят отличий между 3.14 и 3.140, нельзя допускать к расчетам.
              Ответить
              • Нужно уже ввести тип промежутков и делать все вычисления не над конечными округленными числами, а над промежутками.

                Например (3.0#0.5) + (4.0#0.5) = (7.0#1.0)

                (#) - это плюсминус

                Таким образом при говновычислениях будет получаться что-то вроде x#100500 и сразу будет понятно, что вычисления пиздец какие неточные и верить результату нельзя.
                Ответить
                • Я хотел сделать рисовалку графиков на таком принципе. Но у меня случился облом, я понял, что если бы её реализовал, то тогда бы функция x*100500 - x*100500 давала широкую полосу.
                  Ответить
                  • Бесконечно широкую полосу...

                    Ну кстати, а ведь так оно и есть, мы потеряли все значащие цифры совершив это вычитание.
                    Ответить
                • # это четыре плюса
                  и GC
                  Ответить
                • При умножении возникнет асимметрия. (3.0#0.5) * (4.0#0.5) принимает значения от 2,5×3,5 = 8,75 до 3,5×4,5 =15,75. Как записать результат: (12.0+3.75-3.25) или (12.25#3.50)? Первое некрасиво, потому что плюсминус несимметричный; второе неочевидно (особенно нубам).
                  Ответить
                  • Либо 12.0#3.75
                    либо хранить границы, а не центр и разброс, чтобы было честно
                    Ответить
                    • ... либо функцию распределения: какое значение с какой вероятностью может принимать величина.
                      Ответить
                      • Да, через дисперсию и матожидание. Жаль только, что работает эта херня лишь для сложения.
                        Ответить
                        • Дисперсия и матожидание описывают только нормальное распределение. А после умножений и делений распределение будет только чёрт знает каким, поэтому для его описания нужна будет вся функция, а не только два момента.
                          Ответить
                    • > либо хранить границы

                      Конечно границы. Оператор # я так ввел, чтобы идею передать.

                      Да и удобный он.
                      Ответить
                  • Википедия: Интервальная арифметика.
                    Ответить
                    • И теперь кстати довольно легко определяется оператор примерно равно ~= для интервалов.

                      Интервалы примерно равны тогда и только тогда, когда они пересекаются.

                      Т.е. [500,1000] ~= [1000,10000]

                      Не идеально, но просто и без разночтений.
                      Ответить
                      • Как это без разночтений?
                        §1. [500,1000] ~= [1000,10000]
                        §2. [10000,20000] ~= [1000,10000]
                        §3. Как теперь насчёт сравнения [500,1000] и [10000,20000]?
                        Ответить
                        • Ухаха. Действительно очень интересно. Теряется транзитивность равенства.

                          Но я думаю даже со стадартным

                          a ~= b = abs (a - b) < e

                          Также будет.
                          Ответить
                          • Дарю. 0‌чередная говнолиба для говнофичи.
                            http://ideone.com/IF6HCf
                            Ответить
              • Положим X = [3,1395; 3.1405). Тогда выражение (thisCos ? cos : sin)(3.140) перепишется как thisCos ? [inf cos(X); sup cos(X)) : [inf sin(X); sup sin(X)), что в итоге будет равно
                thisCos ? [-0,9999998; -0,9999994) : [0,0011; 0,0021)

                А если бы константа была равна 3,14, а не 3,140, то получили бы
                thisCos ? [-0,99998; -1,00000) : [-0,0034; 0,0066)
                , что уже включает «правильные ответы» -1 и 0, в отличие от предыдущего результата.
                Ответить
                • Только тут открытость промежутков придётся проверить. Синус на данных промежутках убывает, поэтому скобочки наоборот, а косинус во втором случае имеет минимум, поэтому конец промежутка во втором примере придётся включить.
                  Ответить
                  • Вообще говоря косинус на этом отрезке имеет точку экстремума, до которой он убывает, а потом начинает расти, поэтому нижней границей будет ровно -1.
                    Ответить
                • Да кстати, перевернутые промежутки типа [-0,99998; -1,00000) - надругательство над математикой.
                  Ответить
                  • А чем он перевернут?

                    (-1,0; -0,9]

                    Не по-возрастанию упорядочены границы ты имеешь ввиду?
                    Ответить
              • это зависит от контекста, в котором эти числа используются. То есть, что это округление - указывается явно. Вот только как это записывается математически - я не помню. А вот в задачах программирования разницы таки нет.
                Ответить
    • не говно
      Ответить

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