회사가 막 프로젝트를 시작했으며 처음으로 함수형 프로그래밍 코드 스타일을 사용하기로 결정했습니다. 그러나 상사는 정말 어리 석고 내장 함수를 사용하고 싶지 않으며 주요 기능을 구현해야합니다. 특히이 기능을 쓸 필요가 : Map, Nest, Apply, Range, Fold및 Table당신의 선택의 언어이다. 사장님은 정말 바빠서 프로그램을 최대한 짧게 만들고 싶어서 독서 시간을 낭비하지 않습니다. 또한 루프를 사용하지 않기를 원하므로 루프를 사용하지 않으면 바이트 수를 10 % 줄일 수 있습니다.
기능의 자세한 요구 사항은 다음과 같습니다.
지도
Map함수는 두 개의 매개 변수 : f및 list여기서 f함수이고, list값의리스트이다. 의 f각 요소에 적용된을 반환해야합니다 list. 따라서 다음과 같이 작동합니다.
Map(f,{a,b,c})
보고
{ f(a), f(b), f(c) }
과
Map(f, {{a,b},{b,c}})
보고
{ f({a,b}), f({b,c})}
둥지
Nest: 기능뿐만 아니라 세 개의 매개 변수를 f, arg, times어디에서 f, 함수 arg의 시작 인수하고, times기능이 적용되는 횟수입니다. 시간 이 f적용된 표현식을 에 반환해야 times합니다 arg. 따라서 다음과 같이 작동합니다.
Nest(f, x, 3)
보고
f(f(f(x)))
과
Nest(f, {a,b}, 3)
보고
f(f(f({a,b})))
대다
Apply함수는 두 개의 매개 변수 : f및 args여기서 f함수이고 args리스트. 에 적용 f되어야합니다 args. 따라서:
Apply(f, {a,b,c})
보고
f(a,b,c)
범위
이 Range함수는 하나 r의 정수를 사용하여 해당 숫자까지 정수 를 출력합니다. 따라서:
Range(5)
보고
{ 1, 2, 3, 4, 5}
겹
Fold함수는 세 개의 매개 변수를 f, arg, others여기서 f함수, arg단순한 매개되고, others리스트. 다음과 같이 작동합니다.
Fold(f, x, {a, b, c, d})
보고
f(f(f(f(x,a),b),c),d)
표
테이블 함수는 function f과 iterator형식으로 호출되는 매개 변수를 가져야합니다 . {iMin, iMax}where iMin및 iMax정수입니다. f지정된 범위를 넘어서 적용해야 합니다. 따라서:
Table(f, {0, 5})
보고
{f(0), f(1), f(2), f(3), f(4), f(5)}
Mathematica 함수형 프로그래밍 페이지 에서 이러한 함수의 정의를 사용 했으므로 더 이상의 지침이 필요한 경우 여기로 향 하십시오 . 해당 페이지에 표시된 모든 버전의 기능을 구현할 필요는 없지만이 게시물에 작성된 기능 만 구현해야합니다.
표준 허점 은 평소처럼 허용되지 않습니다.
언어에서 함수를 인수로 전달할 수없는 경우이 기능을 구현하고 답에 추가해야합니다. 그러나이 작업의 바이트 수는 총계에 추가되지 않습니다.
이것은 코드 골프이므로 가장 짧은 코드가 승리합니다. 행운을 빕니다!!!
Table여기서는 실제로 어떻게 작동 하지 않습니다 . 당신의 모범은되어야Table(f, {x, 0, 5})합니까? 또한x범위에 함수를 적용하기 때문에 전혀 목적을 얻지 못합니다 .