Jeśli pamiętasz swoje lata szkolne, możesz pamiętać o poznawaniu tabel prawdy . Wydawały się nudne, ale są podstawą logiki i (niektórzy twierdzą) wszystkich komputerów ...
Problem
Twoim zadaniem, jeśli zdecydujesz się to zaakceptować, jest napisanie programu, funkcji lub widżetu kodu, który może wypisać dane wejściowe z tabeli prawdy.
Wejście
Dane wejściowe będą ciągiem (podobnym do struktury danych) zawierającym instrukcję logiczną, z której zostanie utworzona tablica prawdy. Na przykład:
p ∧ q
Oznacza to p and q
(sprzężenie logiczne) i spowoduje:
p q p ∧ q
T T T
T F F
F T F
F F F
Zwróć uwagę na odstępy: element kolumny znajduje się na środku nagłówka
Postacie
Ocena za pomocą znaków, a nie bajtów Znaki porównania logicznego są wyjątkowe i nie zawsze wyglądają. Użyj tych znaków:
Logiczna koniunkcja (AND): ∧
U + 2227
Logiczne rozłączenie (OR): ∨
U + 2228
Negacja logiczna (NOT) ~
lub odpowiednio ¬
U + 7e i U + ac
Bonusy
Wszystkie te bonusy są opcjonalne, ale powalą punkty na Twój wynik. Wybierz dowolny.
Logiczna negacja
Logiczna negacja jest jednym operatorem w tabelach prawdy. Jest to odpowiednik !
w większości języków opartych na C. To sprawia, że false
=> true
i odwrotnie. Jest oznaczony symbolem ¬
lub ~
(musisz obsługiwać oba). Wspieranie tego powali 10% twojego wyniku. Musisz jednak dodać dodatkową kolumnę, aby pokazać jej wyniki: Na przykład:
~p ∧ q
wyświetli:
p ~p q ~p ∧ q
T F T F
T F F F
F T T T
F T F F
Ładny druk
Normalny zapis w tabeli jest nudny. Zróbmy to ładnie! Ładny format wydruku p ∧ q
jest następujący:
+---+---+-------+
| p | q | p ∧ q |
+---+---+-------+
| T | T | T |
+---+---+-------+
| T | F | F |
+---+---+-------+
| F | T | F |
+---+---+-------+
| F | F | F |
+---+---+-------+
Specjalne szczegóły dla ładnego drukowania:
- W każdej komórce znajduje się 1 dopełnienie spacji
- Wartości komórek są nadal wyśrodkowane
Jeśli ładnie wydrukujesz swoje tabele, z kodu, a następnie pomnóż przez 0,6. Użyj tej funkcji, aby uzyskać ten bonus:
score = 0.6 * code
Przykłady
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
Zasady
- Obowiązują standardowe luki
- Brak zasobów zewnętrznych
- Jeśli masz zamiar złamać zasady, bądź sprytny;)
Najkrótszy kod (w znakach) wygrywa. Powodzenia!
score = 0.6 * (code - 15)
=.6 * code - 9
p
q
i r
w tabeli prawdy;)
p
iq
. Jeśli nie zawsze mają te nazwy, możesz pokazać kilka różnych opcji w przykładach testowych. Czy zawsze są jedną literą?