Bayangkan ini, kita memiliki lingkungan dengan cakupan global yang hanya berisi satu objek, disebut codegolf. Objek ini memiliki satu anak yang dipanggil stackexchange, yang memiliki properti yang disebut com.
Mengakses properti ini akan terlihat seperti codegolf.stackexchange.com.
Tantangan
Input dari program / fungsi Anda akan berupa string yang mencoba mengakses properti pada lingkup global. Setiap kali properti ini ditemukan, Anda harus mencetak / mengembalikan nilai yang sebenarnya. Jika properti tidak ditemukan, nilai palsu akan dicetak / dikembalikan. Tangkapannya: ketika Anda mencoba mengakses properti pada objek yang tidak ada, program Anda harus melakukan kesalahan apa pun¹.
Untuk mempermudah, Anda dapat mengasumsikan bahwa input akan selalu ada [a-z.], tidak akan pernah kosong, tidak akan pernah berulang ., dan tidak akan pernah memulai atau berakhir dengan a .. Begitu codegolf.juga input yang tidak valid.
Uji kasus
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
Ini adalah kode-golf , kode terpendek dalam byte yang menang
¹ jika (dan hanya jika) bahasa pilihan Anda tidak mendukung kesalahan sama sekali , Anda harus menampilkan sesuatu yang menjelaskan bahwa ini adalah kesalahan. Misalnya, jika Anda menggunakan 1 untuk truey dan 0 untuk falsy, Anda dapat menggunakan "e" untuk kesalahan. Konsisten dalam nilai pengembalian Anda dan jelaskan perilaku di pos Anda.
codegolf.comkasus uji untuk mengesampingkan codegolf(.stackexchange)?(.com)?$jenis cek
foo.stackexchange.com
fooakan kembali undefined, tetapi itu tidak akan menimbulkan kesalahan. foo.barakan melempar kesalahan karena footidak didefinisikan.
codegolf.foo => 0, Jadi foo => 0.
foo => Errorakan lebih tepat.