n을 n + 1로 연결


44

소개

OEIS 시퀀스 A127421 은 소수점 확장이 2 개의 연속 증가하는 음이 아닌 숫자의 연결 인 숫자 시퀀스입니다. 간단히 말해서, 시퀀스의 모든 숫자는 음수가 아닌 정수 값 n에 대해 nn + 1 과 결합하여 형성됩니다 . 처음 몇 가지 용어는 다음과 같습니다.

1, 12, 23, 34, 45, 56, 67, 78, 89, 910, 1011, 1112, 1213, 1314, 1415, 1516, 1617, 1718, 1819, 1920, 2021, 2122, 2223, 2324, 2425, 2526, 2627, 2728, 2829, 2930, 3031, 3132, 3233, 3334, 3435, 3536, 3637, 3738, 3839, 3940, 4041, 4142, 4243, 4344, 4445, 4546,…

도전

단일 양의 정수 n이 주어지면 OEIS 시퀀스 A127421 의 첫 n 개 항목을 증가하는 순서대로 인쇄하십시오 .

  • 입력 및 출력은 허용되는 형식이 될 수 있습니다 . 문자열이나 숫자는 출력하기에 좋습니다.
  • 선행 0은 허용 되지 않습니다 .
  • 전체 프로그램 또는 기능이 허용됩니다.
  • 이 도전의 목적으로, n 은 양수 100 미만입니다.
  • 표준 허점 은 기본적으로 허용되지 않습니다.
  • 이 질문은 코드 골프이므로 바이트 수가 가장 적습니다.
  • 다음은 샘플 입력 및 출력입니다.

    1 => 1
    2 => 1, 12
    3 => 1, 12, 23
    10 => 1, 12, 23, 34, 45, 56, 67, 78, 89, 910
    

궁금한 점이 있으면 언제든지 문의하십시오. 행운을 빕니다.

추신 : 이것은 나의 첫 번째 도전이므로 희망적으로 이것은 모두 의미가 있습니다.

편집 : 숫자 또는 문자열을 허용하는 출력 제한을 제거했습니다.


1
0 인덱스가 가능합니까?
Jo King

3
아직 아무도 말하지 않았지만 PPCG에 오신 것을 환영합니다! 좋은 첫 번째 질문, 너무 어렵지는 않지만 완전히 사소한 것도 아니며 여러 가지 접근 방식이 있습니다.
Jo King

3
7 일 후에이 모든 기준을 충족하는 최단 답변을 수락합니다. 도전을 끝내야하는 이유는 무엇입니까?
Outgolfer Erik

2
요즘에는 답변을 더 이상 게시하지 않기 때문에 답변을받지 않는 경향이 있습니다. 내가보기 당신이 (또한 권장하지 않습니다) 모델로 오래된 도전을 가정 일 - 투 - 피할를-때 - 쓰기 - 도전
user202729

2
@Dennis Ok, 난 도전에서 날짜를 제거합니다; 더 이상 새로운 답변이 나오지 않을 때 받아 들일 수 있습니다.
Amphibological

답변:


13

젤리 , 3 바이트

ŻVƝ

정수 목록을 생성하는 정수를 허용하는 모나드 링크

온라인으로 사용해보십시오!

어떻게?

ŻVƝ - Link: integer       e.g. 59
Ż   - zero-range               [0,1,2,3,4,5,6, ... ,58,59]
  Ɲ - apply to each pair: i.e: [0,1] or [5,6]  or  [58,59]
 V  -   evaluate* jelly code   1     or 56     or  5859
    -                       -> [1,12,23,45,56, ... 5859]

* When given a list V actually joins the Python string values and evaluates that
  ...so e.g.: [58,59] -> ['58','59'] -> '5859' -> 5859

아웃 고 프드 데니스!
Okx

10

R , 32 바이트

strtoi(paste0((x=1:scan())-1,x))

온라인으로 사용해보십시오!

MickyT에 의해 outgolfed , 그래서 그 대답을 upvote 이동!


문자열을 허용하도록 수정되었습니다 ... strtoi가 필요 없습니다!
JayCe

2
@JayCe 0첫 번째 출력에서 행간을 제거해야합니다 .
Giuseppe

[-1]사용 strtoi하지 않고 끝나는 것으로 선행 0을 제거 할 수 없습니까?
JDL

@JDL strtoi은에서 "01"를 반환 1하기 위해로 변환하는 데 사용되고 있으며 paste0반환 c("01","12","23","34",...)할 수 없습니다 "01".
주세페

1
불행히도 @CriminallyVulgar는 입력에 실패합니다1
Giuseppe



7

Cubix , 19 바이트

I.1.W)>OSo;u.uO;@!-

온라인으로 사용해보십시오!

이것은 다음과 같이 입방체를 감 쌉니다.

    I .
    1 .
W ) > O S o ; u
. u O ; @ ! - .
    . .
    . .

그것을 지켜봐

아직 작은 방을 가지고 있지만 지금은

  • W 아래로 향하는 상단면으로 리디렉션
  • I1> 입력으로 스택을 설정하고 1을 메인 루프로 리디렉션
  • OSo;u 스택 상단을 출력하고, 스택에 공간을 추가하고, 출력, 제거 및 uturn
  • -!@;Ou)입력에서 TOS를 빼면 0이 팝업 결과를 멈 추면 TOS를 출력하고 전환하고 TOS를 증가시킵니다. 메인 루프로 돌아갑니다.

7

펄 6 , 19 18 바이트

{(^$_ Z~1..$_)X+0}

온라인으로 사용해보십시오!

연결 연산자를 사용하여 0에서 n-1 사이의 범위를 1에서 n으로 압축 한 다음 모든 요소에 0을 추가하여 숫자로 강제하고 선행 0을 제거합니다.


5

R , 30 29 바이트

@Giuseppe 덕분에 여분의 바이트

10^nchar(n<-1:scan())*(n-1)+n

온라인으로 사용해보십시오!

nchar()보다는 을 사용 하는 것을 제외하고는 대부분 수학적 솔루션 floor(log10())입니다. 문자열 버전 보다 짧아서 정말 놀랐습니다 .


29 바이트! 이것에 대한 좋은 일, 나는 결코 그것을 생각하지 않았을 것입니다!
주세페

여분의 바이트 주셔서 감사합니다.
MickyT



4

파이썬 2 , 42 41 바이트

f=lambda n:n-1and f(n-1)+[`n-1`+`n`]or[1]

온라인으로 사용해보십시오!

문자열과 정수의 혼합 목록을 반환하는 재귀 함수


원래 설명 "목록을 반환하는 익명 함수"를 편집 하시겠습니까?
Esolanging 과일

@EsolangingFruit Oopsie, 고정! 감사합니다
Jo King

어쩌면 나는 뭔가 빠졌지 만 두 번째 요소로 '12'가없는 것 같습니다.
ElPedro

2
@ElPedro 바이트를 저장함으로써 고칠 수 있습니다n and
Mr. Xcoder

1
수정 사항으로
인해


4

Blossom , 88 바이트

rule e<int x>[1(x)]=>[1(x-1),2(str(x)+str(x+1))|1->2];rule c[1(0),2|1->2]=>[2("12")];e!c

Blossom은 내가 작업하고있는 그래프 프로그래밍 언어입니다. 그래프는 입력으로 만 사용할 수 있으므로이 프로그램은 레이블이 정수인 단일 노드로 구성된 그래프를 예상합니다. 내가 얻을 수있는 가장 가까운 배열을 형성하기 위해 연결된 가장자리의 그래프를 반환하고 결과 그래프가 출력됩니다.

코드의 축소되지 않은 버전은 다음과 같습니다.

rule expand <int x>
    [ 1 (x) ]
 => [ 1 (x-1), 2(str(x)+str(x+1)) | 1->2 ]
where x > 0;

rule clean
    [ 1 (0), 2 ("12") | 1->2 ]
 => [ 2 ("12") ];

expand! clean

두 개의 규칙을 정의합니다. 하나는 expand(현재 그래프에 정수 값 레이블이있는 노드가있는 동안) 증가 값이 연결된 다른 노드를 작성하고 값을 낮 춥니 다. 또한이 두 노드 사이에 가장자리를 만듭니다. 이 규칙에는 x가 0보다 큰 조건도 있습니다.

!X는 다음과 0이 될 때까지이 경우에서 실행되며,이 그래프에 적용 할 수있는만큼이 규칙을 실행clean 규칙이 0 노드 및 에지를 제거한다.

블로섬은 골프를 위해 만들어지지 않았지만 너무 나쁘게하지는 않습니다. 현재 사람들이 꽃송이 코드를 테스트하는 쉬운 방법은 없지만 (현재 내가 작업하고있는 인터프리터는 완성되지 않고 약간 버그가 있습니다), 이것은 정확히 경쟁 항목이 아닙니다!



3

셰익스피어 , 703 바이트

Q.Ajax,.Ford,.Act I:.Scene I:.[enter Ajax and Ford]Ford:Open mind!Scene V:.Ajax:You is the sum of thyself the sum of myself the sum of a big bad fat old red pig a big bad fat old lie!Ford:Open mind!Is you nicer zero?Ajax:If so, you is twice the sum of the sum of twice thyself twice thyself thyself!If so,Let us Scene V!Ford:You a cat!Open heart!Scene X:.Ajax:You is the sum of thyself a pig!Is you worse than a cat?If so,let us Scene C.Remember thyself.You is the sum of the sum of a big old red cute rich cat a big old red cute joy a big old pig!Speak mind!You is a big old red cute rich cat!Speak mind!Recall!Ford:Open heart!You is the sum of thyself a joy!Open heart!Let us Scene X.Scene C:.[exeunt]

여기서 해봐

ungolfed 버전

127421th Night.
Ajax, likes to read the stars.
Ford, someone Ajax can always count on.
Act I:.
Scene I: Ajax reads a star.
[enter Ajax and Ford]
Ford: Open your mind! 
Scene V: Ford counts what ajax has learned.
Ajax: you are the sum of thyself and the sum of myself and the sum of a big bad fat old red pig and a big bad fat old lie!
Ford: Open Your mind! Are you nicer than zero?
Ajax: If so, you are twice the sum of the sum of twice thyself and twice thyself and thyself! 
If so, Let us Scene V!
Ford: You are a cat! Open your heart!

Scene X: Ajax and Ford recall the nights.
Ajax: You are the sum of thyself and a pig! Are you worse than a cat? If so, Let us Scene C.
Remember thyself. 
You are the sum of the sum of a big old red cute rich cat and a big old red cute joy and a big old pig! 
Speak you mind!
You are a big old red cute rich cat! Speak your mind! Recall your finest hour!
Ford: Open your heart! You are the sum of thyself and a joy! Open your heart! Let us Scene X.
Scene C: Fin.
[exeunt]

3

그루비 , 35 바이트

{(0..<it)*.with{""+it+++it as int}}

온라인으로 사용해보십시오!

마지막 순간에 .collect 대신 * .with를 사용한다는 아이디어를 얻었습니다. 내가 무슨 생각이 없다 it+++it에 구문 분석을하지만 여부 it++ + it또는 it + ++it둘은 같은 일을한다. <in .. <를 1..it로 바꾸고 줄임으로써 제거하는 방법을 생각했지만 더 짧아 질 것이라고 생각하지 않습니다.


PPCG에 오신 것을 환영합니다. 좋은 첫 포스트! 의 해석과 관련하여 a+++b, 이 테스트는 의미 왼쪽에서 오른쪽으로는 구문 분석됩니다 제안한다 (a++)+b.
Jonathan Frech

3

C (gcc) , 44 43 바이트

f(i){i--&&printf(" %2$d%d"+5*!f(i),i+1,i);}

온라인으로 사용해보십시오!


@DLosc %m$형식 지정자는 "1부터 시작하여 색인을 생성 할 원하는 인수의 인수 목록에서 위치를 나타냅니다" ( printf(3)man page) . C 라이브러리가 지원하는 한 매우 편리합니다!
ErikF

고마워 ...하지만 왜 여전히 %d%d(그리고 논쟁의 순서를 바꾸는) 효과가 없는지 혼란 스럽 습니다. (내가 시도했지만 출력이없는 이유를 모르겠습니다.)
DLosc

@DLosc 포맷 문자열을 변경하는 경우, 그 이후에 오프셋을 변경 " %d%d"해야 합니다 (예를 들어 +3*!f(i); 그렇지 않으면 +5 오프셋이 문자열의 끝에서 NUL을
가리킴

오, 알았어. 마지막으로 "# 2 다음 # 1"이 필요하다. 기본 경우 단축 된 형식 문자열은 "# 1"이되므로 첫 번째 printf 인수가 i+1아니 어야하기 때문 i이다. 매우 흥미로운.
DLosc


2

젤리 , 4 바이트

ḶżRV

온라인으로 사용해보십시오!

작동 원리

ḶżRV  Main link. Argument: n

Ḷ     Unlength; yield [0, ..., n-1].
  R   Range; yield [1, ... n].
 ż    Zipwith; yield [[0, 1], ..., [n-1, n]].
   V  Eval; cast each array to string and evaluate, yielding integers.





2

Japt -m , 6 5 바이트

ó2 ¬n

온라인으로 사용해보십시오!

항상 그렇듯이 깃발을 알고 .

포장 풀기 및 작동 방식

-m       Convert to range and map...

Uó2 q n
Uó2      Construct [U, U+1]
    q    Join
      n  Convert to number

         Implicit output (Array is printed as comma-delimited values)

5 바이트 . 가 없으면 왜 ó작동 하지 않는지 모르겠습니다 2.
얽히고 설킨

다른 사람이 찌르기를 원한다면 플래그를 사용하지 않는 2 가지 다른 5 바이트 솔루션 (둘 다 동일한 방법을 사용)이 있습니다.
얽히고 설킨

플래그 때문에 5 + 2 = 7 바이트라고 생각합니까?
u_ndefined


2

C # (Visual C # 대화 형 컴파일러) , 103 71 64 56 바이트


골프 온라인으로 해보십시오!

i=>{for(int x=0;x<i;)Write($"{(x>0?$",{x}":"")}{++x}");}

언 골프

i => {
    for( int x = 0; x < i; )
        Write( $"{( x > 0 ? $",{x}" : "")}{ ++x }" );
}

전체 코드

Action<Int32> a = i => {
    for( int x = 0; x < i; )
        Write( $"{( x > 0 ? $",{x}" : "")}{ ++x }" );
    };

Int32[]
    testCases = new Int32[] {
        1,
        2,
        3,
        10,
    };

foreach( Int32[] testCase in testCases ) {
    WriteLine( $" Input: {testCase}\nOutput:" );
    a(testCase);
    WriteLine("\n");
}

이전 버전 :

  • v1.2, 64 바이트

    i=>{for(int x=0;x<i;)Write($"{(x>0?$",{x}":"")}{++x}");}
  • v1.1, 71 바이트

    i=>{for(int x=0;x<i;)System.Console.Write($"{(x>0?$",{x}":"")}{++x}");}
  • v1.0, 103 바이트

    i=>{for(int x=0;x<i;)System.Console.Write($"{(x>0?",":"")}{x++*System.Math.Pow(10,$"{x}".Length)+x}");}

자료

  • v1.3 -- raznagul 덕분에 다시 - 8 bytes제거Console
  • 1.2 - - 7 bytes- 제거 된 System덕분에 raznagul
  • V1.1 --32 bytes
  • V1.0 - 103 bytes- 초기 솔루션입니다.

노트

  • 없음

1
C # Interactive Compiler에는에 대한 정적 가져 오기가 System.Console있습니다. 따라서 제거하여 15 바이트를 절약 할 수 있습니다.
raznagul

권리! 그들을 사용해야 하는 습관
auhmaan

당신은 또한 제거 할 수 있습니다 Console.: TIO
raznagul


2

ABAP, 101 바이트

실제로 골프는 아니지만, 나는 그것으로 많은 재미를 가지고 있습니다

WHILE x<w.
CLEAR z.
IF x=1.
WRITE x.
ELSE.
CONCATENATE y x INTO z.
WRITE z.
ENDIF.
y=x.
x=x+1.
ENDDO.

W는 입력 항이고, X는 1부터 카운터이고, Y는 두 번째 패스부터 X-1이며, Z는 연결된 문자열입니다.


2

파워 쉘, 27 26 바이트

1.."$args"|%{"$p$_";$p=$_}

-1 바이트 : 감사합니다 AdmBorkBork

테스트 스크립트 :

$f = {
1.."$args"|%{"$p$_";$p=$_}
}

&$f 1
""
&$f 2
""
&$f 3
""
&$f 10
""
&$f 46

1
1.."$args"대신 바이트를 저장할 수 있습니다 .
AdmBorkBork



2

자바 스크립트, 43 44,46,49,53 바이트

n=>[...Array(n)].map((_,a)=>~~(a+(a+1+"")))

이전 버전 :

n=>[...Array(n)].map((_,a)=>~~(a+(""+ ++a)))
n=>[...Array(n)].map((_,a)=>0- -(a+(""+ ++a)))
n=>[...Array(n).keys()].map(a=>0- -(a+(""+ ++a)))
n=>[...Array(n).keys()].map(a=>parseInt(a+(""+ ++a)))

@Shaggy의 솔루션 (내 것보다 낫습니다) 덕분에 3 바이트를 절약했습니다. .keys()


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