Bunu hayal edin, sadece tek bir nesne içeren küresel bir kapsama sahip bir ortamımız var codegolf. Bu nesnenin, stackexchangeadlı bir özelliği olan tek bir alt öğesi var com.
Bu mülke erişmek şöyle görünecektir codegolf.stackexchange.com.
Meydan okuma
Programınızın / fonksiyonunuzun girdisi, global kapsamdaki bir özelliğe erişmeye çalışan bir dize olacaktır. Bu özellik bulunduğunda, gerçek bir değer yazdırır / döndürürsünüz. Mülk bulunamazsa, bir sahte değer yazdırılır / iade edilir. Yakalama: var olmayan bir nesnede bir özelliğe erişmeye çalıştığınızda, programınız her türlü hatayı atmalıdır¹.
İşleri biraz kolaylaştırmak için, girdinin her zaman olacağını [a-z.], asla boş olmayacağını, asla tekrarlamayacağını .ve asla a ile başlamayacağını veya bitmeyeceğini varsayabilirsiniz .. Bu codegolf.geçersiz bir giriş.
Test senaryoları
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
Bu kod golfü , bayt kazanımında en kısa kod kazanıyor
¹ if (ve ancak) seçtiğiniz dil hataları desteklemez hiç yapmanız gerekir bunun bir hata olduğunu temizlemek yapar çıktı üretir. Örneğin, doğruluk için 1 ve yanlış için 0 kullanırsanız, hata için "e" kullanabilirsiniz. Dönüş değerlerinizde tutarlı olun ve yayınınızdaki davranışı açıklayın.
codegolf.comekarte etmek için test codegolf(.stackexchange)?(.com)?$
foo.stackexchange.com
foodönecekti undefinedama bir hata atmayacaktı. tanımlanmadığı foo.bariçin hata verir foo.
codegolf.foo => 0, öyle foo => 0.
foo => ErrorDaha uygun olacağını hissediyorum .