Няшная / Говнокод #26701 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
// https://youtu.be/KdZ4HF1SrFs?t=4473
// про питоновский for

for x in 1, 5, 2, 4, 3
    print(x**2)


//> написать это в две строки у вас не получится

for(struct {size_t cnt; int arr[5];} i = {0, {1,5,2,4,3}}; i.cnt < sizeof(i.arr)/sizeof(i.arr[0]); ++i.cnt )
  printf("%d ", (int)(pow(i.arr[i.cnt], 2) + 0.5) );

В Си я могу и в 1 строку эту хуйню написать.

Запостил: j123123 j123123, (Updated )

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

  • Только вот бигинтов из коробки нет, и возведение в степень только плавучепитуховое
    Ответить
  • // именно поэтому я за с++
    for (auto x : {1, 5, 2, 4, 3})
        std::cout << (x * x) << std::endl;
    Ответить
    • Макрохуйня спешит на помощь
      #define FOR_RANGE(type, varname, ...) for(struct {size_t cnt; type arr[5];} i = {0, __VA_ARGS__}; i.cnt < sizeof(i.arr)/sizeof(type); ++i.cnt )
      
        FOR_RANGE(int, i, {1, 5, 2, 4, 3})
          printf("%d ", (int)(pow(i.arr[i.cnt], 2) + 0.5) );
      Ответить
      • #define FOR_RANGE(type, varname, ...) for(struct {size_t cnt; type arr[  sizeof( (type[])__VA_ARGS__)/sizeof(type)  ];  } i = {0, __VA_ARGS__}; i.cnt < sizeof(i.arr)/sizeof(type); ++i.cnt )

        пофиксил
        Ответить
        • Блядь, до чего опустился говнокод. Обсуждают как в одну строку сделать foreach.
          Ответить
        • #define FOR_RANGE(type, varname, ...) for(struct {size_t cnt; typeof(type) arr[  sizeof( (typeof(type)[])__VA_ARGS__)/sizeof(type)  ];  } varname = {0, __VA_ARGS__}; varname.cnt < sizeof(varname.arr)/sizeof(type); ++varname.cnt )


          Еще немного пофиксил. Теперь должно быть норм
          Ответить
          • Не работает. Пишет:
            <source>(7): warning C4116: unnamed type definition in parentheses
            <source>(7): error C2061: syntax error: identifier 'typeof'
            <source>(7): error C2078: too many initializers
            <source>(7): error C2143: syntax error: missing '{' before '.'
            <source>(7): error C2059: syntax error: '.'
            <source>(7): error C2059: syntax error: '++'
            <source>(7): error C2059: syntax error: ')'
            <source>(10): error C2059: syntax error: '}'
            Ответить
            • #include <stdio.h>
              #include <stdlib.h>
              #include <stddef.h>
              #include <math.h>
              #include <type_traits>
              
              #define krestogovnotypeof(a) std::remove_reference<decltype((a){})>::type
              
              #define FOR_RANGE(type, varname, ...) for(struct {size_t cnt; krestogovnotypeof(type) arr[  sizeof( (krestogovnotypeof(type)[])__VA_ARGS__)/sizeof(type)  ];  } varname = {0, __VA_ARGS__}; varname.cnt < sizeof(varname.arr)/sizeof(type); ++varname.cnt )
              
              int main(void)
              {
                FOR_RANGE(int, k, {1,2,3,4,5,6,7})
                  printf("%d ", (int)(pow(k.arr[k.cnt], 2) + 0.5) );
                return EXIT_SUCCESS;
              }
              Ответить
                  • если у тебя будет в эту __VA_ARGS__ хуиту передаваться дрисня типа {a, b}, {c, d}, {e, f}
                    то она разберется на аргументы не как '{a, b}', '{c, d}', '{e, f}'
                    а как '{a', 'b}', '{c', 'd}', '{e', 'f}'
                    Там эта проблема решается?
                    Ответить
                • Кстати, я так и не понял, что там по поводу компиляции в C++?
                  - JS был настолько нестерпим, что для него это дело уже наладили (CoffeeScript, TypeScript, ECMAScript2016,17,18,..., тонны питушни).
                  - C тоже был нестерпим, в какую-то сиштушню компилируют Haskell.

                  Когда для удобной конструкции нужен пердолинг с макросами и шаблонами, но C++ всё ещё не получается выкинуть из-за полезных фич и легаси, нужна компиляция языка с нормальным синтаксисом в C++.

                  Кроме ASD77 кто-нибудь сделал что-то полезное для C++?
                  Ответить
                  • Так сводят же к промышленно полезному минимуму.
                    js — сишка вёба.

                    К тому же их дополнительно урезают. С до С--.
                    js до asm.js
                    Ответить
            • А это ж сраная говновижуальная студия...
              https://godbolt.org/z/ht_3qm вот я вроде уже почти портировал. Надо реализовать хуйню, которая б считала аргументы

              Скажем, если будет фигня типа
              {123, "ffft"}, {123}, 4, 666
              то надо чтоб было 4 аргумента.

              Можно реализовать это на крестопарашных констэкспрах, распарсивая стрингифицированные аргументы.
              Собственно, вот почти корректная реализация: https://govnokod.ru/26703
              Ответить
          • Па начам в тишы я пишу стехи,
            В каждай строчке толка точки после буквы Ы
            Ответить
  • На шпиль собора Святого Иакова в Риге вернули петуха

    На шпиль кафедрального собора Святого Иакова в Риге вернулась отреставрированная
    фигура петуха, сообщает Rus.delfi.lv.
    
    Внутрь фигуры поместили послание потомкам от церкви, правительства и реставраторов.
    Архиепископ-митрополит Латвийской римско-католической церкви Збигнев Станкевич
    в своем послании акцентировал внимание на молитве за Латвию и Европу.
    
    Петух был снят со шпиля собора 3 апреля. Мастера отремонтировали фигуру и заново
    покрыли золотом. В предыдущий раз петуха снимали со шпиля 38 лет назад.
    Ответить
    • Иди оффтопь в другое место, тут для другого тред.
      Ответить
    • Петух - не человек. И сегодня ему ему предстоит очень трудная ночь. У него уже 38 лет каждая ночь была трудной...
      Ответить
    • петуха посадили на шпиль, ахахахахахахахах
      Ответить
  • #define FOR_RANGE(type, var, ...) for (type arr_[] = __VA_ARGS__, *end_ = arr_ + sizeof(arr_) / sizeof(arr_[0]), *var##_ = arr_, var = 0; var##_ != end_ && (var = *var##_); ++var##_)
    
    FOR_RANGE(int, i, {1, 5, 2, 4, 3})
        printf("%d\n", i * i);
    Ответить
  • Более того, в C++ или С оно может быть записано в одну строчку.
    Ответить
  • for (int *it=(int[]){1, 5, 2, 4, 3, 0}; *it;*it++)
            printf("%d\n", *it);

    Мне даже мрак-осы не нужны. Zero-terminated — Тайная сила Сишки.
    Ответить
  • зеабали писать нипанятный код, нада так
    package main
    
    import (
    	"fmt"
    	"math"
    )
    
    func main() {
    	for i := range []int{1, 3, 5, 10} {
    		fmt.Println(math.Pow(float64(i), 2))
    	}
    }
    Ответить
    • Заебал форсить goвняный код.
      Надо так:
      #include <stdio.h>
      #include <stdlib.h>
      #include <math.h>
      
      #define NUMARGS(...)  (sizeof((int[]){0, ##__VA_ARGS__})/sizeof(int)-1)
      #define xARR(type) jArr_ ## type
      #define xDEF(type) typedef struct {size_t size; const type* arr;  }  xARR(type)
      #define xINIT(v, type, ...) xARR(type) v = {NUMARGS(__VA_ARGS__), (type[]){__VA_ARGS__}}; 
      
      #define xFOR(type, item, array) type item=array.arr[0]; for(size_t I = 0; I < array.size; item=array.arr[++I] )
      
      typedef struct {
          char *name;
          int     id;
      } Entry;
      
      xDEF(Entry);
      xDEF(int);
      
      void printEntry(xARR(Entry) entries)
      {
          xFOR(Entry, e, entries){
              printf("%s %d \n", e.name, e.id);
          }
      }
      
      void printSquares(xARR(int) ints)
      {
          xFOR(int, v, ints){
              printf("%d²=%d\n", v,(int) pow(v,2.));
          }
      }
      
      int main(void)
      {
          xINIT(e, Entry, {"one",1}, {"two",2}, {"three",3})
          printEntry(e);
          
          puts("_______________________________________");
          
          xINIT(ints, int, 3, 7, 5, 4)
          printSquares(ints);
      }

      Чтобы for each в Сишечке работал и массив мог аргументом передаваться как std::array.

      https://godbolt.org/z/oT394dvPW
      Ответить
    • Автовывод типов подъехал для for each
      void printEntry(xARR(Entry) entries)
      {
          xFOR(Entry, e, entries)
              printf("%s %d \n", e.name, e.id);
          
          FOR(e1, entries)
              printf("%s %d \n", e1.name, e1.id);
      }
      
      void printSquares(xARR(int) ints)
      {
          FOR(v, ints)
              printf("%d²=%d\n", v,(int) pow(v,2.));
      }

      https://godbolt.org/z/PczaE5PvM
      Сишка — возможности безграничны.
      Ответить
  • Смотрите, как я могу:
    #include <math.h>
    #include <stdint.h>
    #include <stdio.h>
    #define IV (coshl(1) * 1e11 - 0.00007)
    int main(int i) {
        for (long double x = IV; i = (int64_t)floor(x) % 10; x *= 10) printf("%d ", i);
    }


    Последовательность нашёл тут:
    https://oeis.org/A073743

    1, 5, 2, 4, 3 — это несколько десятичных цифр ch(1) = (e + 1/e)/2.

    0.00007 вычел для остановки цикла, потому что дальше следует семёрка.
    Ответить
  • Ну и анскилл у вас тут!
    Глядите, как это будет элегантно и красиво на нормальном функциональном языке:
    main :: IO ()
    main = putStrLn "1\n25\n4\n16\n9"
    Ответить
  • Free Pascal (в TP не было for...in):
    var i: Integer;
    begin for i in [1, 5, 2, 4, 3] do Write(sqr(i), ' ') end.
    Ответить
  • Как я попал в этот тред?
    Ответить
  • СЛАБАКИ!
    «Я в одну строчку, я в джве строчки».

    А у серьёзных парней десятки строк!
    https://ideone.com/BDy6be
    public static void main (String[] args) throws java.lang.Exception
    	{
    
            PredicateFactory predicateFactory = new PredicateFactoryImpl();
            FilterFactory    filterFactory    = new FilterFactoryImpl();
            StreamFactory    streamFactory    = new StreamFactoryImpl();
    
            streamFactory.create()
            .stream()
            .map(filterFactory.create())        
            .filter(predicateFactory.create())
            .collect(Collectors.toList())
            .forEach(System.out::println);
            ;
    	}
    
        
        interface PredicateFactory{
            Predicate<Integer> create();
        }
        static class PredicateFactoryImpl implements PredicateFactory{
            @Override
            public Predicate<Integer> create() {
                return new Predicate<Integer>() {
                    @Override
                    public boolean test(Integer x) {
                        return x > 0 && x < 6;
                    }
                };
            }
        }
    
        interface FilterFactory{
            Function<Integer,Integer>  create();
        }
        static class FilterFactoryImpl implements FilterFactory{
            @Override
            public Function<Integer,Integer>  create() {
                return new Function<Integer,Integer> (){
                    @Override
                    public Integer apply(Integer x) {
                        return x%10;
                    }
                };
            }
        }
    
        interface StreamFactory{
            List<Integer>  create();
        }
        static class StreamFactoryImpl implements StreamFactory{
            @Override
            public List<Integer> create() {
                return Arrays.asList(0, 1, -2, -3, -4, 5,-6, -7 , -8, -9, 10, -11, 12, 14, 13);
            }
        }
    Ответить
      • Не влез в 100 строк.

        Как и фабрика для фабрик.

        За отдельную плату наша команда готова их реализовать.
        Ответить
    • детская лаба какая-то: ни DI, ни J2EE, ни XML, ни даже String

      И потом, данные надо хранить в Oracle, работать с ним через Hibernate, а само приложение должно иметь манифест для разворота на IBM WebSphere

      Опять же, я не вижу ни одной диаграммы
      Ответить
    • Какая же всё-таки JAWA - моча ебаная.
      Ответить
  • Любите ли вы писать: Доки, инструкции, вообще любую хуйню?
    Нравится ли вам внятно излагать концепции, чтобы питухи их понимали?

    Или вы любите нахуевертить всё, сохранить у себя в голове, а другие потом пусть по коду посмотрят?
    Ответить
      • где вас таких берут то?

        Почему я постоянно вижу наплевательное отношение к докам со стороны больлшинства питузов?
        Ответить
        • Ну, мне бы хотелось, чтобы людям после меня было удобно работать, а не вот это вот всё. А ещё я педант.
          Ответить
          • Большинству людей (как я понял) очень трудно формулировать свои мысли, трудно в таксономию как-бы.

            Потому сама мысль что-то внятно описать вызывает у них бугурт: у них малость каша в голове, и мозг сопротивляется
            Ответить
            • Я пишу комменты к комитам:
              "fix"
              "."
              "/"
              Ответить
              • У меня правило: каждый вечер коммитить всё, что сделал за день: не меньше, и не больше.

                Иногда в один коммит влазит пять-шесть небольших issue, и тогда я пишу "fixing bugs".

                Иногда только кусочек одной, большой задачи, и тогда я пишу "work in progress".

                Когда через месяц меня просять черипикнуть коммиты в релизный бранч, я объясняю, что собирался релизнуть их в следующей версии, и пускай пока в мастере полежат.

                Ревью я тоже делаю из таких коммитов. Пускай питух получит ревью с меседжем "bug fixed", и сам разбирается. Я не обязан ему помогать
                Ответить
                • Нахуй нужно ревью? Я коммичу без ревью.
                  Ответить
                  • Нахуй вообще коммитить? От гита реально один гемор, я один раз себе чуть весь проект не запорол.

                    У меня есть папочка на сетевой шаре, я туда код переписываю по сети, и теку.

                    Конфликтов не бывает, потому что мы с коллегами разные части системы правим обычно

                    Один раз было так, что часть файлов переписалась, а часть нет (место кончилось), ну у меня бекап трехдневный был на флешке (я всегда переписываю раз в недельку), я с него и восстановил
                    Ответить
                    • Ты сарказмируешь, а я серьезно забил на ревью. Только если в чужое говно коммичу, тогда жду ревью, но меня заебало пинать ревьюверов, чтобы посмотрели. А недавно меня заставили ещё и тесты добавить, что в 10 раз сложнее самого патча.
                      Ответить
                      • Ужасно трудно быть программистом крупной компании: ревью делай, тесты пиши, документацию пиши...

                        Именно потому я за "rotoeb.php".

                        У нас полиси такое, что нельзя без ревью (ну только в мастер за пару месяцев до релиза можно).

                        А тесты всегда писать трудно (потому что большинство архитектур -- говно, и тестами их не покрыть), но нужно. Когда через год тебе надо будет поменять одну строчку, ты проклянеш себя за отсутствие тестов
                        Ответить
                        • Хуёлиси. Вот я прокинул дополнительный флажок в функцию, флажок добавил в конфиг. Меня просят добавить на эту хуйню тест. Но на функциональность, в которую я добавил флажок, тестов нихуя нет, и мне нужно курить незнакомый мне код, чтобы написать этот ебаный тест. Какого хуя я должен это делать, если автор оригинального кода не добавил тестов? А патч нужен конкретно мне.
                          Ответить
                          • А почем ты знаешь, что твой флажок ничего не сломал?

                            Конечно, автор кода должен делать тест
                            нехуй коммитить код без тестов.

                            И надо писать доки, чтобы понять как тестировать код не куря его.
                            Ответить
                            • > А почем ты знаешь, что твой флажок ничего не сломал?

                              Потому что тесты (какие есть) прошли.
                              Ответить
                              • Ок
                                А как ты добавил флажок в функцию, не понимая, что она делает?

                                Вдруг ты сделал её неконсистентной?

                                Скажем, была функция для продажи свиней.
                                Ты добавил параметр "количество сосков", но потом показалось, что функция хряков тоже продает, и теперь код стал говном

                                Или ты понимаешь, но в код не вникал?
                                Ответить
                                • Я добавил параметр «количество сосков» и никто кроме меня этим параметром не пользуется. То есть у всех остальных пользователей количество сосков не поменялось.
                                  Ответить
                                  • Да, но ты мог сделать сигнатуру функции неконсистентной

                                    А завтра я захочу продать молочных поросят, и добавлю параметр специфичный для молочного поросенка. Знаешь, как Дядя Фёдор, Матроскин и Шарик письмо писали?

                                    В идеальном мире у кода должны быть оунеры, которые могут такую вот микроархитектуру продумывать: как лучше передать какой параметр куда, может лучше вообще отдельную функцию слделать и пр

                                    А то будет дизайн комитетом
                                    Ответить
                                • Вот вам кстати багор.

                                  Если вы добавили в шарповый метод параметр со значением по умолчанию, то по факту вы проебали ABI:

                                  void Oink();
                                  void Oink(int nipples = 0);


                                  У этих двух методов разная сигнатура (void Oink(), void Oink(int)), поэтому если вы запушите такое только с апдейтом минорной версии, то скомпилированное под предыдущую версию сломается к хуям: если вы сделали такое в библиотеке А, от которой зависит библиотека Б, которую потребляет проект В, то нугет подтянет свежую версию А и уже не совместимую с ней Б. При том что с точки зрения семантики и в ситуации, когда нет промежуточных зависимостей, не поменялось ничего.
                                  Ответить
                                  • А знаешь что будет, если в жабьем методе параметр поменять на vararg?

                                    У тебя будет сырцовая ковместимость, но не бинарная

                                    Иными словами, API не поменяется, а ABI -- да

                                    >Oink
                                    oh hi kuya!
                                    Ответить
                                    • Потому что под капотом «public static foo.bar.Govno foo()» будет «()Lfoo/bar/Govno;», а «public static foo.bar.Govno foo(Mocha... kapelki)» превратится во что-то вроде «(Ljava/util/List;)Lfoo/bar/Govno;»?
                                      Ответить
                                      • Только не List, а массив всё таки

                                        а так да
                                        Ответить
              • > Я пишу комменты к комитам:
                > "."
                > "fix"
                Всегда так делаю. Потом правда их squashy и пишу понятный текст.
                Ответить
                • >сквашу

                  ну, так я тоже делаю. У себя в веточке я могу какать кверх ногами, как мишки гамми, а на публиное обозрение свой срам всё таки лучше не выставлять
                  Ответить
                  • А смысл срать в паблик? Потом же самому неприятно/непонятно читать.

                    Хотя обманывать не буду. Парочку комитов вроде "fix" у меня по неосторожности попадали в общую репу за последние пару лет.
                    Ответить
            • Не хватает времени и ресурсов. И так заебываешься, пока эту хуйню выловишь, а потом ещё писать это всё. А потом окажется что текст длинный и непонятный. А потом сократил и потерял важное. А потом ещё вспомнил что дописать надо. А потом оказалось что для тулзы билда конечной документации въебал опцию в конфигурационном файле.
              Ответить
        • > Почему я постоянно вижу наплевательное отношение к докам со стороны больлшинства питузов?

          Я тоже. Поскольку обычно документацию и комментарии никто не читает.

          Вызывают как получится, а потом удивляются почему вызов работает не так как они ожидали.

          Это сильно демотивирует чтобы писать длинные описания.
          Ответить
          • А это проблема современных IDE и высокоуровневых, статичкски типизированных языков.

            Если ты пишешь на перле в vim или на сишке в borland C++ 3.1 IDE, то у тебя просто выбора нет, кроме как документацию почитать.

            А если ты C#/ЙАЖА питушок, то ты к сожалению нажал точечку в IDE, и выбрал один из подходящих методов.

            Иногда до смешного доходит
            --Я использовал $FOO
            --А ты знаешь про $SOME_BASIC_KNOWLEDGE_ABOUT_FOO
            --Не, я тупо скопировал пример, и у меня заработало
            Ответить
    • Люблю писать мануалы. Было б ещё время на работе писать доки — вообще заебись бы было!
      Ну или хотя бы тесты…
      Ответить
  • Я изобрел универсальный подход к чему угодно, он называется "The Universal Bullshit Framework", сокращенно TUBF 1.12 (более ранние версии я не публиковал)

    Полное описание занимает четыре тома, но основные принципы таковы:
    * Делайте хорошо
    * Ориентируйтесь на потребности бизнеса
    * Используйте фидбек пользователей
    * Автоматизируйте
    * Работайте итеративно

    Думаю, организовать курсы, и разобгатеть

    Если вы не используете TUBF 1.12 в своей работе, то вы теряете деньги!
    Ответить
    • Ваще очень печально, что сборище каких-то пердоликов неопределенного пола и подвида стали авторитетом в этом вопросе.
      Ответить
  • «Колонии вполне могут занять и место IKEA. Если сравнивать мебель — у нас и качество лучше, и цены ниже. Мы не коммерсанты», — подчеркнул начальник отдела трудовой адаптации осужденных ГУФСИН России по Свердловской области Иван Шарков.
    https://www.moscowtimes.ru/2022/07/26/vmesto-ikea-rossiyanam-predlozhat-mebel-iz-kolonii-a22642

    Коллеги пишут, что будет представлено две модели стульев
    Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8