仕事
あなたの仕事は、いくつかの文を分析し、ブタが飛ぶことができるそれらの文から結論を出すことができるかどうかを決定する、選択した言語で関数またはプログラムを書くことです。
入力
入力は、STDINから読み取ることができる文字列で、関数の引数として取得するか、ファイルに保存することもできます。入力は、次のEBNFを使用して説明できます。
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" ;
入力例(以下の例を参照):
Pigs are green. Everything that is green is also intelligent. Everything that is able to fly is also not intelligent. Pigs are sweet.
出力
出力は関数によって返されるか、ファイルに書き込まれるか、STDOUTに出力されます。処理する5つの異なるケースがあります。
- 与えられた声明は有効で一貫性があり、豚が飛ぶことができるという論理的な結果をもたらします。その場合、出力する必要があります
Yes
。 - 与えられた声明は有効で一貫性があり、論理的には豚が飛ぶことができないという結果をもたらします。その場合、出力する必要があります
No
。 - 豚が飛べるかどうかは、与えられた有効かつ一貫した声明から結論付けることはできません。その場合、出力する必要があります
Maybe
。 - 指定されたステートメントは有効ですが、一貫性がありません(つまり、指定されたステートメントに矛盾があります)。以来EX falso quodlibet、我々は出力に決め
Yes
、その場合には。 - 指定されたステートメントは無効です。つまり、指定されたEBNFに従ってフォーマットされていません。その場合、あなたは何でもしたいかもしれません。
詳細
- 与えられた属性は互いに独立していると仮定できます。したがって、たとえば、豚は不整合を引き起こすことなく、若くても老いても、緑、赤、青であってもかまいません。ただし、豚は同時に「緑」と「緑ではない」場合があります。これは矛盾であり、(4)で説明されているように処理する必要があります。
- すべての属性について、指定された属性を持つ少なくとも1つのオブジェクト(必ずしも豚であるとは限らない)がユニバースにあり、それを持たないオブジェクトが1つあると仮定します。
入力と出力の例
入力:
Pigs are green. Everything that is green is also intelligent. Everything that is able to fly is also not intelligent.
出力:豚は緑であり、したがって知的であり、飛べるものはすべて知的ではないため、豚は飛べません。出力はNo
です。
入力:
Pigs are old. Everything that is not able to fly is also not old.
アウトプット:ブタが飛べなかった場合、ブタも老齢ではありませんでした。ただし、古いので、出力する必要がありますYes
。
入力:
Everything that is sweet is also not old. Everything that is intelligent is also blue.
出力: Maybe
。
入力:
Pigs are not able to fly. Everything that is red is also sweet. Everything that is sweet is also not red.
出力:最初のステートメントは豚が飛べないことを示していますが、次のステートメントは互いに矛盾するため、出力はでなければなりませんYes
。
入力:
Pigs are very smart. Pigs are able to fly.
出力:文字列が上記の基準に一致しないため、何でもいいです。
勝者
これはcode-golfなので、最短の正解(バイト単位)が勝ちます。最初の正解が掲載されてから1週間後に勝者が選ばれます。