これを想像してください。1つのオブジェクトのみを含むグローバルスコープを持つ環境がありますcodegolf。このオブジェクトにはと呼ばれる1つの子があり、この子stackexchangeにはというプロパティがありますcom。
このプロパティへのアクセスは次のようになりcodegolf.stackexchange.comます。
チャレンジ
プログラム/関数の入力は、グローバルスコープのプロパティにアクセスしようとする文字列になります。このプロパティが見つかった場合は常に、真実の値を印刷/返却するものとします。プロパティが見つからない場合、偽の値が印刷/返されます。キャッチ:存在しないオブジェクトのプロパティにアクセスしようとすると、プログラムはあらゆる種類のエラーをスローします¹。
物事を少し簡単にするために、入力は常に[a-z.]空であり、空になることはなく、繰り返しを持た.ず、で始まったり終わることはないと想定することができます.。だから、codegolf.無効な入力です。
テストケース
codegolf.stackexchange.com => 1 // or any other truthy value
codegolf.stackexchange.net => 0 // or any other falsy value
codegolf.stackexchange => 1
codegolf.foo => 0
codegolf => 1
foo => 0
codegolf.com => 0
codegolf.constructor => 0
codegolf.foo.bar => Error (since foo is undefined)
codegolf.stackexchange.com.foo => Error (since com is a value, not an object)
codegolf.stackexchange.com.foo.bar => Error
foo.stackexchange.com => Error
foo.bar => Error
foo.bar.baz => Error
これはcode-golfで、バイト単位の最短コードが勝ちです
¹選択した言語がエラーをまったくサポートしていない場合(のみ)、これがエラーであることを明確にする何かを出力する必要があります。たとえば、真理に1を、偽に0を使用する場合、エラーに「e」を使用できます。戻り値に一貫性を持たせ、投稿の動作を説明してください。
codegolf.comを除外するためにテストケースに追加するリクエストcodegolf(.stackexchange)?(.com)?$
foo.stackexchange.com
fooを返しundefinedますが、エラーはスローされません。foo.barがfoo定義されていないため、エラーがスローされます。
codegolf.foo => 0、そうfoo => 0。
foo => Errorもっと適切だと思う。