Tugas
Tugas Anda adalah menulis fungsi atau program dalam bahasa pilihan Anda yang menganalisis beberapa pernyataan dan menentukan apakah dapat disimpulkan dari pernyataan-pernyataan yang dapat diterbangkan babi.
Memasukkan
Input adalah sebuah String yang dapat dibaca dari STDIN, diambil sebagai argumen fungsi atau bahkan disimpan dalam file. Input dapat dijelaskan menggunakan EBNF berikut:
input = statement , {statement};
statement = (("Pigs are ", attribute) | ("Everything that is ", attribute, "is also ", attribute)), ". ";
attribute = [not], ("able to fly" | singleAttribute);
singleAttribute = letter, {letter};
letter = "a" | "b" | "c" | "d" | "e" | "f" | "g"
| "h" | "i" | "j" | "k" | "l" | "m" | "n"
| "o" | "p" | "q" | "r" | "s" | "t" | "u"
| "v" | "w" | "x" | "y" | "z" ;
Input contoh (lihat lebih banyak contoh di bawah):
Pigs are green. Everything that is green is also intelligent. Everything that is able to fly is also not intelligent. Pigs are sweet.
Keluaran
Output dapat dikembalikan oleh fungsi Anda, ditulis ke file atau dicetak ke STDOUT. Ada 5 kasus berbeda yang harus ditangani:
- Pernyataan yang diberikan valid, konsisten dan memiliki konsekuensi logis bahwa babi dapat terbang. Dalam hal ini, Anda harus menampilkan
Yes
. - Pernyataan yang diberikan valid, konsisten dan memiliki konsekuensi logis bahwa babi tidak bisa terbang. Dalam hal ini, Anda harus menampilkan
No
. - Tidak dapat disimpulkan dari pernyataan yang diberikan, valid dan konsisten apakah babi bisa terbang atau tidak. Dalam hal ini, Anda harus menampilkan
Maybe
. - Pernyataan yang diberikan valid, tetapi tidak konsisten (yaitu ada kontradiksi dalam pernyataan yang diberikan). Sejak ex falso quodlibet , kami memutuskan untuk menampilkan
Yes
dalam hal ini. - Pernyataan yang diberikan tidak valid, yaitu tidak diformat sesuai dengan EBNF yang diberikan. Dalam hal ini, Anda dapat melakukan apa pun yang Anda inginkan.
Detail
- Anda dapat mengasumsikan bahwa atribut yang diberikan independen satu sama lain. Jadi, misalnya, babi mungkin muda dan tua, hijau, merah dan biru pada saat yang sama tanpa menyebabkan ketidakkonsistenan. Namun, babi mungkin tidak 'hijau' dan 'tidak hijau' pada saat yang sama, itu kontradiksi dan harus ditangani sebagaimana dijelaskan dalam (4).
- Untuk setiap atribut, asumsikan bahwa setidaknya ada satu objek (tidak harus seekor babi) di alam semesta yang memiliki atribut yang diberikan, dan satu objek yang tidak memilikinya.
Contoh Input & Output
Memasukkan:
Pigs are green. Everything that is green is also intelligent. Everything that is able to fly is also not intelligent.
Keluaran: Karena Babi berwarna hijau dan karena itu cerdas, dan segala sesuatu yang dapat terbang tidak cerdas, babi tidak bisa terbang. Output adalah No
.
Memasukkan:
Pigs are old. Everything that is not able to fly is also not old.
Keluaran: Jika babi tidak bisa terbang, mereka juga tidak tua. Tetapi karena mereka sudah tua, Anda harus keluar Yes
.
Memasukkan:
Everything that is sweet is also not old. Everything that is intelligent is also blue.
Output: Maybe
.
Memasukkan:
Pigs are not able to fly. Everything that is red is also sweet. Everything that is sweet is also not red.
Keluaran: Walaupun pernyataan pertama menyiratkan bahwa babi tidak dapat terbang, pernyataan berikut ini saling bertentangan dan oleh karena itu hasilnya haruslah Yes
.
Memasukkan:
Pigs are very smart. Pigs are able to fly.
Output: Apa pun yang Anda inginkan, karena String tidak cocok dengan kriteria yang disebutkan di atas.
Pemenang
Ini adalah kode-golf , jadi jawaban terpendek yang benar (dalam byte) menang. Pemenang akan dipilih satu minggu setelah jawaban pertama yang benar diposting.