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

    −51

    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
    def check(s, n):
        for left_open in range(0, len(s)):
            for right_close in range(left_open + 1, len(s)):
                for left_middle in range(left_open + 1, right_close):
                    for right_middle in range(left_middle + 1, right_close):                    
                        s1 = s[:left_open]
                        s2 = s[left_open:left_middle]
                        s3 = s[left_middle:right_middle]
                        s4 = s[right_middle:right_close]
                        s5 = s[right_close:]
                        exp1 = s1+'('+s2+'('+s3+')'+s4+')'+s5
                        exp2 = s1+'('+s2+')'+s3+'('+s4+')'+s5
                        try:
                            res = eval(exp1)                        
                            if res == n:
                                yield exp1
                        except:
                            continue
                        try:
                            res = eval(exp2)
                            if res == n:
                                yield exp2
                        except:
                            continue
    
    s = '1 + 2 * 3 + 4 * 5 + 6 * 7 + 8 * 9 + 10 * 11 + 12 * 13 + 14 + 15'
    for exp in check(s, 850):
        print(exp)

    Мой скрипт для решения задачи с javarush (расставить скобки в выражении, чтобы значение было равно 850). Такой же страшный, как и его вывод.

    Запостил: bagor, 04 Января 2017

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

    • >задачи с javarush
      А где там задачи, если не секрет, они вообще есть в открытом доступе? Я там вижу только кучу псевдорелигиозной хуиты с картинками.
      Ответить
    • джава раш:

      Anton Chigur
      Вопрос к админам JavaRush:
      Советник президента РФ по вопросам развития интернета Герман Клименко заявляет, что Россия должна быть готова к отключению от мирового интернета.
      Если им в голову всё-таки стукнет отключить Россию от мирового интернета, то к JavaRush вы обеспечите доступ из других стран?
      Зеркала у сайта есть/будут?
      Ответить
    • А что такое javarush: javarush.ru, javarush.net или что-то ещё?
      Ответить
    • На SMT солвере иди решай давай, на работу!
      Ответить
      • Ждём vwxwv и решение на прологе.
        Ответить
        • Это очень неудобно делать когда используются инфиксные операторы.
          Ответить
          • Лол. А для префиксных и постфиксных это вообще не нужно делать. Порядок и так понятен.
            Ответить
            • В чем как бы и суть.
              Ответить
              • Дзен-решение.
                Ответить
                • Ну ладно:
                  exp(1 + 2 * 3 + 4 * 5 + 6 * 7 + 8 * 9 + 10 * 11 + 12 * 13 + 14 + 15).
                  
                  parens(['(', ')', '(', ')']).
                  parens(['(', '(', ')', ')']).
                  
                  satisfies(Exp) :- Exp is 850.
                  
                  decompose_helper(Exp, Exp) :- atomic(Exp).
                  decompose_helper(Exp, [Dexpa | [Op | Dexpb]]) :-
                      Exp =.. [Op, A, B],
                      decompose_helper(B, Dexpb),
                      decompose_helper(A, Dexpa).
                  decompose(Exp, Dexp) :- decompose_helper(Exp, Rexp), flatten(Rexp, Dexp).
                  
                  merge([], Ps, Ps).
                  merge(Es, [], Es).
                  merge([E | Es], [P | Ps], [E | Ms]) :- merge(Es, [P | Ps], Ms).
                  merge([E | Es], [P | Ps], [P | Ms]) :- merge([E | Es], Ps, Ms).
                  
                  list_string([E], S) :- swritef(S, '%w', [E]).
                  list_string([E | Es], S) :-
                      list_string(Es, Ns),
                      swritef(S, '%w%w', [E, Ns]).
                  
                  list_exp(List, Exp) :-
                      list_string(List, S),
                      atom_string(S, A),
                      catch(term_to_atom(Exp, A), _, fail).
                  
                  javarush :-
                      exp(Exp),
                      parens(Ps),
                      decompose(Exp, Dexp),
                      merge(Ps, Dexp, Mexp),
                      list_exp(Mexp, Fexp),
                      satisfies(Fexp),
                      format('Answer: ~w~n', [Fexp]).

                  Но чет не работает. Разбираться лень.
                  Ответить
                  • > Но чет не работает. Разбираться лень.
                    Предлагаю обвинить во всем пролог и пересесть напитон.
                    Ответить
                  • > decompose_helper

                    Консерватор наоборот.
                    Ответить
      • Чтобы решено было!
        Ответить
        • Как он вилкой решать будет?
          Ответить
          • Вот так вот, быстро: 1 + 2 * 3 + 4 * 5 + 6 * 7! Давай!
            Ответить
          • Параллельно и рекуррентно. На каждый вариант форкнуть процесс.
            Ответить
    • А как ты догадался, что надо расставить всего 2 пары скобочек?
      Ответить
      • Там в условии было, что 4 скобки надо поставить, сорри, забыл указать.
        Ответить

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