1. C# / Говнокод #18966

    +1

    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
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    public void CreateTable(ref string text) 
            {
                List<S> list = new List<S>();
                list.Add(new S('о', 9.28));
                list.Add(new S('а', 8.66));
                list.Add(new S('е', 8.10));
                list.Add(new S('и', 7.45));
                list.Add(new S('н', 6.35));
                list.Add(new S('т', 6.30));
                list.Add(new S('р', 5.53));
                list.Add(new S('с', 5.45));
                list.Add(new S('л', 4.32));
                list.Add(new S('в', 4.19));
                list.Add(new S('к', 3.47));
                list.Add(new S('п', 3.35));
                list.Add(new S('м', 3.29));
                list.Add(new S('у', 2.90));
                list.Add(new S('д', 2.56));
                list.Add(new S('я', 2.22));
                list.Add(new S('ы', 2.11));
                list.Add(new S('ь', 1.90));
                list.Add(new S('з', 1.81));
                list.Add(new S('б', 1.51));
                list.Add(new S('г', 1.41));
                list.Add(new S('й', 1.31));
                list.Add(new S('ч', 1.27));
                list.Add(new S('ю', 1.03));
                list.Add(new S('х', 0.92));
                list.Add(new S('ж', 0.78));
                list.Add(new S('ш', 0.77));
                list.Add(new S('ц', 0.52));
                list.Add(new S('щ', 0.49));
                list.Add(new S('ф', 0.40));
                list.Add(new S('э', 0.17));
                list.Add(new S('ъ', 0.04));
    }

    И как от этого отойти?

    Запостил: jekastiy, 04 Ноября 2015

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

    • > И как от этого отойти?

      Если стоишь - ногами. Если лежишь - то на четвереньках. Есле лежишь, и лениво - то можешь еще и откатится. Если висишь в воздухе - представь себе что ты птица, и попробуй руками и ногами помахать.
      Ответить
      • А если сидишь?
        Ответить
        • А если уже посадили, то сначала пиши апелляцию что бы выпустили досрочно.
          Ответить
          • Главное не представлять что ты птица в таком случае) Там уже махание руками и ногами не поможет...
            Ответить
    • new List<S>(){
          new S('о', 9.28),
          new S('а', 8.66),
      
      }
      Ответить
    • Конфиги. XML
      Ответить
      • > xml
        <о>9.28</о>
        <а>8.66</е>
        ...
        <ъ>0.04</ъ>
        Ответить
        • Ъ
          Ответить
          • XML предлагает и другие варианты хранения. Можно и так:
            <element key="о">9.28</element>
            <element key="а">8.66</element>
            <element key="ъ">0.04</element>

            И так:
            <element value="9.28">о</element>
            <element value="8.66">а</element>
            <element value="0.04">ъ</element>

            И ещё так:
            <element key="о" value="9.28" />
            <element key="а" value="8.66" />
            <element key="ъ" value="0.04" />

            И даже так:
            <pair>
                <key>о</key>
                <value>9.28</value>
            </pair>
            <pair>
                <key>а</key>
                <value>8.66</value>
            </pair>
            <pair>
                <key>ъ</key>
                <value>0.04</value>
            </pair>


            А ещё можно добавить неймспейсы, XSLT на все случаи жизни и целое поле граблей с телескопическими ручками.
            Ответить
          • P.S. Ещё вариант навскидку:
            <value id="v1">9.28</value>
            <value id="v2">8.66</value>
            ...
            <value id="v33">0.04</value>
            <element data-href="#v1">о</element>
            <element data-href="#v2">а</element>
            ...
            <element data-href="#v33">ъ</element>
            Ответить
            • И ещё вариант с двухсторонней индексацией:
              <value id="v1" key-href="#k1">9.28</value>
              <value id="v2" key-href="#k2">8.66</value>
              ...
              <value id="v33" key-href="#k33">0.04</value>
              <element id="k1" data-href="#v1">о</element>
              <element id="k2" data-href="#v2">а</element>
              ...
              <element id="k33" data-href="#v33">ъ</element>


              Достаточно ынтырпрайзно получилось или надо ещё вместо v1..v33 использовать UUID?
              Ответить
              • > Достаточно ынтырпрайзно получилось

                Нет. Для ынтерпрайза, данные нужно еще партиционировать.

                А вдруг тебе надо будет представлять алфавит с миллионами, миллиардами буков?

                А вдруг одна буква будет занимать мегабайт? гигабайт?

                > ещё вместо v1..v33 использовать UUID?

                Однозначно!
                Ответить
                • И числа желательно использовать большой точности. Вдруг в числе будет миллион знаков?
                  Ответить
                • Но как минимум нужно указать типы данных. Промежуточный вариант:
                  <value id="v1">
                      <link type="url" rel="key">#k1</link>
                      <content type="float" base="10" decimal-point=".">9.28</content>
                  </value>
                  <element id="k1">
                      <link type="url" rel="value">#v1</link>
                      <content type="char" encoding="utf-8" direction="ltr">о</content>
                  </element>
                  Ответить
        • <9.28>о</9.28>
          <8.66>а</8.66>
          ...
          <0.04>ъ</0.04>
          Ответить
        • return  s = {
           'o':9.28,
           'a':8.66,
           'ъ':0.04
          };
          Ответить
          • return s= ?

            Кстати, почему в вашем ебаном js и json не разрешается запятая после последнего объекта?
            Ответить
            • какого?
              'ъ':0.04
              этого? если да, то у меня для тебя плохие новости - это значение, а не абзац. ты где вообще в программном коде абзацы видел? красная строка конечно есть, а абзацев нет
              а так, я думаю все дело в том, что js интерпретируемый язык, он не компилируется, в отличие от сишек всяких, где компилятор может за тебя эту запятую удалить.
              Ответить
              • При этом даже гипертекстовый шаблонизатор умеет в удаление последней запятой. Просто JS говном был, есть и останется, даже если его научатся конпелировать.
                Ответить
              • Што? И почему питон в нее умеет?
                Ответить
                • Такое ощущение, что предыдущие комментаторы либо использовали автогенератор, либо немного поехали и смешали в кучу парсеры, компиляторы, естественный текст и программы, и вернулись в те времена, когда JS честно интерпретировался.
                  Ответить
                  • >этого? если да, то у меня для тебя плохие новости - это значение, а не абзац. ты где вообще в программном коде абзацы видел? красная строка конечно есть, а абзацев нет
                    Если честно, я тоже немного подумал на генератор.
                    Ответить
              • Во всех языках где есть ; разрешается писать несколько подряд ;;;
                Ответить
            • Видимо, не подумали о том, что народ будет генерировать JS/JSON автоматически.
              В JS это поправили (в http://stackoverflow.com/a/7246662 человек почитал стандарты и показал, что для {} запятую запилили в ES5, а для [] - в ES3; В ES6 нормальное поведение осталось: http://www.ecma-international.org/ecma-262/6.0/#sec-object-initializer http://www.ecma-international.org/ecma-262/6.0/#sec-array-initializer), а в JSON - нет.

              Поэтому надо продвигать JSON5.
              JSON5 - #1 JSON в мире! С JSON5 ваши волосы станут мягкими и шелковистыми. Не тормози, JSON5сни! Обычный JSON не отстирывает сложные пятна говнокода, а JSON5 справляется с любой грязью благодаря запятой после последнего элемента, литералам строк в одинарных кавычках, допустимым именам свойств объекта без кавычек, многим способам представить число и комментариям. Пользуясь JSON5, вы помогаете программистам с ограниченными возможностями использования запятых.
              http://json5.org/
              Ответить
              • P.S. На этом даже основывался самый короткий хак какого-то мужика (не смог нагуглить, находится только !+'v1') для определения IE:
                !+[1,]

                Видя [1,], браузеры создавали [1], а IE создавал [1,undefined].
                Потому +[1,] у всех был 1, а у IE - NaN, а !+[1,] - false и true соответственно.
                Ответить
              • Еще осталось продвинуть коменты для json конфигов и будет заебись.
                Ответить
              • Проблема возникает как раз когда json генерируется ручками, копипастом.
                Ответить
                • >Проблема возникает как раз когда json генерируется ручками, копипастом.

                  3_14dar
                  , правильно
                  , ставь
                  , запятые
                  , пидар!
                  , Никаких
                  , проблем
                  Ответить
                  • Так,
                    запятые,
                    ставят,
                    только,
                    js,
                    мудаки,!
                    Ответить
                  • , Никаких
                    , проблем

                    Ну, если Вы предлагаете ставить запятые перед элементами, то ещё проще.
                    Вместо "[1,[2,3],4];" можно писать ",1,,2,3;,4;".

                    А вообще, что за фигня?
                    if(x){ a; b; c; } - требуется терминатор
                    [1, 2, 3] - не требуется терминатор
                    Не универсально, асимметрично. Стоит свести к [1, 2, 3, ] для симметрии грамматики языка и симметрии самого выражения.

                    > НЕ РАЗРЕШАЕТСЯ and/or/xor/+ ПОСЛЕ ПОСЛЕДНЕГО УСЛОВИЯ??777
                    Вот именно. Асимметрично.
                    А ведь просто можно ввести какой-то нейтральный элемент на уровне определений операторов либо на уровне парсинга (A & B & заменяем в уме на A & B & neutral и компилируем A & B).
                    if(
                      | FLAG_INIT
                      | FLAG_PIDAR
                      | FLAG_FILE_OPENED
                    ) // красота
                    Ответить
                    • >if(x){ a; b; c; } - требуется терминатор
                      Британские учоные установили что точки с запятой приводят к раку кишечника.

                      В нормальных языках их выпилили нахуй.
                      Ответить
                      • И что с ними стало в нормальных языках? (кстати, в каких?)
                        Ответить
                        • >И что с ними стало в нормальных языках?
                          Go, NaPython. А в ржавой питушне их наделили хитрым смыслом.

                          if (FLAG_INIT
                             | FLAG_PIDAR
                             | FLAG_FILE_OPENED
                             ) // красота?
                          Ответить
                          • > красота?
                            Да как-то не очень. первый FLAG сдвинут и вообще выделен.

                            Кстати, если питон-путь:
                            if  | FLAG_INIT
                                 | FLAG_PIDAR
                                 | FLAG_FILE_OPENED
                               : print(5)

                            В итоге требуется только закрывающая скобка.
                            Выражение допускает иерархию: if(a && (b || c) && d) становится if && a && || b || c: && d:
                            Унарные операторы становятся естественным дополнением бинарных.

                            http://ideone.com/MHScyD - во
                            Ответить
                            • >Кстати, если питон-путь:
                              Вот так — смотрится.
                              Go-в-путь
                              if   | FLAG_INIT
                                   | FLAG_PIDAR
                                   | FLAG_FILE_OPENED
                                   { print("Наpython")
                              }

                              В итоге в качестве разделителя идёт обязательная скобка блока кода.

                              PS> кстати, в каких?
                              + scala, closure, lua. Повсеместное алголоблядство уже достало.
                              Ответить
                              • > clojure
                                Вот тут, пожалуй, отсутствие точек с запятой действительно только на благо :)
                                Ответить
                                • > отсутствие точек с запятой
                                  Но там же )))))))
                                  Ответить
                                  • lisp - это язык, в котором всегда happy end.
                                    Ответить
                                    • слова "язык" и "конец" всегда стоят в одном предложении, если это предложение говорит Рома
                                      Ответить
                            • Хуй тебе лошпед ссаный
                              Ответить
                      • > В нормальных языках их выпилили
                        Без них, имхо, проблем не меньше.
                        Мне вот не нравится неочевидность правил, по которым компилятор определяет конец полного выражения.
                        Ответить
                        • Промахнулся с плюсом.
                          Хотел 3_14darу поставить за двусмысленный коммент http://www.govnokod.ru/18966#comment302964
                          Ответить
                    • > if(x){ a; b; c; } - требуется терминатор
                      > [1, 2, 3] - не требуется терминатор

                      То ли дело Паскаль, в котором терминальная точка с запятой не требуется.
                      Ответить
                      • Речь не о том что требуется а о том что допустимо.
                        Ответить
                        • Из контекста это не было ясно.

                          Терминальная точка с запятой во всех языках допустима и только в Си и в языках, основанных на его синтаксисе, обязательна. Языков, в которых она недопустима, я не знаю (кроме CSV, если его можно считать языком), потому что пустой оператор в популярных языках допустим.

                          Терминальная запятая лишь в некоторых языках допустима, в остальных она либо будет означать пустой последний элемент, либо недопустима вовсе. Языков с обязательной терминальной запятой я не знаю.

                          Таким образом, когда обсуждаем запятую и когда обсуждаем точку с запятой, рамки обсуждения разные.
                          Ответить
                          • Давай возьмем языки с литералами списка/мепа или их эмуляцией (C#)
                            Ответить
              • > программистам с ограниченными возможностями
                Ответить
            • КСТАТИ ПОЧЕМУ В ВАШЕМ ЕБАНОМ ПИТОНЕ/C++/ПАСКАЛЕ/С#/SQL (нужное подчеркнуть) НЕ РАЗРЕШАЕТСЯ and/or/xor/+ ПОСЛЕ ПОСЛЕДНЕГО УСЛОВИЯ??777

              1 + 2 + 3 + 4 + 5 +
              if (x == null and x.length==0 and)
              охуенно же заканчивать фразу на
              Ответить
              • В КАКОМ ЯЗЫКЕ ЭТО РАЗРЕШАЕТСЯ?
                Ответить
                • ЧСХ ни в одном сколь-нибудь полезном для человечества ЯП так нельзя. (См. ответ Романа ниже).
                  Ответить
                  • Я не пойму, ты сегодня сам себя хуесосишь?
                    Ответить
                    • Ахахаха! Кто о чём, а пидар о хуесосании.
                      Ответить
                      • Но 3.14159265дар это ты...
                        Ответить
                        • я просто оставлю это здесь
                          http://s5.pikabu.ru/post_img/big/2014/08/23/6/1408784023_773900275.png
                          Ответить
              • В каскеле так можно
                Prelude> let und = (&&)
                Prelude> :t ((1 == 1) `und` (2 == 2) `und`)
                ((1 == 1) `und` (2 == 2) `und`) :: Bool -> Bool
                Ответить
                • Тут небось можно запилить не Bool -> Bool, а какой-нибудь Oper AndType, после чего останется только задать isBool для получения Bool и симметричный IF.
                  Ответить
              • Напомнило: ежевик — это периодическое издание, выходящее каждый
                (из Абсурдопедии)
                Ответить
              • >КСТАТИ ПОЧЕМУ В ВАШЕМ ЕБАНОМ ПИТОНЕ/C++/ПАСКАЛЕ/С#/SQL (нужное подчеркнуть) НЕ РАЗРЕШАЕТСЯ and/or/xor/+ ПОСЛЕ ПОСЛЕДНЕГО УСЛОВИЯ??777
                а зачем?
                Ответить
                • 3.14159265дару так захотелось.
                  Ответить
                • Консистентность с идиотией предлагаемой выше.
                  Ответить
                  • А ; после выражения а не между тебе тоже идиотией кажется? С жавы свалить не хочешь?
                    Ответить
          • Хуйня ваш {JSON}, то ли дело <XML/>

            <list о="9.28" а="8.66" е="8.10" и="7.45" н="6.35" ъ="0.04"/>
            Ответить
      • и кстати не шаришь ты, вот http://habrahabr.ru/post/248147/[color=green] реально правильный формат[/color
        Ответить
        • Не готов для ънтерпрайза. Вот правильный формат:
          https://www-01.ibm.com/support/knowledgecenter/SS9H2Y_7.1.0/com.ibm.dp.doc/json_jsonxconversionexample.html
          Ответить
        • Почитал комментарии к топикам этого ебантяя. Это же надо быть настолько тупым, пиздец просто.
          Ответить
          • Здравствуйте, меня зовут Дмитрий Карловский и я… клиент-сайд разработчик. За плечами у меня 8 лет поддержки самых различных сайтов и веб-приложений: от никому не известных интернет-магазинов, до таких гигантов как Яндекс. И всё это время я не только фигачу в продакшн, но и точу топор, чтобы быть на самом острие технологий. А теперь, когда вы знаете, что я не просто хрен с горы, позвольте рассказать вам про один архитектурный приём, которым я пользуюсь последний год.

            ЧИТАТЬ ДАЛЕЕ >>>
            Ответить
            • по ссылке просит ввести код который пришел в смс, это нормально ?
              Ответить
              • да, просто сайту нужно убедиться, что ты реальный человек :)))
                я скачал, скорость хорошая, всем рекомендую!!!
                Ответить
                • А мне пока код не пришёл. Что делать?
                  Ответить
                  • Отправить номер карты и 3 цифры с оборотной стороны на номер 3564
                    Ответить
                    • А цифры после «VALID THRU» тоже вводить?
                      Ответить
                      • вводи лишними не будут. Можешь еще паспортные данные вести. Образец подписи. Девичью фамилию матери, любимое блюдо, кличку собаки/кошки/попугая.
                        Ответить
                  • >А мне пока код не пришёл. Что делать?
                    отправь смс на короткий номер 4242 с текстом "я не лох", чем больше отправишь, тем больше "ты не лох".
                    Ответить
          • >Почитал комментарии к топикам этого ебантяя. Это же надо быть настолько тупым, пиздец просто.
            интересно как до него это донести
            Ответить
    • упорный, однако, чукча
      Ответить
    • Эх, вот в плюсах-то было всё...
      void CreateTable(const std::string &text) 
      {
          std::vector<std::pair<char, float>> list = {
          {'о', 9.28},
          {'а', 8.66},
          {'е', 8.10},
          {'и', 7.45},
          {'н', 6.35},
          {'т', 6.30},
          {'р', 5.53},
          {'с', 5.45},
          {'л', 4.32},
          {'в', 4.19},
          {'к', 3.47},
          {'п', 3.35},
          {'м', 3.29},
          {'у', 2.90},
          {'д', 2.56},
          {'я', 2.22},
          {'ы', 2.11},
          {'ь', 1.90},
          {'з', 1.81},
          {'б', 1.51},
          {'г', 1.41},
          {'й', 1.31},
          {'ч', 1.27},
          {'ю', 1.03},
          {'х', 0.92},
          {'ж', 0.78},
          {'ш', 0.77},
          {'ц', 0.52},
          {'щ', 0.49},
          {'ф', 0.40},
          {'э', 0.17},
          {'ъ', 0.04}};
      }
      Ответить
      • Отступы поехали, пардон.
        Ответить
      • > }};
        ловушка
        Ответить
      • ну да, в ширпе же такого нет
        Dictionary<char, float> values = new Dictionary<char, float>(){
                        {'0', 9.24f},
                        {'а', 8.66f},
                        {'е', 8.10f},
                        {'и', 7.45f},
                        {'н', 6.35f},
                        {'т', 6.30f},
                        {'р', 5.53f},
                        {'с', 5.45f},
                        {'л', 4.32f},
                        {'в', 4.19f},
                        {'к', 3.47f},
                        {'п', 3.35f},
                        {'м', 3.29f},
                        {'у', 2.90f},
                        {'д', 2.56f},
                        {'я', 2.22f},
                        {'ы', 2.11f},
                        {'ь', 1.90f},
                        {'з', 1.81f},
                        {'б', 1.51f},
                        {'г', 1.41f},
                        {'й', 1.31f},
                        {'ч', 1.27f},
                        {'ю', 1.03f},
                        {'х', 0.92f},
                        {'ж', 0.78f},
                        {'ш', 0.77f},
                        {'ц', 0.52f},
                        {'щ', 0.49f},
                        {'ф', 0.40f},
                        {'э', 0.17f},
                        {'ъ', 0.04f}
                    };
        Ответить
        • Кстати да, ступил
          void CreateTable(const std::string &text) 
          {
              std::map<char, float> dict = {
                  {'о', 9.28},
                  {'а', 8.66},
                  {'е', 8.10},
                  {'и', 7.45},
                  {'н', 6.35},
                  {'т', 6.30},
                  {'р', 5.53},
                  {'с', 5.45},
                  {'л', 4.32},
                  {'в', 4.19},
                  {'к', 3.47},
                  {'п', 3.35},
                  {'м', 3.29},
                  {'у', 2.90},
                  {'д', 2.56},
                  {'я', 2.22},
                  {'ы', 2.11},
                  {'ь', 1.90},
                  {'з', 1.81},
                  {'б', 1.51},
                  {'г', 1.41},
                  {'й', 1.31},
                  {'ч', 1.27},
                  {'ю', 1.03},
                  {'х', 0.92},
                  {'ж', 0.78},
                  {'ш', 0.77},
                  {'ц', 0.52},
                  {'щ', 0.49},
                  {'ф', 0.40},
                  {'э', 0.17},
                  {'ъ', 0.04},
              };
          }
          Ответить

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