Sintaksis
~
tidak
/\
dan
\/
atau
t
benar
f
palsu
P
, Q
, FISH
, dll: variabel
(Operator diberikan dalam urutan prioritas)
pengantar
Beberapa formula boolean dapat diubah ke bentuk yang berbeda untuk membuatnya lebih pendek. Misalnya rumusnya
~(~P /\ ~Q)
dapat diubah ke bentuk yang lebih pendek
P\/Q
sedangkan formula
P \/ ~P
dapat diubah ke bentuk yang lebih pendek
t
Tantangan
Dalam tantangan ini, Anda diminta untuk menulis sebuah program yang, diberikan rumus boolean hanya menggunakan /\
, \/
, ~
, t
, f
, kurung, variabel boolean (dalam huruf besar), dan spasi, output bentuk terpendek (karena mungkin ada lebih dari satu bentuk terpendek ) dalam karakter ekspresi yang setara untuk semua penugasan variabel. Kode terpendek (dalam bahasa apa pun) menang. I / O dapat dilakukan dengan cara yang masuk akal.
Juga, karena jawaban sulit untuk diverifikasi, akan sangat membantu (tetapi tidak diharuskan) untuk menyertakan penjelasan singkat tentang bagaimana kode bekerja.
BooleanMinimize
)b9c98d088b78c30bb2108008a064a7b95722a4694d90ddad94a025c2eb4ed30a
. Saya akan memposting kode aktual di kemudian hari, karena saya tidak ingin menahan kreativitas.Jawaban:
Oh benar, saya lupa pernah benar-benar memposting jawaban saya. Ini menggunakan pendekatan yang persis sama persis yang digunakan jawaban KSab , tetapi hanya mencetak ekspresi valid terpendek.
Python3, 493
Perhatikan bahwa hash saya dihitung sebelumnya termasuk baris baru Trailing dan sebelum aku golfed
def e(x): return
kee=lambda x:
sumber
Python 616
Tidak terlalu efisien, tetapi bekerja pada waktu yang wajar untuk input yang hasilnya sekitar 5 atau 6 karakter. Untuk memeriksa string untuk melihat apakah cocok, itu loop melalui setiap kemungkinan kombinasi nilai kebenaran / salah untuk semua variabel dan memastikan masing-masing setuju. Menggunakan ini memeriksa setiap string yang mungkin terdiri dari karakter yang relevan (bahkan tidak harus yang secara sintaksis benar).
Ini sebenarnya akan mencetak setiap ekspresi setara (dari setiap ukuran) dan tidak pernah benar-benar berakhir.
Kode:
Input / Ouput:
sumber