Immagina questo, abbiamo un ambiente con un ambito globale contenente solo un singolo oggetto, chiamato codegolf. Questo oggetto ha un singolo figlio chiamato stackexchange, che ha una proprietà chiamata com.
L'accesso a questa proprietà sarebbe simile codegolf.stackexchange.com.
La sfida
L'input del tuo programma / funzione sarà una stringa che tenta di accedere a una proprietà nell'ambito globale. Ogni volta che questa proprietà viene trovata, è necessario stampare / restituire un valore di verità. Se la proprietà non viene trovata, verrà stampato / restituito un valore errato. Il problema: quando si tenta di accedere a una proprietà su un oggetto inesistente, il programma dovrebbe generare qualsiasi tipo di errore¹.
Per rendere le cose un po 'più semplici, puoi presumere che l'input sarà sempre [a-z.], non sarà mai vuoto, non avrà mai ripetizioni .e non inizierà o finirà mai con a .. Quindi codegolf.è un input non valido.
Casi test
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
Questo è code-golf , vince il codice più corto in byte
¹ se (e solo se) lingua di propria scelta non supporta gli errori a tutti , è necessario qualcosa in uscita che rende chiaro che questo è un errore. Ad esempio, se si utilizza 1 per verità e 0 per falsa, è possibile utilizzare "e" per un errore. Sii coerente nei valori di ritorno e spiega il comportamento nel tuo post.
codegolf.comai casi di test per escludere i codegolf(.stackexchange)?(.com)?$controlli del tipo
foo.stackexchange.com
fooritornerebbe undefined, ma non genererebbe un errore. foo.bargenererebbe un errore perché foonon è definito.
codegolf.foo => 0così foo => 0.
foo => Errorsarebbe più appropriato.