Bài tập, nhiệm vụ
Nhiệm vụ của bạn là viết một chức năng hoặc một chương trình bằng ngôn ngữ bạn chọn để phân tích một vài câu lệnh và xác định xem liệu nó có thể được kết luận từ những câu mà lợn có thể bay hay không.
Đầu vào
Đầu vào là một Chuỗi có thể được đọc từ STDIN, được lấy làm đối số chức năng hoặc thậm chí được lưu trữ trong một tệp. Đầu vào có thể được mô tả bằng EBNF sau:
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" ;
Ví dụ đầu vào (xem thêm ví dụ bên dưới):
Pigs are green. Everything that is green is also intelligent. Everything that is able to fly is also not intelligent. Pigs are sweet.
Đầu ra
Đầu ra có thể được trả về bởi chức năng của bạn, được ghi vào một tệp hoặc in ra STDOUT. Có 5 trường hợp khác nhau sẽ được xử lý:
- Các tuyên bố đã cho là hợp lệ, nhất quán và có kết quả hợp lý là lợn có thể bay. Trong trường hợp đó, bạn phải xuất ra
Yes
. - Các tuyên bố đã cho là hợp lệ, nhất quán và có kết quả hợp lý là lợn không thể bay. Trong trường hợp đó, bạn phải xuất ra
No
. - Không thể kết luận từ các tuyên bố nhất định, hợp lệ và nhất quán cho dù lợn có thể bay hay không. Trong trường hợp đó, bạn phải xuất ra
Maybe
. - Các tuyên bố đã cho là hợp lệ, nhưng không nhất quán (nghĩa là có mâu thuẫn trong các tuyên bố đã cho). Kể từ ex falso quodlibet , chúng tôi quyết định đầu ra
Yes
trong trường hợp đó. - Các báo cáo đã cho là không hợp lệ, tức là chúng không được định dạng theo EBNF đã cho. Trong trường hợp đó, bạn có thể làm bất cứ điều gì bạn muốn.
Chi tiết
- Bạn có thể cho rằng các thuộc tính đã cho là độc lập với nhau. Vì vậy, ví dụ, một con lợn có thể trẻ và già, xanh, đỏ và xanh cùng một lúc mà không gây ra bất kỳ sự mâu thuẫn nào. Tuy nhiên, một con lợn có thể không 'xanh' và 'không xanh' cùng một lúc, đó là một mâu thuẫn và nên được xử lý như mô tả trong (4).
- Đối với mọi thuộc tính, giả sử rằng có ít nhất một đối tượng (không nhất thiết là lợn) trong vũ trụ có thuộc tính đã cho và một đối tượng không có đối tượng đó.
Ví dụ Đầu vào & Đầu ra
Đầu vào:
Pigs are green. Everything that is green is also intelligent. Everything that is able to fly is also not intelligent.
Đầu ra: Vì Lợn có màu xanh và do đó thông minh, và mọi thứ có thể bay đều không thông minh, lợn không thể bay. Đầu ra là No
.
Đầu vào:
Pigs are old. Everything that is not able to fly is also not old.
Đầu ra: Nếu lợn không thể bay, chúng cũng không già. Nhưng vì chúng đã cũ, bạn phải xuất ra Yes
.
Đầu vào:
Everything that is sweet is also not old. Everything that is intelligent is also blue.
Đầu ra : Maybe
.
Đầu vào:
Pigs are not able to fly. Everything that is red is also sweet. Everything that is sweet is also not red.
Đầu ra: Mặc dù câu lệnh đầu tiên ngụ ý rằng lợn không thể bay, nhưng các câu lệnh sau mâu thuẫn với nhau và do đó đầu ra phải là Yes
.
Đầu vào:
Pigs are very smart. Pigs are able to fly.
Đầu ra: Bất cứ điều gì bạn muốn, vì Chuỗi không khớp với các tiêu chí được đề cập ở trên.
Người chiến thắng
Đây là môn đánh gôn , vì vậy câu trả lời đúng ngắn nhất (tính bằng byte) sẽ thắng. Người chiến thắng sẽ được chọn một tuần sau khi câu trả lời đúng đầu tiên được đăng.