Hương vị văn bản
Ngăn xếp dựa trên esolang không sắp xếp có một số mối quan hệ thú vị để lập trình chức năng. Một trong số đó là cách xử lý của kiểu dữ liệu số như tính toán lambda, bạn biểu diễn số tự nhiên N bằng một hàm thực hiện một hành động N lần.
Để làm cho mọi thứ đơn giản, chúng tôi sẽ chỉ xem xét tập hợp con sau của các lệnh Underload:
:
- Lệnh này sao chép mục trên cùng trên ngăn xếp.*
- Lệnh này ghép hai mục trên cùng vào ngăn xếp thành một mục duy nhất.
Chúng tôi định nghĩa một số Underload N là một chuỗi :
và *
khi được thực thi sẽ tiêu thụ mục trên cùng trên ngăn xếp và tạo ra N bản sao của mục đó được nối với nhau. Vài ví dụ:
- Không có số dưới tải 0, -1, 1/2, π.
- Chuỗi rỗng
là số Underload 1, vì nó không để lại ngăn xếp.
:*
là chữ số Underload 2, vì nó sao chép mục trên cùng và sau đó ghép hai bản sao đó lại với nhau thành một mục duy nhất:(A):*
=(A)(A)*
=(AA)
.::**
là số Underload 3:(A)::**
=(A)(A):**
=(A)(AA)*
=(AAA)
.:::***
là số dưới 4.:*:*
cũng là số Underload 4:(A):*:*
=(AA):*
=(AA)(AA)*
=(AAAA)
.
Nói chung, bạn sẽ thấy rằng, nếu M
và N
là các chữ số Underload M và N, thì đó :N*
là chữ số N + 1 và MN
là chữ số M × N.
Các thách thức
Nhiệm vụ của bạn là viết chương trình ngắn nhất (lấy đầu vào trên STDIN) hoặc hàm (lấy đầu vào thông qua đối số) để tạo ra biểu diễn ngắn nhất của số Underload cho đầu vào dưới dạng chuỗi. Điều đó có nghĩa là, nếu đầu vào là số tự nhiên dương N> 1, bạn phải tạo ra một chữ số Underload N có độ dài bằng ký tự nhỏ hơn hoặc bằng với mọi chữ số Underload N khác.
Mẫu đầu vào và đầu ra: ("Đầu vào - OUTPUT
.")
- 1 -
.
- 2 -
:*
. - 5 -
::*:**
(2 × 2 + 1). - 7 -
::*::***
(2 × 3 + 1) hoặc:::**:**
(3 × 2 + 1). - 33 -
::*:*:*:*:**
(2 × 2 × 2 × 2 × 2 + 1). - 49 -
::*:*:*:*::***
(16 × 3 + 1, dài 14) nhưng không::*::***::*::***
(7 × 7, dài 16).
Nếu đầu vào không phải là số tự nhiên dương, bạn có thể trả lại lỗi, tạo ra hành vi không xác định hoặc thậm chí không thể chấm dứt. Một lời giải thích về phương pháp tìm câu trả lời của bạn được đánh giá cao.
Hạn chế kẽ hở tiêu chuẩn áp dụng: không phải trả thêm đầu vào, không có yêu cầu web, giá trị sản lượng / lợi nhuận phải được chính xác câu trả lời và không phải là một dòng ngẫu nhiên vô hạn của :
và *
vv
x
là 2*A117498(x)
nơi A117498 đưa ra sự kết hợp tối ưu giữa các phương pháp nhị phân và yếu tố để tìm chuỗi bổ sung.