1. Python / Говнокод #24850

    −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
    import re
    
    def krpt(x):
        x = x.group(1)
        f = lambda x: "".join(filter(lambda x: x not in "АЕЁИОУЫЭЮЯ", x))
        xp = f(x)
        if len(xp) == 0:
           return x
        for i in open("dict.txt", "r"):
            i = i.strip().upper()
            t = f(i)
            if len(t) < len(xp): continue
            if xp == t[:len(xp)]:
                return i
        return x
    
    def KRPT(x):
        return re.sub("([А-ЯЁ]+)", krpt, x.upper())
        
    while "ПРЛС":
        print(KRPT(input("> ")))

    > какой багор )))
    АКАКИЙ БОГОРОДСК )))
    > лунная клизма, лай мне в анус
    АЛИНИН КЛИЗМА, ЛЕЙБНИЦ АМУНДСЕН АВИВ АНИСИЯ
    > какой-то ебень написал поебень
    АКАКИЙ-АООТ БЕНЬЯМИН НАПИСАЛА ПОЕБЕНЬ
    >

    Запостил: MPA3b, 03 Октября 2018

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

    • Бандера приде - на "PHP" переведе.
      Ответить
    • Добавь PEP-484 тупиздацию пожалуйста, иначе не сразу видно что параметр x у krpt это re.
      Я не умею в хиндли-милнера в голове
      Ответить
      • АКТЮБИНСК АООТ ИТАКОЙ?
        Ответить
      • ДОБАВЬ PEP-484 ТУПИЗДАЦИЮ ПОЖАЛУЙСТА, АНЕЧКА АН СРЕЗНЕВСКАЯ ВДНХ ЧИТА ПАРАМЕТР X У KRPT АООТ RE.
        Я АН АМВРОСИЯ АВИВ ХИНДЛИ-МОЛНИРОВАННЫЙ АВИВ ГУЛЯЕВ
        Ответить
      • Это всё что тебя смущает?
        Ответить
      • ПЧМ Н РБТТ?:
        #!/usr/bin/python
        #-*-coding:utf8;-*-
        
        from collections import defaultdict
        
        f = lambda x: "".join(filter(lambda x: x not in "АЕЁИОУЫЭЮЯ", x))
            
        d = defaultdict(lambda: [])
        
        for i in open("sn.txt", "r"):
            d[f(i)[0]].append(i)
        
        def krpt(x: str) -> str:
            from re import sub
            import _sre
            
            def g(x: _sre.SRE_Match) -> str:
                x = x.group(1)
                xp = f(x)
                if len(xp) == 0:
                   return x
                for i in d[xp[0]]:
                    i = i.strip().upper()
                    t = f(i)
                    if xp == t[:len(xp)]:
                        return i
                return x
                
            return sub("([А-ЯЁ]+)", g, x.upper())
        
        def main():
            while "ПРЛС":
                print(krpt(input("> ")))
        
        if __name__ == "__main__":
            main()
        Ответить
        • ПТМ ЧТ Т МРЗЬ.
          Ответить
        • #!/usr/bin/python


          Блядь, тройка уже сколько лет мейнстрим
          Ответить
          • В послендней Fedorа python уже python3
            Ответить
            • И все программы на двойке падают?
              Ответить
              • в системе и репозитории нет таких программ
                если программист такую пишет -- пусть сам прописывает путь или env, но скажу тебе по секрету что пользователей второго питона уже не так много
                Ответить
                • Шо, все уже на тройку переписали? В дебилиане вообще дефолт 2.6
                  Ответить
                  • > В дебилиане вообще дефолт 2.6

                    Тебе не похуй что там?
                    Ты ещё скажи какой дефолт в "Colibri OS" или в "Minoca OS".
                    Ответить
                    • > Colibri
                      Kolibri, и там нет питона по дефолту.

                      > Minoca
                      а это я вообще в первый раз вижу.
                      Ответить
                      • > Это 625 000 строк отлично документированного кода, преимущественно на языке программирования Си, частично на C++ и Ассемблере. Ядро ОС для x86 имеет размер около 750 КБ. С драйверами, сетевым стеком и видеобуфером свежезагруженная система использует 5−7 МБ оперативной памяти.
                        > Она совместима со стандартным набором интерфейсов POSIX. Это значит, что на ней можно запускать многие прикладные приложения, которые работают под Linux.

                        Надо будет глянуть, заинтересовало.
                        Ответить
                        • Начал читать статью про эту вашу «Миноку» и наткнулся на офтопик про ошибки в дистрибутивах «Линукса». Например, на эту:
                          https://www.linux.org.ru/forum/development/12981204

                          Для перевода числа из строки в целое автор использует функции atoi, которая возвращает 0 (нуль) и в случае перевода символа '0' и случае невозможности перевода (задано не число).

                          Ну как так можно? То ли дело "PHP"...
                          Ответить
                          • А что ещё сделаешь? Можно ещё упасть с исключением или передавать адрес переменной, а возвращать код возврата и всё. Это же Си, лучше проверять строку отдельно.
                            Ответить
                            • Да, при такой семантике остаётся только при использовании atoi вставлять дополнительную проверку: если функция вернула ноль, то проверять, а вдруг на входе действительно было что-то, что должно отображаться в ноль ("0", "00", " 0", "+0", "-0"). Как-то сложно выходит...

                              Функция strtol хотя бы errno устанавливает в случае ошибки.
                              Ответить
                    • Дебилиан ужн не нужен, да?
                      Ответить
              • зы: федора это дистриб для смелых, которые готовы обновляться каждые 3 месяца, там можно

                в RH/CentOS конечно же такого нет
                Ответить
              • я тебе напиздел, извини

                Wait, wasn't Python 3 as Default already done in Fedora 23? Yes it was, but part of that change proposal was that /usr/bin/python and unversioned package names starting with python will still mean Python 2, in compliance with upstream PEP 394.

                Но в свое оправдение могут сказать что
                Some Linux distributions like Arch Linux (2010) or OpenMandriva (2017) have already made /usr/bin/python pointing to Python 3
                Ответить
            • В бубунте по-умолчанию стоит только тройка, но алиаса python на неё нет. Т.е. всё равно надо явно писать python3. И это хорошо.
              Ответить
          • Всё равно не работает:
            #!/usr/bin/python
            #-*-coding:utf8;-*-
            	
            from __future__ import print_function
            from collections import defaultdict
            
            try:
                input = raw_input
            except NameError:
                pass
            
            y6paTb_rJlacHble = lambda x: "".join(filter(lambda x: x not in "АЕЁИОУЫЭЮЯ", x))
                
            cJloBapb = defaultdict(lambda: [])
            
            for nepeMeHHa9_LLuKJla in open("/sn.txt", "r"):
                d[f(i)[0]].append(nepeMeHHa9_LLuKJla)
            
            def KpunoTa(cTpoKa: str) -> str:
                from re import sub
                import _sre
                
                def noдo6paTb_cJloBo(cJloBo: _sre.SRE_Match) -> str:
                    cJloBo = cJloBo.group(1)
                    cJloBo_6e3_rJlacHblx = y6paTb_rJlacHble(cJloBo)
                    if len(cJloBo_6e3_rJlacHblx) == 0:
                       return cJloBo
                    for nepeMeHHa9_LLuKJla in map(str.strip, map(str.upper, cJloBapb[cJloBo_6e3_rJlacHblx[0]])):
                        if cJloBo_6e3_rJlacHblx == y6paTb_rJlacHble(nepeMeHHa9_LLuKJla)[:len(cJloBo_6e3_rJlacHblx)]:
                            return nepeMeHHa9_LLuKJla
                    return cJloBo
                    
                return sub("([А-ЯЁ]+)", noдo6paTb_cJloBo, cTpoKa.upper())
            
            def rJlaBHa9_qpyHKLLu9():
                while "6ecKoHeчHbū_LLuKJl":
                    print(KpunoTa(input("> ")))
            
            if __name__ == "__main__":
                rJlaBHa9_qpyHKLLu9()
            Ответить
    • https://youtu.be/-CPveCK26Ro
      Ответить
    • var banned = ['yet_another_one_shit', 
                    'admin', 
                    'BagorCtretora', 'Elvenfighter',
                    'KRPT_DDD', 'KRPT_DDD', 'UPPERCASE', 'MPA3b',
                   ]
      Ответить
      • JS?
        Ответить
      • Замечу, что на "PHP" слово "var" писать не придётся - достаточно будет заменить его знаком "$" без пробела. Будут сэкономлены три знака.
        Ответить
        • Спасибо
          а сам код на "PHP" переведёте?
          Ответить
          • Присоединяюсь к просьбе.
            Ответить
          • $banned=['yet_another_one_shit', 'admin', 'BagorCtretora', 'Elvenfighter', 'KRPT_DDD', 'KRPT_DDD', 'UPPERCASE', 'MPA3b'];
            Ответить
        • > Замечу, что на "PHP" слово "var" писать не придётся

          http://govnokod.ru/24812
          Ответить
      • ЧЕМ ТЕБЕ НЕ УГОДИЛЛИ АДМИН, БАГОРЦТРЕТОРА И ЭЛВЕНФАЙТЕР? ВСЕ ОСТАЛЬНЫЕ ФАЙКИ МОИ.
        Ответить
    • import re
      from collections import defaultdict
      
      f = lambda x: "".join(filter(lambda x: x not in "АЕЁИОУЫЭЮЯ", x))
          
      d = defaultdict(lambda: [])
      
      for i in open("sn.txt", "r"):
          d[f(i)[0]].append(i)
      
      def krpt(x):
          x = x.group(1)
          xp = f(x)
          if len(xp) == 0:
             return x
          for i in d[xp[0]]:
              i = i.strip().upper()
              t = f(i)
              if xp == t[:len(xp)]:
                  return i
          return x
      
      def KRPT(x):
          return re.sub("([А-ЯЁ]+)", krpt, x.upper())
          
      while "ПРЛС":
          print(KRPT(input("> ")))
      Ответить
      • ой
        Ответить
      • Бандера приде - на "PHP" переведе.
        Ответить
      • за названия переменных надо убить
        Ответить
        • Перевёл, проверь:
          import re
          from collections import defaultdict
          
          pituh = lambda xyu: "".join(filter(lambda xyu: xyu not in "АЕЁИОУЫЭЮЯ", xyu))
              
          unskilled = defaultdict(lambda: [])
          
          for vorec in open("sn.txt", "r"):
              unskilled[pituh(vorec)[0]].append(vorec)
          
          def bormand(xyu):
              xyu = xyu.group(1)
              xpeh = pituh(xyu)
              if len(xpeh) == 0:
                 return xyu
              for vorec in unskilled[xpeh[0]]:
                  vorec = vorec.strip().upper()
                  php = pituh(vorec)
                  if xpeh == php[:len(xpeh)]:
                      return vorec
              return xyu
          
          def HACTEHbKA(napiton):
              return re.sub("([А-ЯЁ]+)", bormand, napiton.upper())
              
          while "ПРЛС":
              print(HACTEHbKA(input("> ")))


          Именно поэтому я за "Питон".
          Ответить
    • ХУЙ В АНУС
      Ответить
    • Выложи sn.txt с тестами
      Ответить
      • Я взял отсюда:
        https://github.com/danakt/russian-words/

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

      Структура словаря странная, {'первая буква слова': ['список', 'слов начинающихся на эту букву после удаления гласных']}. Но видно оно и так быстро работает. Двоичного поиска же нету в либе питона?
      Ответить
    • Вот перепиленная версия

      #!/usr/bin/env python3
      
      from collections import defaultdict
      import re
      import _sre
      
      # первая согласная -> список слов
      dic = defaultdict(list)
      
      def ubrat_glasnie(s): # str) -> str:
          return "".join(char for char in s if char not in "АЕЁИОУЫЭЮЯ")
      
      def kripota(stroka): # str) -> str:
          def podobrat_slovo(word): # _sre.SRE_Match) -> str:
              word = word.group(1)
              slovo_bez_glasnih = ubrat_glasnie(word)
              if len(slovo_bez_glasnih) == 0:
                  return word
      
              for new_word in dic[slovo_bez_glasnih[0]]:
                  new_word = new_word.upper()
      ##            if slovo_bez_glasnih == ubrat_glasnie(new_word)[:len(slovo_bez_glasnih)]:
                  if ubrat_glasnie(new_word).startswith(slovo_bez_glasnih):
                      return new_word
              return word
      
          return re.sub("([А-ЯЁ]+)", podobrat_slovo, stroka.upper())
      
      def main():
          for line in open("sn.txt", "r", encoding='всегда явно указывай кодировку, пидор!'):
              # dic[первая буква].append(слово)?
              dic[ubrat_glasnie(line)[0]].append(line.strip())
      
          while True:
              print(kripota(input("> ")))
      
      def test():
          test_data = [
              ('какой багор )))', 'АКАКИЙ БОГОРОДСК )))'),
              ('лунная клизма, лай мне в анус', 'АЛИНИН КЛИЗМА, ЛЕЙБНИЦ АМУНДСЕН АВИВ АНИСИЯ'),
              ('какой-то ебень написал поебень', 'АКАКИЙ-АООТ БЕНЬЯМИН НАПИСАЛА ПОЕБЕНЬ'),
          ]
          file_data = []
          for _, output in test_data:
              file_data.extend(output.split())
      
          for line in file_data:
              dic[ubrat_glasnie(line)[0]].append(line)
      
          pass
          for input_, output in test_data:
              print(kripota(input_))
      
      if __name__ == "__main__":
      ##    main()
          test()
      Ответить
      • Э-эээээ...
        Ответить
        • Чо?
          Ответить
          • Переведи на "PHP" через плечо.
            Ответить
            • Напоминает диалог армян:
              —— Ара, инч?
              —— Клирис пинч!

              Если вы не знаете, как это переводится, то гуглить не советую.
              Ответить
              • Спасибо, что предупредил, амаякинхо!
                Ответить
              • - Ара, инч?
                - Инканус битч!
                Ответить
              • Здравствуйте, здравствуйте, дорогой коллега!
                Ответить
                • Какой багор )))
                  Ответить
                • @Amayak_Akopyan
                  @дорогой коллега

                  Надо же, а я всегда думал, что Ваш коллега - я...
                  Обидно, пиздец.
                  Ответить
                  • Ты свои файки называешь коллегами? Хахаха, ебать ты поехавший.
                    Ответить
                    • Не ты - поехавший, не он - поехавший, это я, я - поехавший!

                      https://bumper-stickers.ru/29909-thickbox_default/smaylik-ulybka.jpg
                      Ответить
                    • Выебал тебя, поехавшего, проверь.
                      Ответить
      • Прокомментировал бы кто.
        Ответить

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