Jika Anda ingat kembali ke tahun-tahun sekolah Anda, Anda mungkin ingat belajar tentang Tabel Kebenaran . Mereka tampak membosankan, tetapi mereka adalah dasar untuk logika dan (beberapa akan berpendapat) semua komputasi ...
Masalah
Misi Anda, yang harus Anda pilih untuk menerimanya adalah menulis sebuah program, fungsi, atau widget kode yang dapat menampilkan tabel kebenaran yang diberikan input.
Memasukkan
Input akan berupa string (seperti struktur data) yang berisi pernyataan logika untuk membuat Tabel Kebenaran menjadi. Sebagai contoh:
p ∧ q
Ini berarti p and q
(konjungsi logis) dan akan menampilkan:
p q p ∧ q
T T T
T F F
F T F
F F F
Perhatikan spasi: Item kolom berada di tengah header
Karakter
Skor melalui karakter, bukan byte Karakter perbandingan logika adalah spesial dan tidak selalu seperti apa mereka. Gunakan karakter ini:
Logical Conjunction (AND): ∧
U + 2227
Logical Disjunction (OR): ∨
U + 2228
Logical Negation (NOT) ~
atau ¬
U + 7e dan U + ac
Bonus
Semua bonus ini bersifat opsional, tetapi akan menghilangkan poin Anda. Pilih apa saja.
Negasi logis
Logical Negation adalah operator unary di tabel kebenaran. Ini setara dengan !
di sebagian besar bahasa berbasis C. Itu membuat false
=> true
dan sebaliknya. Ini dinotasikan dengan a ¬
atau ~
(Anda harus mendukung keduanya). Mendukung ini akan menjatuhkan 10% dari skor Anda. Namun, Anda harus menambahkan kolom tambahan untuk menunjukkan hasilnya: Misalnya:
~p ∧ q
akan menampilkan:
p ~p q ~p ∧ q
T F T F
T F F F
F T T T
F T F F
Cukup Cetak
Notasi tabel normal membosankan. Mari kita buat cantik! Format cetak cantik adalah sebagai berikut p ∧ q
adalah sebagai berikut:
+---+---+-------+
| p | q | p ∧ q |
+---+---+-------+
| T | T | T |
+---+---+-------+
| T | F | F |
+---+---+-------+
| F | T | F |
+---+---+-------+
| F | F | F |
+---+---+-------+
Detail khusus untuk pencetakan cantik:
- Ada 1 ruang padding di setiap sel
- Nilai sel masih terpusat
Jika Anda cukup mencetak tabel Anda, dari kode Anda dan kemudian kalikan dengan 0,6. Gunakan fungsi ini untuk bonus ini:
score = 0.6 * code
Contohnya
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
Aturan
- Celah standar berlaku
- Tidak ada sumber daya eksternal
- Jika Anda melanggar aturan, cerdaslah;)
Kode Terpendek (dalam karakter) menang. Semoga berhasil!
score = 0.6 * (code - 15)
=.6 * code - 9
p
q
dan r
di tabel kebenaran;)
p
danq
. Kecuali mereka selalu memiliki nama-nama ini, Anda mungkin ingin menunjukkan beberapa opsi berbeda dalam contoh pengujian. Apakah mereka selalu satu huruf?