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

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    #include <stdio.h>
    int main(void) 
    {
        puts("1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n97\n99");
        return 0; 
    }

    Выводим все нечетные числа от 0 до 100. Одно число - одна строка.

    Запостил: GreatMASTERcpp, 19 Января 2015

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

    • >1
      >нет 2
      не сдал
      Ответить
    • Но задача ведь решена.
      Ответить
      • И готов поспорить, этот вариант побьёт все прочие по производительности.
        Ответить
        • Ну, еще, как вариант, можно было преподавателю сразу сдать консоль с нужным количеством нечетных чисел и не писать програму вообще.
          Ответить
          • Ну задача то поди была "написать программу, выводящую все нечетные числа в диапазоне от 1 до 100". Поэтому просто так в консоль не прокатит. А вот решение ОП'а полностью удовлетворяет условию.
            Ответить
        • Ну при данном N - наверное. При больших - маловероятно, т.к. вся эта хрень будет загружаться с диска, а решения с циклом будут генерить на лету.
          Ответить
    • Элегантный односрочник.
      Ответить
    • Проще написать программу, которая выведет этот код.
      Ответить
      • C-x * c v x 50 RET _ 1 TAB V M + 2 TAB V M *
        Ответить
        • Блин, можно проще было:
          C-x * c v x 50 2 RET TAB * _ 1 +
          Ответить
          • хуясе проще
            это чо вообще? емакс, что ли?
            Ответить
            • Калькулятор:
              C-x * c -- Включить калькулятор
              v x     -- положить на стек вектор заполненый целыми по возростающей
              50 RET  -- всего 50 штук
              2 RET   -- положить 2 на стек
              TAB     -- обменять местами последний и предпоследний элементы стека
              *       -- умножить два последних элемента стека, убрав их и положить на стек результат
              _ 1     -- положить на стек отрицательную единицу
              +       -- сложить два последних элемента стека и заменить их результатом
              v u     -- распаковать вектор (последний элемент стека) на строчки. (по желанию)
              Ответить
              • А стек при этом как-то визуализируется? Или надо в уме держать?
                Ответить
                • http://s12.postimg.org/ae6yfvxod/calc_edited.gif
                  Ответить
                  • Понятно.

                    P.S. Емакс и селфи-гифы писать умеет?
                    Ответить
                    • Ну, с помощью сторонних програм: https://github.com/Bruce-Connor/camcorder.el. Но я так и не добился работоспособности (КДЕ как-то через жопу отдает айдишники окон). Пришлось записывать весь десктоп, а потом редактировать.
                      Ответить
              • Нне знаю, что и ответить. Очешуеваю малость. Спасибо, наверное...
                Ответить
    • говнокод
      Ответить
    • Как жалко, что время института давно закончилось. Можно же было писать вместо программ генераторы подобных однострочников. Хороший троллинг преподов и круглые глаза обеспечены.
      Ответить
      • Со входными данными не прокатит :(
        Ответить
        • https://gist.github.com/1024--/9d0fc3b8bb6e9ed26fa1
          Эх, можно бы было удалять текущий исполняемый файл, я б разгулялся.
          Ответить
          • > Эх, можно бы было удалять текущий исполняемый файл, я б разгулялся.
            Переходи на линукс, у нас там это вполне возможно. А под виндой можно переименовать файл, передать управление в новый, и снести старый.
            Ответить
            • просто стартуешь батник и тот затирает. да и вообще для этого в винде есть соответствующий сервис
              Ответить
              • > есть соответствующий сервис
                Как юзать?
                Ответить
              • Что это ты борманду не отвечаешь? Сразу видно слился
                Ответить
            • Кстати под линупсами можно вообще творить треш, угар и содомию: вывалить новый код в свой же исполняемый файл, а потом сделать на нём exec(), чтобы текущий процесс перезапустился с новым образом.
              Ответить
              • я решил больше не ставить себе линукс, после того раза, когда я показал своему другу его.
                я ему сначала показал, как можно прооинсталить mc через sudo && apt-get install mc
                и далее по тексту:
                -ясно... а как тут харды формтить?
                -rm / -rf
                -и что, если написать, то он удалит?
                -да нет [enter]...
                Ответить
                • твой лайнэкс настолько стар, супер стар, что не умеет в презерв рут?
                  Ответить
                  • так sudo же, он там кажется минут 5 или 15 с его правами может команды выполнять
                    Ответить
                    • > с его правами может команды выполнять
                      Если допишет перед командой sudo, само собой. И если кеш включен (я на серваках отключил, от греха подальше). Ну а если сделать sudo su - можно стать рутом на неопределенный срок, пока не надоест.
                      Ответить
                      • Проще sudo -s или sudo -l (разница есть в манах).
                        Ответить
                        • Не знаю, я просто привык вбивать sudo su - для такого превращения. Лениво экономить символы на этой фигне, если и так на автомате набирается.
                          Ответить
                          • sudo -s сохраняет окружение, в некоторых случаях это может быть удобнее.

                            Кроме того, sudo su запускает два приложения, а это лишняя трата памяти ;-)
                            Ответить
                      • Я чаще делаю sudo bash, а именно в таком раскладе: есть амазоновский сервер с убунтой, и типичным пользователем по имени убунту. Но мне, как правило, нужен пользователь женкинс, от имени которого и нужно выполнять все задачи. Но если я переключусь на женкинса, то получить судо от него уже не смогу. А так - поработал женкинсом, вышел - снова рут / убунту / с чего начинал.
                        Ответить
                • > rm / -rf
                  Не работает же, лет 10 как! Надо rm -rf /*
                  Ответить
                • P.S. И вообще, а в чем проблема? Я и в винде могу все файлы, кроме открытых, погрохать. Винду тоже из-за этого юзать нельзя?
                  Ответить
                  • эм, в какой? странно, но помнится мне, что даже ХР не давала мне c:\windows удалять
                    Ответить
                    • Блин, вот зачем ты это сказал, содомит? Я ведь снепшот виртуалки не сделал!..

                      "Папка windows является системной папкой windows и необходима для правильной работы windows. Удалить ее нельзя."

                      Но ведь все нормальные посоны юзают far/total... В общем удалилось почти всё, 129 метров осталось от windows и десяток от program files :(
                      Ответить
                      • фар же в корзину обычно удаляет
                        Ответить
                        • Но ведь настоящие посоны жмут shift-del, а не f8. Эх, ладно, всё равно этот образ пересоздать хотел.
                          Ответить
                      • >Но ведь все нормальные посоны юзают far/total...
                        ну так-то да, но папку, где ОС лежит с шифтом не удаляют, чтобы проверить, удалится ли она :)
                        Ответить
                        • А разве rm -rf /* из-под рута делают, чтобы проверить, удалится ли? :)
                          Ответить
                          • а это уже невнимательность :) помнится раньше, когда я так писал, он сразу говорил, что он не может.
                            Ответить
                      • А еще был Нортон Ютилитис. Он вообще мог все удалить. Когда-то, когда у Виндовса 95 была проблема с длинными именами файлов - очень полезная програма была.
                        Ответить
                        • да еще в XP (кажется, или 98, не помню уже) были файлы, которые удалить нельзя было :(
                          Ответить
                      • А еще на ОС8 (и раньше наверное тоже, уже не помню) можно было очистить жесткий диск перетащив его иконку на корзину. (Они обычно рядом как раз лежали на десктопе). Случалось иногда по неосторожности.
                        Ответить
                • P.P.S. У меня история забавней была - я занулял раздел dd'шкой, и команда осталась в истории рутовой консоли... Потом, через день, я как-то неосторожно нажал стрелку лишний раз, и попалась как раз эта команда. Раздел ушел в топку. Благо бекапы есть :)

                  С тех пор перед всеми опасными командами пишу пробел, чтобы не сохранялись в истории.
                  Ответить
                  • и как это помогает?
                    Ответить
                    • Если перед командой поставить пробел, она не пишется в историю. Т.о. вероятность случайного запуска снижается до нуля.

                      Опять же, не стоит держать рутовые соснольки (sudo su) открытыми без причины. Ибо ССЗБ.
                      Ответить
          • метапрограммирование
            Ответить
    • \n забыли в конце
      Ответить

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