これを想像してください。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
もっと適切だと思う。