私は、簡単にリストアップされたかなり愚かな練習問題に出くわしました。診断を与えるために医者が患者の言うことを聞かなければならないという前提があるが、患者からのaahは医師の要求するaahと一致しなければならない。医者がアアアアを求めて、患者がああと言ったら、診断はできません。ハスケルプログラムは、医師と患者aahをこの順序で読み込み、診断を与えることができる場合のBool値を返します。最初に私は、彼らが同じになるように必要と思わので、これは私のコードだった:ハスケルの2つの文字列を比較する
seeDoctor :: String -> String -> Bool
seeDoctor a b = if a == b then True
else False
しかし、私は、問題のすべてのルールを以下のいなかった、それはそう単純ではないことに気づきました。患者は医者よりも長い間aahと答えてTrueを返します。 "aah" "aaaah"はTrueを返します。 "aaah"と "h" "aah"と同じですが、 "aaah" "ah"はFalseを返します。しかし、医者が自分のaahに「h」を含めなくても、患者はそうしなければならないので、「a」「a」はFalseを返しますが、私のコードはTrueを返します。したがって、患者が何かを言うならば、必要な数の 'a'の後に単一の 'h'が続き、他の文字はありません。私が提案したテストケースを試してみると、私が理解していなかったことが分かりました。各文字列に「a」の数を保持できますか?余分な文字はどうやってチェックするのですか?申し訳ありませんが、これは読めるのに時間がかかりました。これまでこれを作ってくれてありがとう。ここで
が正確な質問です:
AAAHを「私たちは医者を見に行くと、医師は常に言って、私たちに求められ 『『aaaaaahが、』 時には、医師は言うために私たちを必要とします。』その場合、私たちの "aaah"のaは自分の の要件よりも少ないので、医師は という病気を診断することができません。医師が私たちの "aah"で診断できるかどうか判断するには、Doctor to doctor to 関数の入力は2つの文字列で構成されています。最初の文字列は "aaaah"です 医師のニーズと2番目の文字列は、私たちが言うことができる "ああ"です。 "aah"が医師の要件を満たしている場合は "True"、それ以外の場合は が "False"を出力します。テストはして合格しなければならない「真」のみ 「のと」時間のが使用されている小文字、および各文字列がh「」あなた以来
あなたは逐語でリクエストを投稿できますか?あなたがそれを記述する方法は、あまり明確ではありません。 –
それを正しく理解すれば、両方の文字列は 'a * h *'という形式になります(これは正規表現です、 '*'は前のcharの任意の数を意味します)、 'a'と' h 'sは要求されたaahh以上でなければならない? –
'seeDoctor" foo "" aaaaaaaah "'の出力はどうでしょうか? –