회사가 막 프로젝트를 시작했으며 처음으로 함수형 프로그래밍 코드 스타일을 사용하기로 결정했습니다. 그러나 상사는 정말 어리 석고 내장 함수를 사용하고 싶지 않으며 주요 기능을 구현해야합니다. 특히이 기능을 쓸 필요가 : 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
범위에 함수를 적용하기 때문에 전혀 목적을 얻지 못합니다 .