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

    +2

    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
    public static void Init()
            {            
                LetterOrder = new Dictionary<char, int>
                              {
                                  {'A', 0},
                                  {'B', 1},
                                  {'C', 2},
                                  {'D', 3},
                                  {'E', 4},
                                  {'F', 5},
                                  {'G', 6},
                                  {'H', 7},
                                  {'I', 8},
                                  {'J', 9},
                                  {'K', 10},
                                  {'L', 11},
                                  {'M', 12},
                                  {'N', 13},
                                  {'O', 14},
                                  {'P', 15},
                                  {'Q', 16},
                                  {'R', 17},
                                  {'S', 18},
                                  {'T', 19},
                                  {'U', 20},
                                  {'V', 21},
                                  {'W', 22},
                                  {'X', 23},
                                  {'Y', 24},
                                  {'Z', 25},
                              };
            }

    C#-макака не умеющая, ни в char - 'A' ни в статические конструторы (и еще много чего: см. https://www.codingame.com/training/easy/encryptiondecryption-of-enigma-machine/solution?id=10246815)

    Запостил: Lorip1971, 15 Февраля 2019

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

    • P.S.: оригинальное форматирование сохранено
      Ответить
    • А «ord()» за в решётку не завезли? «char - 'A'» само по себе откровенно воняет, в современных-то языках.
      Ответить
      • ord() это не то самое что char - 'a'. и как раз таки это оно воняет, потому что с орд оно будет вот так:
        char c = ...
        int b = ord(c) - a;
        Ответить
        • В моем мире единороги какают радугами, и там есть специальный класс System.Text.Encoding и у него есть реализации которые икапсулируют знание о соответствии буковок циферкам
          Ответить
          • А в моём мири ебинороги радуют каками, и можно просто нопейсать c - 'A', или [char] A - и не думать о совмейстимости.
            Ответить
            • Потому что ты живеш в мире где есть только один алфавит а одна кодовая страница.
              Ответить
      • шутиш?
        Convert.ToChar() завезли давно

        Алсо, есть явный класс для ASCII
        Ответить
    • LetterOrder это еще поди статический филд?

      макака не умеет еще в ASCII
      Ответить
      • а в статик методе иначе не получится
        Ответить
        • ну тоись у нас нулабл статическое поле

          тоже повагнивает так-то
          Ответить
          • да ты пройдись по решениям, там везде лютое говнище, лишь изредка функциональщики радуют глаз, правда их поеботу понять вообще анриал, что впрочем, тоже говно.
            Ответить
    • <?php $LetterOrder = array_flip(range('A', 'Z'));

      Именно поэтому.
      Ответить
      • я кокококороче
        ('A'..'z').map{|x|[x.ord, x]}.to_h
        Ответить
        • Не сказал бы, что кокококонкретно данный пример короче, но универсальнее.

          В «PHP» вызов array_map выглядел бы многословнее.
          Ответить
          • я получил хеш
            а что получил ты?
            Ответить
            • То, что в «PHP» называют ассоциативным массивом. В нём других сложных типов данных и не бывает... Ну ладно, бывают ещё объекты.
              Ответить
              • хеш оно и есть.
                токмо я явно дергаю ord, а ты нет. можно и отсосать если там будут не только буквы
                Ответить
                • Да я понял. Нужно явно генерировать пару (key=>value), а не только одно, потому что можно прогадать в общем случае.
                  Ответить
              • пиздон
                dict(map(lambda i: (chr(i), i), range(ord('A'), ord('Z'))))
                Ответить
                • По условию задачи нужно получить словарь, отображающий порядковый номер буквы в алфавите, а не в ASCII-таблице.
                  Ответить
                  • Хочешь сказать, что обосрёмся в случае «EBCDIC»?
                    Ответить
                    • Хочу сказать, что порядковый номер поправить забыли:
                      >>> dict(map(lambda i: (chr(i), i), range(ord('A'), ord('Z'))))
                      {'A': 65, 'B': 66, 'C': 67, 'D': 68, 'E': 69, 'F': 70, 'G': 71, 'H': 72, 'I': 73, 'J': 74, 'K': 75, 'L': 76, 'M': 77, 'N': 78, 'O': 79, 'P': 80, 'Q': 81, 'R': 82, 'S': 83, 'T': 84, 'U': 85, 'V': 86, 'W': 87, 'X': 88, 'Y': 89}
                      Ответить
                • letterOrder = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
                  letterOrder.index("H")
                  Ответить
                  • O(N). Неоптимально.
                    Ответить
                    • Нахер мне твоё "О башое", тут всего-то джватсать шесть символов.
                      Ответить
                      • А вдруг тебе понадобится шифровать десяток гигабайт в секунду текста? Тогда поиск индекса каждой буквы 'Z' будет в джвадцать шесть раз медленнее, чем 'A'!
                        Ответить
                        • Тагда нужна мемоизация. В "J", кстати она делаецца очень просто:
                          LetterOrder =: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
                             getLetterOrder =: LetterOrder&i. M.
                          Ответить
                          • Мемоизировал твой комментарий, проверь.

                            Удобно. Хочу такое же в «C++».
                            А вот в «Python» мемоизацию можно сделать буквально на коленке (через «декораторы»).
                            Ответить
                            • Яростно плюсую.

                              какой-нить @cahed и все


                              в Java тоже так можно с помощью AOP, но дебилы (коих большинство среди программистов) AOP не осилили: им больше нравится писать одно и тоже в начале каждой функции вручную
                              Ответить
              • По этому я за Lua
                Ответить
    • dict(zip(map(chr, range(ord('A'), ord('Z') + 1)), range(ord('Z'))))


      Жаль, что в Питоне нет аналога «enumerate» с порядком «value, index».
      Ответить
      • Вот так даже чуть-чуть короче (да и читаемее):
        {chr(v): i for i, v in enumerate(range(ord('A'), ord('Z') + 1))}
        Ответить
        • Сэкономим пару символов («Python 2» не нужен):
          {chr(v): i for i, v in enumerate(range(b'A'[0], b'Z'[0] + 1))}
          Ответить
    • var jaSdelal = Enumerable.Range(Convert.ToInt32('A'), Convert.ToInt32('Z')).ToDictionary(i => Convert.ToChar((i)), i => i);
                  
      Console.Write(jaSdelal['Q']);


      яб сделал так
      Ответить
      • Lorip1971, а как лучше кстати? Как гость выше написал, или через linq?
        Ответить
    • Выложили новый говнокод - сразу все петухи слетелись )))))))))))))))))))))))))))))
      Ответить
      • Кстати, о питухах

        Вы бы на SO на русском
        https://ru.stackoverflow.com/questions/945270/%D0%9F%D1%80%D0%B8%D1%81%D0%B2%D0%BE%D0%B8%D1%82%D1%8C-%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%83%D1%8E
        ?
        Ответить
        • А что удивительного? Тут уже говорили, что «PHP» –— это язык для программирования «по случаю», т. е. не для профессиональных программистов. Может быть, топикстартер работает в регистратуре поликлиники.
          Ответить
          • Зачем ему вообще PHP?
            чем плоха страница во вконтакте?
            Ответить
    • LetterOrder =: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
         LetterOrder i. 'PETUX'
      15 4 19 20 23
      Ответить
    • getLetterOrder =: -&[email protected]~&a.
         getLetterOrder 'PETUX'
      15 4 19 20 23
      Ответить
    • const
        LetterOrder: array ['A'..'Z'] of byte = (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25);
      Ответить
    • LetterOrder ← 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
      
            (LetterOrder ⍳ 'PETUX') - 1
      
      15 4 19 20 23
      Ответить
      • Это что за язык хоть?
        Ответить
        • У этого языка инициалы совпадают с твоими:
          А! (парам-парам-парам)
          Пэ! (парам-парам-парам)
          Эль! (парам-парам-парам)

          АПЛ!
          Ответить
          • я пытался напечатать программу на APL, нажал на клавиаутуре кнопочку "← " и всё исчезло((
            что делать?
            Ответить
            • Скачать раскладку с https://www.dyalog.com/

              Я так по совету Романа сделал, теперь у меня иногда в комментариях появляются случайные значки вроде ⍵∊⍴~↑↓⍳○←→⍺⌈⌊_∇∆∘'⎕⍎⍕⊂⊃∩∪⊥⊤|⍝⍀⌿⋄¨¯<≤=≥>≠ ∨∧×÷.
              Ответить
          • Эх, я ожидал, что ты другую файку регнешь.
            Ответить
            • Могу и другую. Да, я помню старые названия линий и станций.
              Ответить
              • Всегда было интересно как объявляют станцию "Улица 1905 года" на английском. Никогда там не был.
                Ответить
                • The Tysacha Devyjatsot Pyjatogo Goda street
                  Ответить
                  • Ulitsa Onda Tysacha Devyjatsot Pyjatogo Goda
                    Ответить
                  • У нас пишут «street» в названиях улиц. А в названиях станций этимологию не раскапывают и оставляют слово «улица» без перевода («ulitsa»), как будто это слитное название.

                    Там было что-то безумное вроде «нэкст стэйшн из улитса найнтин оу файф года» или «next station is ulitsa tysacha devyatsot pyatogo goda».
                    Ответить
                • Блин, забыл... Кажется, слова «улица» и «года» звучали по-русски, но с английским акцентом.
                  Ответить
          • Английская премьер лига?
            Ответить
    • Пришлось решить ту задачку (про Энигму), чтобы увидеть исходник целиком. Теперь у меня болят глаза!
      Ответить

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