Imaginez cela, nous avons un environnement avec une portée globale contenant un seul objet, appelé codegolf
. Cet objet a un seul enfant appelé stackexchange
, qui a une propriété appelée com
.
Accéder à cette propriété ressemblerait codegolf.stackexchange.com
.
Le défi
L'entrée de votre programme / fonction sera une chaîne essayant d'accéder à une propriété sur la portée globale. Chaque fois que cette propriété est trouvée, vous devez imprimer / retourner une valeur véridique. Si la propriété n'est pas trouvée, une valeur falsifiée doit être imprimée / retournée. Le hic: lorsque vous essayez d'accéder à une propriété sur un objet inexistant, votre programme doit lancer n'importe quel type d'erreur¹.
Pour rendre les choses un peu plus faciles, vous pouvez supposer que l'entrée sera toujours [a-z.]
, elle ne sera jamais vide, elle n'aura jamais de répétition .
et elle ne commencera ni ne se terminera jamais par a .
. Il en codegolf.
va de même pour une entrée non valide.
Cas de 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
Ceci est le code-golf , le code le plus court en octets gagne
¹ si (et seulement si) langue de votre choix ne supporte pas les erreurs du tout , vous devez quelque chose de sortie qui le rend clair que cela est une erreur. Par exemple, si vous utilisez 1 pour la vérité et 0 pour la fausse, vous pouvez utiliser "e" pour une erreur. Soyez cohérent dans vos valeurs de retour et expliquez le comportement dans votre message.
codegolf.com
aux cas de test pour exclure les codegolf(.stackexchange)?(.com)?$
vérifications de type
foo.stackexchange.com
foo
reviendrait undefined
, mais cela ne générerait pas d'erreur. foo.bar
lancerait une erreur car foo
n'est pas défini.
codegolf.foo => 0
, donc foo => 0
.
foo => Error
serait plus approprié.