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.com
ai casi di test per escludere i codegolf(.stackexchange)?(.com)?$
controlli del tipo
foo.stackexchange.com
foo
ritornerebbe undefined
, ma non genererebbe un errore. foo.bar
genererebbe un errore perché foo
non è definito.
codegolf.foo => 0
così foo => 0
.
foo => Error
sarebbe più appropriato.