Octave에서 익명 재귀 함수를 정의하는 가장 짧은 방법은 무엇입니까?


12

나는 Octave에서 함수형 프로그래밍을 좋아하지만 실제로는 다루기가 쉽지 않습니다. 익명의 재귀 함수를 정의하는 가장 짧은 방법에 대해 궁금합니다.

몇 가지 아이디어가 있지만이 아이디어를 결합하여 더 짧게 (또는 똑같이 짧지 만 다재다능하게) 할 수있는 방법이 있는지 궁금합니다. 이 질문을 위해서, 재귀 적으로 0으로 카운트 다운하자 (페이로드를 가능한 한 단순하게 유지하기 위해).

내 추론이 맞으면 다음 예제에서 사용한 변수 이름이 겹치지 않아야합니다. 원하는 함수는 q(n)입니다. 항상 0을 반환해야합니다. i카운터 변수로 사용되며 의 로컬 범위에서 f호출 한 재귀 함수 g입니다 f.

44 바이트, "인라인 정의 f"

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

44 바이트, "인수 목록 정의 f"

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

44 바이트, "별도의 정의 f"

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

41 바이트, "반환 값으로 원하는 기능"

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

현재 '승자'는 flawr의이 답변에서 영감을 얻었습니다 . 그러나이 작업을 수행 할 수있는 다양한 방법이 있다면 누군가가 더 짧은 방법 조합을 생각할 수 있습니다.

목표는 물론 "전체"기능을 위해 39 바이트 미만으로 만드는 것입니다. 온라인으로 사용해보십시오!

답변:


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.