J'ai essayé de résoudre Le problème des menteurs et de l'honnêteté avec Python
.
Je n'ai pas fait correspondre les réponses. «Python» facile.
import itertools
#Si tu es un menteur, réponds le contraire
def ans( person, liars, b):
if person in liars:
b = not b
return b
def print_res(liars, cards):
print('-----')
for i in range(4):
print( '{}:{} {}'.format('ABCD'[i], 'Mensonge' if i in liars else 'Positif', cards[i]))
#Une combinaison d'un menteur et d'une carte
liars_g = itertools.combinations(list(range(4)),2) #Menteur
cards_g = itertools.permutations(list(range(1,5))) #carte
for liars, cards in itertools.product(liars_g,cards_g):
#Mr. A: Ma carte est paire.
#Mr. B: Ma carte est de 3 ou 4.
#Mr. C: Mr. B est une famille honnête.
#Mr. D: Ma carte est 1.
if ans( 0, liars, cards[0] % 2 == 0) and \
ans( 1, liars, cards[1] in (3,4)) and \
ans( 2, liars, 1 not in liars) and \
ans( 3, liars, cards[3] == 1):
print_res(liars, cards)
répondre
-----
A:Mensonge 1
B:Positif 3
C:Positif 2
D:Mensonge 4
-----
A:Mensonge 1
B:Positif 3
C:Positif 4
D:Mensonge 2
-----
A:Mensonge 1
B:Positif 4
C:Positif 2
D:Mensonge 3
-----
A:Mensonge 1
B:Positif 4
C:Positif 3
D:Mensonge 2
-----
A:Mensonge 3
B:Positif 4
C:Positif 1
D:Mensonge 2
-----
A:Positif 4
B:Mensonge 2
C:Mensonge 3
D:Positif 1
Recommended Posts