想象一下,我们有一个环境,它的全局范围仅包含一个称为的对象codegolf
。该对象有一个名为的子对象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
这是代码高尔夫球,以字节为单位的最短代码获胜
¹当(且仅当)您选择的语言根本不支持错误时,您必须输出一些明确表明这是错误的内容。例如,如果将1表示真实,将0表示虚假,则可以使用“ e”表示错误。保持一致的返回值,并在帖子中说明行为。
codegolf.com
到测试用例中以排除codegolf(.stackexchange)?(.com)?$
类型检查
foo.stackexchange.com
foo
将返回undefined
,但不会引发错误。foo.bar
由于foo
未定义,将引发错误。
codegolf.foo => 0
所以foo => 0
。
foo => Error
会更合适。