Si vous vous souvenez de vos années de scolarité, vous vous souvenez peut-être avoir appris les tables de vérité . Ils semblaient ennuyeux, mais ils sont à la base de la logique et (certains diront) de l'informatique ...
Problème
Votre mission, si vous choisissez de l'accepter, est d'écrire un programme, une fonction ou un widget de code qui peut produire une entrée de table de vérité.
Contribution
L'entrée sera une chaîne (comme la structure de données) contenant l'instruction logique dans laquelle faire la table de vérité. Par exemple:
p ∧ q
Cela signifie p and q
(conjonction logique) et produira:
p q p ∧ q
T T T
T F F
F T F
F F F
Remarquez l'espacement: l'élément de la colonne est au centre de l'en-tête
Personnages
Score via des caractères, pas des octets Les caractères de comparaison logique sont spéciaux et ne sont pas toujours à quoi ils ressemblent. Utilisez ces caractères:
Conjonction logique (AND): ∧
U + 2227
Disjonction logique (OR): ∨
U + 2228
Négation logique (NON) ~
ou ¬
U + 7e et U + ac respectivement
Bonus
Tous ces bonus sont facultatifs, mais vous feront perdre des points à votre score. Choisissez-en.
Négation logique
La négation logique est un opérateur unaire dans les tables de vérité. C'est l'équivalent de !
dans la plupart des langages basés sur C. Cela fait false
=> true
et vice versa. Il est noté avec un ¬
ou ~
(vous devez prendre en charge les deux). Soutenir cela réduira 10% de votre score. Vous devez cependant ajouter une colonne supplémentaire pour afficher ses résultats: Par exemple:
~p ∧ q
affichera:
p ~p q ~p ∧ q
T F T F
T F F F
F T T T
F T F F
Jolie impression
La notation de table normale est ennuyeuse. Faisons-le joli! Le joli format d'impression est le suivant pour p ∧ q
est le suivant:
+---+---+-------+
| p | q | p ∧ q |
+---+---+-------+
| T | T | T |
+---+---+-------+
| T | F | F |
+---+---+-------+
| F | T | F |
+---+---+-------+
| F | F | F |
+---+---+-------+
Détails spéciaux pour une jolie impression:
- Il y a 1 espace de remplissage dans chaque cellule
- Les valeurs des cellules sont toujours centrées
Si vous imprimez assez vos tableaux, à partir de votre code, puis multipliez par 0,6. Utilisez cette fonction pour ce bonus:
score = 0.6 * code
Exemples
p ∧ q
:
p q p ∧ q
T T T
T F F
F T F
F F F
p ∨ q
:
p q p ∨ q
T T T
T F T
F T T
F F F
~p ∧ q
:
p ~p q ~p ∧ q
T F T F
T F F F
F T T T
F T F F
~p ∨ q
:
p ~p q ~p ∧ q
T F T T
T F F F
F T T T
F T F T
Règles
- Des échappatoires standard s'appliquent
- Pas de ressources externes
- Si vous allez enfreindre les règles, soyez intelligent;)
Le code le plus court (en caractères) gagne. Bonne chance!
score = 0.6 * (code - 15)
=.6 * code - 9
p
q
et r
dans une table de vérité;)
p
etq
. À moins qu'ils aient toujours ces noms, vous souhaiterez peut-être afficher quelques options différentes dans les exemples de test. S'agit-il toujours d'une seule lettre?