コンパイラに「なぜ?」と尋ねたいと思ったことはありませんか。私たちのほとんどは、コードが正常に機能していないことに不満を感じています。したがって、Mathworksはwhy質問に答える素敵な小さな関数を実装しました。MATLABからいくつかの例を示します。
why
The programmer suggested it.
why
To fool the tall good and smart system manager.
why(2)
You insisted on it.
why(46)
Bill insisted on it.
あなたの仕事はwhyあなたの言語で関数を実装することです。この関数は、入力引数の有無にかかわらず動作する必要があります(あるいは、入力0またはを使用します-1)。関数には名前を付ける必要がありますwhy(または、why(n)STDIN に書き込むと、適切な文字列が出力されるはずです)。
引数が指定されていない場合、または引数がゼロまたは負の場合、出力文字列はランダムで有効なフレーズでなければなりません。だから、機能があるはずwhy、why()、why(0)またはwhy(-1)そのランダムな文を返します。
入力引数nが指定された場合(STDINではなく関数引数)、出力はn番目の文字列(以下で定義)でなければなりません。したがって、why(1)常に同じ結果を出力(印刷/表示)する必要があります。
文は次のように構成されています(タイプ1、タイプ2、特殊)。すべての文はで終わり!ます。
"Person" "ending" !
"Verb" "adjective" "Person" !
A list of special cases
人のリスト:
Stewie
Peter
Homer
The programmer
The system manager
You
終わりのリスト:
suggested it
insisted on it
did it
動詞のリストは次のとおりです。
To fool
To satisfy
To please
形容詞のリスト:
the smart
the bald
the tall
the rich
the stupid
特別な場合のリスト:
How should I know?
Stop asking!
Don't ask!
番号付きのものを選択する方法は次のとおりです。
文の種類:
Odd number => Type 1
Even number => Type 2
n % 7 = 0 => Type 3 (% is the modulus operator)
名前: n番目の名前は、モジュラス(%)を使用して定義されます。
n = 1: 1 % 7 => Stewie
n = 2: 2 % 7 => Peter
...
n = 6: 6 % 7 => You
n = 7: 7 % 7 => How should I know?
n = 11: 11 % 7 => The programmer
n = 14: 14 % 7 => Stop asking!
n = 21: 21 % 7 => Don't ask!
終了: n番目の終了もモジュラスを使用して定義されます。末尾(1、2、3)がのようにリストされているとし(1 2 2 3)ます。数字は常に奇数なので、((n+1)/2 % 4)
n = 1: ((1+1)/2 % 4) => suggested it
n = 3: ((3+1)/2 % 4) => insisted on it
n = 13: ((13+1)/2 % 4) => did it
形容詞: n番目の形容詞は、法を使用して定義されます。数値は常に偶数であるため、次を使用します。(n % 10)/2
n = 2: (2 % 10)/2 => Smart
n = 6: (6 % 10)/2 => The tall
...
動詞: n番目の動詞もモジュラスを使用して定義されます。動詞(1、2、3)は次のようにリストされていると仮定し(1 2 2 3)ます。数字は動詞に対して常に偶数なので、(n % 8) / 2
n = 2: (2 % 8)/2 => To fool
n = 4: (4 % 8)/2 => To satisfy
n = 6: (6 % 8)/2 => To satisfy
n = 8: (8 % 8)/2 => To please
さて、ランダムなものを作成する方法は非常に簡単で、単にrandomを選択する必要がありますn。
いくつかの例:
why
You suggested it!
why
To fool the tall Homer!
why
Don't ask!
why(1)
Stewie suggested it!
why(14)
Stop asking!
why(8)
To please the rich Stewie!
標準コードのゴルフ規則が適用されます。チャレンジが投稿された日から1週間で勝者が選ばれます。
/2。それは小数値を与えます。13またなければならないinsisted(14/2 = 7%主張の4 = 3 = 2)。
the rich The programmerが指定されたためのようなケースで終わるかどうかは問題theですか?
TheとToリストは、おそらくあなたの例に合わせて小文字にする必要があります
why必要がWHYありますか?