Size bir dizi mantık ifadesi verilir. Zorluğunuz, diğerleriyle çelişen, ancak en uygun şekilde kaldırmaktır (yani, minimum sayıda ifadeyi kaldırmak).
Meydan okuma
Bir program veya girdi olarak ifadelerin bir listesini alan bir çözüm yazacaksınız, bir çözüm bulunacak ve geri kalan çıktıyı çıkaracak şekilde minimum sayıda ifadeyi kaldıracaksınız .
Mantık
İfadeler değişkenler A-Z
ve aralarındaki operatörlerden oluşur .
5 operatör vardır : -
(değil), v
(veya), ^
(ve), ->
(if) ve <->
(iff).
Doğruluk tablosu:
A | B | -A | AvB | A^B | A->B | A<->B
0 | 0 | 1 | 0 | 0 | 1 | 1
0 | 1 | 1 | 1 | 0 | 1 | 0
1 | 0 | 0 | 1 | 0 | 0 | 0
1 | 1 | 0 | 1 | 1 | 1 | 1
Bu operatörler parantez ile birleştirilebilir ()
:
A | B | -(AvB) | Av(-A) | A^(-A) | (AvB)->(-B)
0 | 0 | 1 | 1 | 0 | 1
0 | 1 | 0 | 1 | 0 | 0
1 | 0 | 0 | 1 | 0 | 1
1 | 1 | 0 | 1 | 0 | 0
Mantık sistemleri 1 veya daha fazla ifadeden oluşur .
Mantık sistemine bir çözüm , tüm ifadelerin aynı anda doğru olduğu bir durumdur .
Mantık sistemlerine örnekler:
AvB
-(A<->B)
(AvB)->(-B)
Tek çözüm olduğunu A = 1, B = 0
.
A^B
-(B<->A)
Bunun çözümü yok ; ifadelerin hiçbir kombinasyonu olmadan A
ve B
her iki ifade de doğrudur.
Giriş
Girdi olarak bir dizi ifade alacaksınız . Bu, STDIN veya bir dizi (uygun biçimde) veya yeni satırla ayrılmış veya boşlukla ayrılmış bir dize olarak biçimlendirilmiş işlev bağımsız değişkenleriyle alınabilir.
İfadeleri (Neredeyse- aşağıdaki biçimde olacaktır ABNF ):
statement = variable / operation
operation = not-operation / binary-operation
not-operation = "-" operand
binary-operation = operand binary-operator operand
operand = variable / "(" operation ")"
variable = "A"-"Z"
binary-operator = "v" / "^" / "->" / "<->"
Örnek ifadeler:
A
Av(-B)
(A<->(Q^C))v((-B)vH)
Çıktı
(Muhtemelen) azaltılmış ifade kümesini tam olarak aldığınız biçimde geri göndermelisiniz. Yine, liste bir dize dizisi veya satırsonu veya boşlukla ayrılmış bir dize olarak biçimlendirilebilir.
kurallar
- Her zaman minimum sayıda ifadeyi kaldırmalısınız. Birden fazla olası çözüm varsa, bunlardan birini alın.
- Girdinin her zaman en az 1 deyim içerdiğini ve girdide hiçbir deyimin tekrarlanmadığını varsayabilirsiniz.
- Çıktının her zaman bir ifade içerdiğini varsayamazsınız. (örneklere bakın)
- Standart boşlukların kullanılması yanıtınızın geçerli olmasıyla çelişir ve bunlardan biri kaldırılmalıdır.
- Bu kod golf , bu yüzden bayttaki en kısa cevap kazanır.
Örnekler
Giriş:
A^(-A)
Çıktı:
(nothing)
Giriş:
A^B A<->(-B) A<->B
Çıktı:
A^B A<->B
Giriş:
["AvB","A^B"]
Çıktı:
["AvB","A^B"]
(AvB)->-B
olması gerekir (AvB)->(-B)
)
A<->(Q^C))v((-B)vH
püre haline getirilir.