Змея / Говнокод #28910 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
'''
1. Прибавить 1
2. Прибавить 3
3. Прибавить 7

Программа для исполнителя – это последовательность команд. Сколько существует программ, для которых при исходном числе 13 результатом является число 31?
Все пары чисел траектории вычислений должны быть взаимно простыми (под парой подразумевается два подряд идущих числа).
Например, из числа 24 командой 2 (+3) нельзя перейти в число 27, потому как оба эти числа делятся на 3.
А из числа 25 можно перейти в 28., т.к. для этих чисел нет общих простых делителей, т.е. числа взаимно простые.
'''


def f(x, y):
    if x == 13:
        return f(x + 1, y) + f(x + 3, y) + f(x + 7, y)
    a = set()
    b = set()
    c = set()
    d = set()
    ### ВОТ ЭТА ЗАЛУПА ЗАМЕНЯЕТСЯ 1 СТРОЧКОЙ
    if x >= y:
        return x == y
    for i in range(1, x+1):
        if x % i == 0:
            a.add(i)
    for p in range(1, x+1 + 1):
        if (x+1) % p == 0:
            b.add(p)
    for o in range(1, x+1 + 3):
        if (x+3) % o == 0:
            c.add(o)
    for r in range(1, x+1 + 7):
        if (x+7) % r == 0:
            d.add(r)

    if len(a & b) == 1 and (list(a & b))[0] == 1:
        if len(a & c) == 1 and (list(a & c))[0] == 1:
            if len(a & d) == 1 and (list(a & d))[0] == 1:
                return f(x + 1, y) + f(x + 3, y) + f(x + 7, y)

    if len(a & b) == 1 and (list(a & b))[0] == 1:
        if not(len(a & c) == 1 and (list(a & c))[0] == 1):
            if len(a & d) == 1 and (list(a & d))[0] == 1:
                return f(x + 1, y) + f(x + 7, y)

    if len(a & b) == 1 and (list(a & b))[0] == 1:
        if len(a & c) == 1 and (list(a & c))[0] == 1:
            if not(len(a & d) == 1 and (list(a & d))[0] == 1):
                return f(x + 1, y) + f(x + 3, y)

    if not(len(a & b) == 1 and (list(a & b))[0] == 1):
        if len(a & c) == 1 and (list(a & c))[0] == 1:
            if len(a & d) == 1 and (list(a & d))[0] == 1:
                return f(x + 3, y) + f(x + 7, y)

    if not(len(a & b) == 1 and (list(a & b))[0] == 1):
        if not(len(a & c) == 1 and (list(a & c))[0] == 1):
            if len(a & d) == 1 and (list(a & d))[0] == 1:
                return f(x + 7, y)

    if not(len(a & b) == 1 and (list(a & b))[0] == 1):
        if len(a & c) == 1 and (list(a & c))[0] == 1:
            if not(len(a & d) == 1 and (list(a & d))[0] == 1):
                return f(x + 3, y)

    if len(a & b) == 1 and (list(a & b))[0] == 1:
        if not(len(a & c) == 1 and (list(a & c))[0] == 1):
            if not(len(a & d) == 1 and (list(a & d))[0] == 1):
                return f(x + 1, y)

    if not(len(a & b) == 1 and (list(a & b))[0] == 1):
        if not(len(a & c) == 1 and (list(a & c))[0] == 1):
            if not(len(a & d) == 1 and (list(a & d))[0] == 1):
                return x
    return 0
print(f(13, 31))

Я сын тайской шлюхи

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

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

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

Помни, guest, за тобой могут следить!

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


    8