Trong APL, bạn có thể viết các hàm ngầm, được gọi là tàu hỏa . Làm thế nào họ làm việc là không liên quan cho thách thức này. Dưới đây là các cách khác nhau mà chúng có thể được nhóm lại, sử dụng ⍴
làm hàm:
⍴ -> ⍴
⍴⍴ -> ⍴⍴
⍴⍴⍴ -> ⍴⍴⍴
⍴⍴⍴⍴ -> ⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴⍴))
...
Thứ tự vẫn như cũ. Thủ tục là miễn là có đúng hơn 3 chức năng, 3 chức năng cuối cùng được nhóm thành một chức năng. Nếu chúng ta gặp một chuyến tàu lồng nhau, chúng ta sẽ ngoặc đơn trước, trước khi tiếp tục. Đây là thủ tục áp dụng cho ⍴⍴⍴⍴⍴⍴
:
Step 0: ⍴⍴⍴⍴⍴⍴
There are strictly more than 3 functions, repeat.
Step 1: ⍴⍴⍴(⍴⍴⍴)
There are strictly more than 3 functions, repeat.
Step 2: ⍴(⍴⍴(⍴⍴⍴))
There are 3 or less functions, we're done.
Đây là quy trình tương tự được áp dụng cho ⍴⍴⍴(⍴⍴)⍴(⍴⍴⍴⍴(⍴⍴⍴))⍴⍴
:
Step 0: ⍴⍴⍴(⍴⍴)⍴(⍴⍴⍴⍴(⍴⍴⍴))⍴⍴
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴⍴⍴(⍴⍴⍴)
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴⍴
There are 3 or less functions, we're done.
Step 1: ⍴⍴(⍴⍴(⍴⍴⍴))
There are 3 or less functions, we're done.
Step 1: ⍴⍴⍴(⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴)
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴
There are 3 or less functions, we're done.
Step 2: ⍴⍴⍴((⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴))
There are strictly more than 3 functions, repeat.
Step 3: ⍴(⍴⍴((⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴)))
There are 3 functions or less, we're done.
Đầu vào
Đối với thử thách này, đầu vào sẽ được đơn giản hóa. Điều này có nghĩa là bạn có thể chọn 2 ký tự khác nhau để mở và đóng ngoặc đơn và 1 char cho các hàm, khác với các ký tự được chọn cho dấu ngoặc đơn. Các ký tự bạn chọn phải nhất quán. Đầu vào sẽ không trống và sẽ không chứa dấu ngoặc đơn không có nội dung (nghĩa là ()
).
Đầu ra
Một lần nữa, bạn có thể chọn 3 ký tự khác nhau, 2 cho dấu ngoặc đơn và 1 cho các hàm. Lưu ý rằng chúng không cần giống như cái được chọn cho đầu vào, nhưng chúng phải nhất quán.
Quy tắc
- Nếu có dấu ngoặc đơn chỉ bao gồm một hàm bên trong chúng trong đầu vào, bạn phải loại bỏ chúng trong đầu ra. Đầu ra của bạn có thể không chứa các dấu ngoặc đơn không cần thiết (nghĩa là chỉ bao gồm một hàm hoặc bao quanh toàn bộ đầu ra).
- Bạn không cần phải thực hiện thuật toán được sử dụng ở đây, miễn là giải pháp của bạn hợp lệ cho thử thách này.
- Đầu vào và đầu ra là các chuỗi theo định dạng được giải thích trong phần Đầu vào và Đầu ra. Đầu vào sẽ có ít nhất một ký tự.
- Sử dụng các sơ hở tiêu chuẩn bị nghiêm cấm.
- Đây là môn đánh gôn , vì vậy câu trả lời ngắn nhất sẽ thắng. Tuy nhiên, sẽ không có câu trả lời được chấp nhận, vì đây là cuộc thi theo từng ngôn ngữ và để khuyến khích trả lời bằng các ngôn ngữ trong đó nhiệm vụ này sẽ dẫn đến mã dài hơn so với mã được viết bằng các ngôn ngữ khác.
Các trường hợp thử nghiệm
Các ký tự được sử dụng ở đây là ()⍴
, bạn nên thay thế chúng bằng các ký tự đã chọn.
⍴ -> ⍴
⍴ -> ⍴
⍴⍴ -> ⍴⍴
⍴⍴⍴ -> ⍴⍴⍴
⍴⍴⍴⍴ -> ⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴⍴))))))
⍴⍴⍴⍴⍴(⍴⍴⍴)⍴⍴(⍴(⍴⍴⍴)⍴⍴⍴)⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴((⍴⍴⍴)⍴(⍴(⍴(⍴⍴⍴)(⍴⍴⍴))(⍴⍴⍴)))))
(⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴) -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
(⍴⍴⍴)(⍴⍴⍴)⍴⍴⍴ -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
⍴⍴(⍴)⍴⍴ -> ⍴⍴(⍴⍴⍴)
((⍴⍴)) -> ⍴⍴
⍴⍴((⍴⍴))⍴⍴ -> ⍴⍴((⍴⍴)⍴⍴)
Thử thách này đã được đăng trong Sandbox. Nếu bạn có đặc quyền cần thiết, bạn có thể xem bài đăng hộp cát ở đây .