Imagine isso, temos um ambiente com um escopo global contendo apenas um único objeto, chamado codegolf. Este objeto tem um único filho chamado stackexchange, que possui uma propriedade chamada com.
Acessar esta propriedade seria semelhante codegolf.stackexchange.com.
O desafio
A entrada do seu programa / função será uma string tentando acessar uma propriedade no escopo global. Sempre que essa propriedade for encontrada, você deverá imprimir / retornar um valor verdadeiro. Se a propriedade não for encontrada, um valor falso será impresso / retornado. O problema: quando você tenta acessar uma propriedade em um objeto inexistente, seu programa deve gerar qualquer tipo de erro¹.
Para facilitar um pouco as coisas, você pode assumir que a entrada sempre será [a-z.], nunca estará vazia, nunca terá repetições .e nunca começará ou terminará com a .. Assim codegolf.é uma entrada inválida.
Casos de teste
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
Este é o código-golfe , o código mais curto em bytes ganha
¹ se (e somente se) o seu idioma de escolha não suporta erros em tudo , você deve imprimir algo que deixa claro que este é um erro. Por exemplo, se você usar 1 para verdade e 0 para falsidade, poderá usar "e" para um erro. Seja consistente com seus valores de retorno e explique o comportamento em sua postagem.
codegolf.comaos casos de teste para descartar codegolf(.stackexchange)?(.com)?$verificações de tipo
foo.stackexchange.com
fooretornaria undefined, mas não causaria um erro. foo.barlançaria um erro porque foonão está definido.
codegolf.foo => 0então foo => 0.
foo => Errorseria mais apropriado.