Lý lịch
Nhiều ngôn ngữ lập trình bí truyền không có số được xây dựng bằng chữ, vì vậy bạn phải tính toán chúng khi chạy; và trong nhiều trường hợp này, việc biểu diễn số có thể khá thú vị. Chúng tôi đã có một thách thức về việc đại diện số cho Underload. Thử thách này là về việc đại diện cho các con số trong Modular SNUSP . (Lưu ý rằng bạn không cần phải học SNUSP để hoàn thành thử thách này - tất cả thông tin bạn cần đều có trong thông số kỹ thuật - nhưng bạn có thể thấy nền tảng thú vị.)
Nhiệm vụ
Vì mục đích của thử thách này, một số Modular SNUSP là một chuỗi hình thành từ các nhân vật @, +và =, ngoại trừ các ký tự cuối cùng là một #, và rằng các nhân vật áp chót phải +hoặc =(nó không thể được @). Ví dụ, số hợp lệ bao gồm @+#, ==#và @@+@=#; ví dụ về số không hợp lệ bao gồm +=, @@#và +?+#.
Giá trị của số SNUSP mô-đun được tính toán đệ quy như sau:
#có giá trị bằng 0 (đây là trường hợp cơ sở).- Nếu số có dạng
=x, đối với bất kỳ chuỗi nàox, giá trị của nó bằng giá trị củax. - Nếu số có dạng
+x, đối với bất kỳ chuỗi nàox, giá trị của nó bằng giá trị củax, cộng với 1. - Nếu số có dạng
@cx, đối với bất kỳ ký tự đơncvà bất kỳ chuỗi nàox, giá trị của nó bằng giá trị củax, cộng với giá trị củacx.
Đối với thử thách này, bạn phải viết chương trình lấy số nguyên không âm làm đầu vào và xuất ra một chuỗi là số SNUSP mô-đun ngắn nhất có thể có giá trị bằng với đầu vào.
Làm rõ
- Hoàn toàn có thể sẽ có nhiều hơn một chuỗi có cùng giá trị và đặc biệt, đối với một số số nguyên sẽ có một ràng buộc cho số SNUSP Mô-đun ngắn nhất với giá trị đó. Trong trường hợp như vậy, bạn có thể xuất ra bất kỳ số nào liên quan đến kết quả hòa.
- Không có giới hạn về thuật toán bạn sử dụng để tìm số; ví dụ, các chuỗi buộc brute buộc và đánh giá chúng là một chiến thuật hợp pháp, nhưng vì vậy, đang làm một cái gì đó thông minh hơn để giảm không gian tìm kiếm.
- Như thường lệ trên PPCG, bài nộp của bạn có thể là một chương trình đầy đủ hoặc một chức năng (chọn bất kỳ nội dung nào ngắn gọn hơn trong ngôn ngữ của bạn).
- Đây không phải là vấn đề về việc xử lý các định dạng đầu vào và đầu ra, vì vậy bạn có thể sử dụng bất kỳ phương tiện hợp lý nào để nhập số nguyên không âm và xuất chuỗi. Có một hướng dẫn đầy đủ về meta , nhưng các phương thức pháp lý được sử dụng phổ biến nhất bao gồm các đối số / trả về hàm, đối số dòng lệnh và đầu vào tiêu chuẩn / đầu ra tiêu chuẩn.
Các trường hợp thử nghiệm
Dưới đây là các đại diện ngắn nhất của một vài số đầu tiên:
- 0 :
# - 1 :
+# - 2 :
++# - 3 :
+++#hoặc@++# - 4 :
++++#hoặc+@++#hoặc@=++# - 5 :
@+++#hoặc@@++# - 6 :
+@+++#hay+@@++#hay@=+++#hay@=@++#hay@@=++# - 7 :
@++++#hoặc@+@++# - 8 :
@@+++#hoặc@@@++# - 9 :
+@@+++#hay+@@@++#hay@+++++#hay@++@++#hay@+@=++#hay@@=+++#hay@@=@++# - 10 :
@=@+++#hoặc@=@@++#hoặc@@@=++#( đây là trường hợp kiểm tra khá quan trọng để kiểm tra , vì tất cả các câu trả lời có thể bao gồm=) - 11 :
@+@+++#hay@+@@++#hay@@++++#hay@@+@++# - 12 :
+@+@+++#hay+@+@@++#hay+@@++++#hay+@@+@++#hay@=+@+++#hay@=+@@++#hay@=@=+++#hay@=@=@++#hay@=@@=++#hay@@=++++#hay@@=+@++#hay@@=@=++# - 13 :
@@@+++#hoặc@@@@++# - 14 :
+@@@+++#hay+@@@@++#hay@=@++++#hay@=@+@++#hay@@+++++#hay@@++@++#hay@@+@=++# - 15 :
@+@++++#hay@+@+@++#hay@@=@+++#hay@@=@@++#hay@@@=+++#hay@@@=@++#
Là một trường hợp thử nghiệm lớn hơn, sản lượng từ đầu vào 40 nên @@@=@@+++#, @@@=@@@++#, @@@@=@+++#, hoặc @@@@=@@++#.
Điều kiện chiến thắng
Là một thử thách golf-code , người chiến thắng là mục ngắn nhất, được đo bằng byte.
=Tối ưu sẽ chỉ xảy ra như@=, phải không?