Cách ngắn nhất để xác định hàm đệ quy ẩn danh trong Octave là gì?


12

Tôi thích lập trình chức năng trong Octave, nhưng nó khá khó sử dụng trong thực tế. Tôi đang tự hỏi về cách ngắn nhất để xác định một hàm đệ quy ẩn danh.

Tôi có một số ý tưởng, nhưng tôi tự hỏi liệu có cách nào để kết hợp những ý tưởng này để làm cho chúng thậm chí ngắn hơn (hoặc ngắn hơn nhưng linh hoạt hơn). Vì lợi ích của câu hỏi này, hãy tính toán đệ quy về 0 (chỉ để giữ cho trọng tải càng đơn giản càng tốt).

Nếu lý luận của tôi là chính xác, không có tên biến nào tôi sử dụng trong các ví dụ sau sẽ trùng nhau. Hàm mong muốn là q(n), luôn luôn trả về 0. iđược sử dụng như một biến đếmf là hàm đệ quy mà tôi đã gọi gtrong phạm vi cục bộ của f.

44 byte, "định nghĩa nội tuyến của f"

q=@(n)(f=@(g,i){@()g(g,i-1),i}{~i+1}())(f,n)

44 byte, "định nghĩa danh sách đối số của f"

q=@(n,f=@(g,i){@()g(g,i-1),i}{~i+1}())f(f,n)

44 byte, "định nghĩa riêng biệt của f"

f=@(i,g){@()g(i-1,g),i}{~i+1}();q=@(n)f(n,f)

41 byte, "hàm mong muốn làm giá trị trả về"

f=@(g)@(n){@()g(g)(n-1),n}{~n+1}();q=f(f)

'Người chiến thắng' hiện tại được lấy cảm hứng từ câu trả lời này bởi flawr . Tuy nhiên, với phạm vi rộng lớn của các cách khác nhau để làm điều này, có lẽ ai đó có thể nghĩ về một sự kết hợp thậm chí ngắn hơn các phương pháp.

Mục tiêu tất nhiên là để có được nó dưới 39 byte cho chức năng "đầy đủ", Hãy thử trực tuyến!

Câu trả lời:


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.