n입력 으로 정수가 주어지면 n반복 n횟수가 포함 된 목록을 반환합니다 . 예를 들어, 프로그램은이를 가져 5와서로 바꿉니다 [5,5,5,5,5]. 요소는 문자열이 아닌 정수 여야합니다. 작업을 수행하는 내장 기능은 허용되지 않습니다.
이것은 code-golf 이므로 표준 규칙이 적용됩니다.
built-in.
*연산자는 괜찮습니까? 좋지 않은 내장의 예는 무엇입니까?
n입력 으로 정수가 주어지면 n반복 n횟수가 포함 된 목록을 반환합니다 . 예를 들어, 프로그램은이를 가져 5와서로 바꿉니다 [5,5,5,5,5]. 요소는 문자열이 아닌 정수 여야합니다. 작업을 수행하는 내장 기능은 허용되지 않습니다.
이것은 code-golf 이므로 표준 규칙이 적용됩니다.
built-in.
*연산자는 괜찮습니까? 좋지 않은 내장의 예는 무엇입니까?
답변:
x
참고이되어 있지 은 "반복 n n내장 배"- 그 기능은보다 더 일반적이다. 예를 들어 4,5,6x1,2,3같습니다 [4, 5, 5, 6, 6, 6]. 하나의 인수 감안할 때, 젤리는 왼쪽과 제공된 링크의 오른쪽 인자 모두로 사용이 발생하지만,이 기능이없는 고유 에 x.
이것이 계산되지 않으면 다양한 2 바이트 대안이 있습니다.
x` ṁ` Ra Rị R» a€ oR oḶ oṬ oẊ Ḷị Ḷ» Ṭị Ṭ» Ẋị Ẋ» ị€ ṛ€ ȧ€ »€
기타
x"모든 작업"을 수행 한 경우이 답변을 차단할 수 있지만 가장 확실하지는 않습니다. 링크 구문 분석 및 배열 강제 논리의 암시 적 "0 바이트"가 이것을 repeat([n], n)다른 것으로 바꾸는 것입니다. 하다.
ṁ및 ẋ따라서이 대답은 세 가지 중 하나가 될 수는. "반복 n n시간"에 대해 3 개의 내장 기능 (하나는 희망 함) 이 없으므로 모두 "내장"기능이 될 수는 없습니다.
f={a=[];t=_this;while{count a<t}do{a=a+[t]};a}
전화 :
hint format["%1", 5 call f]
산출:
i--, 그리고 +=이에?
5 개의 짧은 솔루션. 마지막 두 가지는 Zacharý의 의례입니다 .
⍴⍨
⍴ 주기적 R eshape
⍨ 본인
/⍨
/ 뒤로 젖히다
⍨ 본인
\⍨
\ 넓히다
⍨ 본인
⌿⍨
⌿ 첫 번째 축만 따라 복제
⍨ 본인
⍀⍨
⍀ 첫 번째 축만 따라 확장
⍨ 본인
⌿⍨와 ⍀⍨작동합니다.
⍨ 를 입력하여 삽입 할 수 있습니다 .
f n=n<$[1..n]
온라인으로 사용해보십시오! 사용법 : f 5수익률 [5,5,5,5,5]. 를 들어 n=5, [1..n]목록을 산출한다 [1,2,3,4,5]. n<$이 목록의 각 요소를로 바꿉니다 n.
join replicate
joinPrelude의 일부가 아니므로 길이가 길어 import Control.Monad골프에 유용하지 않습니다.
rep(n<-scan(),n)너무 가까이 내장에?
f f r 2
2
r
r d
f s t f
d
dip f s t
f
t
dot f
dot
s
s dip
f
dab
fdab(꼬리) 의 별칭입니다 .
sx ≤ y 일 때 위키에서 설명 된 것처럼 (x, y) → (0, y-x) 입니다.
t(a, b, c…) 를 (b + c +…, a + b + c +…)로 매핑 합니다.
f s t(a, b, c…) 를 a에 매핑 합니다 . 이것이 "헤드"기능입니다.
d(a, b, c…) → (| a-1 |, b, c…) 의 머리 만 담그십시오.
r주요 반복 논리입니다. (a, b) 를 (* r (| a-1 |, b), b)에 매핑 합니다.
예를 들어, r (4, 7) 은 다음과 같이 평가됩니다.
r(4, 7)
= r(3, 7), 7
= r(2, 7), 7, 7
= r(1, 7), 7, 7, 7
= r(0, 7), 7, 7, 7, 7
→ This would call r(1, 7), but (1, 7) ≥ (0, 7), so surrender!
= 0, 7, 7, 7, 7, 7.
마지막으로, 우리 2는 n → (n, n) 을 매핑 하는 정의 main하고 r (n, n)을f f r 2 계산 하고 처음 두 요소를 잘라내 는 것으로 정의 합니다.
\newcommand{\f}[1]{#1\count0=2\loop,#1\advance\count0 by1\ifnum\count0<#1\repeat}
\documentclass[12pt,a4paper]{article}
\begin{document}
\newcommand{\f}[1]{#1\count0=2\loop,#1\advance\count0 by1\ifnum\count0<#1\repeat}
\f{5}
\f{10}
\end{document}
´R
´ -- Apply next function twice to same argument
R -- given an integer n and some element, replicate the element n-times
ṠIR
n->java.util.Arrays.stream(new int[n]).map(i->n)
@Jakob 덕분에 -2 바이트
@ OlivierGrégoire의 게시물에 대한 의견에서 영감을 얻어 조금 더 최적화했습니다. 정수 입력을 받아서 n요소 의 IntStream을 만든 다음 각 요소를 매핑 n하고 반환합니다.
java.util.Arrays.stream(new int[n]).
@DomHastings 덕분에 -4 바이트
sub{(@_)x"@_"}
가 x전체 작업을 수행하는 내장은? 일종의? 그렇지 않습니까? 규칙이 명확하지 않습니까?
편집 : 예, 아마 괜찮을 것입니다.
$_[0]를 @_! 또한 두 번째로 "@_"생각할 수 있습니다 ...
$_=$_ x$_와 perl -pe?
x왼쪽 피연산자 괄호에 (또는가 아닌 문자열 반복하지리스트 반복 수행 qw오퍼레이터)가 상기 x리스트 문맥에서 평가 하였다. 물론 $_목록이 아닌 스칼라입니다.
>-[-[-<]>>+<]>->#[->+>+<<]>>[-<;<<.>>>]
N N시간을 인쇄 합니다. 32를 생성하고 입력 한 다음 입력을 두 번 복제 한 다음 두 번째에서 각 1에 대해 첫 번째를 출력하여 작동합니다.
eax로컬에 레지스터 를 사용할 것이라고 생각하지 않았습니다 . 그림을 이동.
*f(k){int r[k],대신 추천int*f(k){int*r=malloc(k*4),
{[[_]*_1]}
설명:
{[[_]*_1]}
{ } /* Anonymous function */
_ /* The input (_1) */
[ ] /* As a list */
*_1 /* Repeated _1 times */
[ ] /* Pushed to the stream */
[_]*_= [_1]*_2. 첫 번째 밑줄이 첫 번째 밑줄이므로 자동으로 숫자가 1입니다.
[->+>+<<]>[->.<]
[->+>+<<] Duplicate 'n' into the next 2 cells to the right
> Move to the first duplicate
[->.<] Print 'n', 'n' times
당신이 알고 있듯이 brainfuck은 입력 및 출력 값을 ASCII 문자로 사용합니다. 따라서 a !는 값 33으로 표시됩니다.
yes $1|sed $1q않겠습니까?
declare -i정수 변수 를 사용해야 합니다. 그러나 또한 배열이어야합니다. bash가 정수 배열을 지원하는지 확실하지 않습니다 ( eval declare -ia "$1"첫 번째 함수 arg를 배열 반환 값의 이름으로 사용하는 것과 같습니다). 이것은 질문의 정신을 따르기 때문에 이것을 찬성했습니다. 정수 목록 / 배열이없는 언어를 배제하기위한 질문이 의심 스럽습니다.
tY"
설명:
t % duplicate elements
Y" % replicate elements of array
% (implicit) convert to string and display
n->{int a[]=new int[n],i=n;for(;i-->0;)a[i]=n;return a;}
@KevinCruijssen 덕분에 -2 바이트
n->{int a[]=new int[n],i=n;for(;i-->0;)a[i]=n;return a;}
IntStream.generate(() -> n).limit(n):)하지만 타이핑까지 가치가 없다라고 판단하고 대신이 upvoted
Array.init. 타입 별명을 가진 변수에 그것을 할당하고 붐 :let f: (Int, Int) -> [Int] = Array.init; print(f(5, 5))