[PYTHON] Le problème des menteurs et de l'honnêteté

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

Le problème des menteurs et de l'honnêteté
Le problème des menteurs et de l'honnêteté
À propos des problèmes et des solutions d'OpenPyXL (version Ver 3.0)
Problème FizzBuzz ceci et cela
Mécanisme de pyenv et virtualenv
Pré-traitement et post-traitement de pytest
Combinaison de récursif et de générateur
Combinaison de anyenv et direnv
Explication et mise en œuvre de SocialFoceModel
Différenciation du tri et généralisation du tri
Coexistence de pyenv et autojump
Utilisation et intégration de "Shodan"
Comparaison de la loi hongroise et des solveurs polyvalents pour les problèmes d'allocation
[Astuces] Problèmes et solutions dans le développement de python + kivy
Occurrence et résolution de tensorflow.python.framework.errors_impl.FailedPreconditionError
Comparaison d'Apex et de Lamvery
Installation source et installation de Python
Introduction et astuces de mlflow.
Construction d'environnement de python et opencv
Connaissance de base de Linux et des commandes de base
Combinaison de problèmes typiques d'optimisation et comment le faire
Ordre des arguments pour RegularGridInterpolator et interp2d
L'histoire de Python et l'histoire de NaN
Explication et mise en œuvre de PRML Chapitre 4
Introduction et mise en œuvre de JoCoR-Loss (CVPR2020)
Avantages et exemples d'utilisation de Rabbit Mq
Explication et implémentation de l'algorithme ESIM
Risque de mélange! ndarray et matrice
Installer SciPy et matplotlib (Python)
Importance de l'apprentissage automatique et de l'apprentissage par mini-lots
Introduction et mise en œuvre de la fonction d'activation
Mémorandum de sauvegarde et modèle de chargement
Malentendus et interprétations des dépendances de Luigi
Explication et mise en œuvre du perceptron simple
Calcul de la classe auto-fabriquée et de la classe existante
Ceci et cela des propriétés python
Méthode de planification des expériences et optimisation des combinaisons
Caractéristiques du lien symbolique et dur
Coexistence de Python2 et 3 avec CircleCI (1.0)
Résumé des index et des tranches Python
Agrégation et visualisation des nombres accumulés
Réputation des livres Python et des livres de référence