def has_two_consecutive_odds(n):
def odd(d):
return d % 2 == 1
def even(d):
return d % 2 == 0
for (o1,o2,e1,e2,e3) in [(0,1,2,3,4), (1,2,0,3,4), (2,3,0,1,4), (3,4,0,1,2)]:
if odd(n[o1]) and odd(n[o2]) and even(n[e1]) and even(n[e2]) and even(n[e3]):
return True
return False
def counting():
digits = {0,1,2,3,4,5,6}
numbers = [-1,-1,-1,-1,-1]
visited = {
0: False, 1: False, 2: False,
3: False, 4: False, 5: False,
6: False
}
count = [0]
def backtrack(i):
def has_five_digits():
return numbers[0] != 0
def is_even():
return numbers[4] % 2 == 0
for d in digits:
if not visited[d]:
visited[d] = True
numbers[i] = d
if i == 4:
if has_five_digits() and is_even() and has_two_consecutive_odds(numbers):
count[0] += 1
else:
backtrack(i+1)
visited[d] = False
backtrack(0)
return count[0]
if __name__ == '__main__':
print(counting())
ZGVmIGhhc190d29fY29uc2VjdXRpdmVfb2RkcyhuKToKICBkZWYgb2RkKGQpOgogICAgcmV0dXJuIGQgJSAyID09IDEKCiAgZGVmIGV2ZW4oZCk6CiAgICByZXR1cm4gZCAlIDIgPT0gMAoKICBmb3IgKG8xLG8yLGUxLGUyLGUzKSBpbiBbKDAsMSwyLDMsNCksICgxLDIsMCwzLDQpLCAoMiwzLDAsMSw0KSwgKDMsNCwwLDEsMildOgogICAgaWYgb2RkKG5bbzFdKSBhbmQgb2RkKG5bbzJdKSBhbmQgZXZlbihuW2UxXSkgYW5kIGV2ZW4obltlMl0pIGFuZCBldmVuKG5bZTNdKToKICAgICAgcmV0dXJuIFRydWUKICByZXR1cm4gRmFsc2UKCmRlZiBjb3VudGluZygpOgogIGRpZ2l0cyA9IHswLDEsMiwzLDQsNSw2fQogIG51bWJlcnMgPSBbLTEsLTEsLTEsLTEsLTFdCiAgdmlzaXRlZCA9IHsKICAgIDA6IEZhbHNlLCAxOiBGYWxzZSwgMjogRmFsc2UsCiAgICAzOiBGYWxzZSwgNDogRmFsc2UsIDU6IEZhbHNlLAogICAgNjogRmFsc2UKICB9CiAgY291bnQgPSBbMF0KICAKICBkZWYgYmFja3RyYWNrKGkpOgogICAgZGVmIGhhc19maXZlX2RpZ2l0cygpOgogICAgICByZXR1cm4gbnVtYmVyc1swXSAhPSAwCgogICAgZGVmIGlzX2V2ZW4oKToKICAgICAgcmV0dXJuIG51bWJlcnNbNF0gJSAyID09IDAKICAKICAgIGZvciBkIGluIGRpZ2l0czoKICAgICAgaWYgbm90IHZpc2l0ZWRbZF06CiAgICAgICAgdmlzaXRlZFtkXSA9IFRydWUKICAgICAgICBudW1iZXJzW2ldID0gZAogICAgICAgIGlmIGkgPT0gNDoKICAgICAgICAgIGlmIGhhc19maXZlX2RpZ2l0cygpIGFuZCBpc19ldmVuKCkgYW5kIGhhc190d29fY29uc2VjdXRpdmVfb2RkcyhudW1iZXJzKToKICAgICAgICAgICAgY291bnRbMF0gKz0gMQogICAgICAgIGVsc2U6CiAgICAgICAgICBiYWNrdHJhY2soaSsxKQogICAgICAgIHZpc2l0ZWRbZF0gPSBGYWxzZQoKICBiYWNrdHJhY2soMCkKICByZXR1cm4gY291bnRbMF0KCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgcHJpbnQoY291bnRpbmcoKSk=