Hãy tưởng tượng điều này, chúng ta có một môi trường với phạm vi toàn cầu chỉ chứa một đối tượng duy nhất, được gọi codegolf
. Đối tượng này có một đứa trẻ được gọi stackexchange
, trong đó có một tài sản được gọi com
.
Truy cập vào tài sản này sẽ như thế nào codegolf.stackexchange.com
.
Các thách thức
Đầu vào của chương trình / chức năng của bạn sẽ là một chuỗi cố gắng truy cập một thuộc tính trên phạm vi toàn cầu. Bất cứ khi nào tài sản này được tìm thấy, bạn sẽ in / trả lại một giá trị trung thực. Nếu thuộc tính không được tìm thấy, giá trị giả sẽ được in / trả lại. Lưu ý: khi bạn cố gắng truy cập một thuộc tính trên một đối tượng không tồn tại, chương trình của bạn sẽ đưa ra bất kỳ loại lỗi nào.
Để làm cho mọi thứ dễ dàng hơn một chút, bạn có thể cho rằng đầu vào sẽ luôn như vậy [a-z.]
, nó sẽ không bao giờ trống rỗng, nó sẽ không bao giờ lặp lại .
và nó sẽ không bao giờ bắt đầu hoặc kết thúc bằng a .
. Vì vậy, codegolf.
là một đầu vào không hợp lệ.
Các trường hợp thử nghiệm
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
Đây là mã golf , mã ngắn nhất tính bằng byte thắng
¹ nếu (và chỉ nếu) ngôn ngữ của bạn lựa chọn không hỗ trợ lỗi gì cả , bạn phải ra một cái gì đó mà làm cho nó rõ ràng rằng đây là một lỗi. Ví dụ: nếu bạn sử dụng 1 cho sự thật và 0 cho sai, bạn có thể sử dụng "e" cho một lỗi. Hãy nhất quán trong các giá trị trả về của bạn và giải thích hành vi trong bài viết của bạn.
codegolf.com
vào các trường hợp kiểm tra để codegolf(.stackexchange)?(.com)?$
loại trừ kiểm tra loại
foo.stackexchange.com
foo
sẽ trở lại undefined
, nhưng nó sẽ không gây ra lỗi. foo.bar
sẽ ném một lỗi vì foo
không được xác định.
codegolf.foo => 0
, Vì vậy foo => 0
.
foo => Error
sẽ thích hợp hơn.