모든 정수를 인쇄


48

주어진 시간과 메모리에 주어진 정수를 정확히 한 번만 인쇄 하는 프로그램이나 함수를 작성하십시오 .

가능한 출력은 다음과 같습니다.

0, 1, -1, 2, -2, 3, -3, 4, -4, …

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -2, -3, -4, -5, -6, -7, -8, -9, 10, 11, …

음수를 열거하지 않으므로 올바른 출력이 아닙니다.

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,…

  • 언어에서 10 진수를 지원하지 않는 한 출력은 10 진수 여야합니다 (이 경우 언어에서 사용하는 정수의 자연 표현을 사용하십시오).

  • 당신의 프로그램은 당신의 언어의 표준 정수 타입의 가장 큰 숫자까지 작동해야합니다.

  • 각 정수는 언어의 음수 나 음수가 아닌 구분 기호 (공백, 쉼표, 줄 바꿈 등)를 사용하여 다음 정수와 분리해야합니다.

  • 분리기는 언제라도 변경되어서는 안됩니다.

  • 구분 기호는 숫자 나 음수 부호가 아닌 한 여러 문자로 구성 될 수 있습니다 (예 : 만큼 유효 ,).

  • 지원되는 정수는 유한 한 시간 후에 인쇄되어야합니다.

채점

이것은 이므로 바이트 단위의 최단 답변이 이깁니다.

리더 보드


3
우리의 언어가 무한리스트를 지원한다면, 인쇄하는 대신 함수에서리스트를 출력 할 수 있습니까? (그러한 목록에 인쇄를 호출하면 요소가 한 번에 하나씩 영원히 인쇄됩니다.)
xnor

5
임의 크기의 정수에 대한 요구 사항은 그러한 정수가없는 언어를 참여시키지 않는 것 외에는 아무것도 느끼지 않습니다. 그들은 수입품을 가져야하거나 다른 사람들과는 완전히 다른 도전을 해결해야합니다.
xnor

2
@xnor 변경되었지만 그 종류의 도전은 도전의 이름입니다.
Fatalize

5
@xnor, 임의의 정밀 정수를 가진 언어는 여전히 다른 사람들과는 다른 문제를 해결해야하므로, 이러한 변화가 이루어진 모든 것은 많은 언어에서이 문제를 지루하게 만드는 것입니다.
피터 테일러

2
@PeterTaylor 그래, 이것은 불행하다. 래핑 솔루션은 부정적인 것을 인쇄하는 것처럼 느끼지 않지만 표현의 문제에서 차이점을 확실하게 지정할 수있는 방법을 찾지 못했습니다.
xnor

답변:


19

Sesos , 11 3 3 바이트

0000000: c4ceb9                                            ...

온라인으로 사용해보십시오! 확인 디버그를 생성 sbin에 코드를 볼 수 있습니다.

Sesos 어셈블리

위의 바이너리 파일은 다음 SASM 코드를 조합하여 생성되었습니다.

set numout

jmp ; implicitly promoted to nop
    put,   fwd 1
    sub 1, put
    rwd 1, add 1
; jnz (implicit)

이 3 바이트는 어떻습니까?
희망적으로 도움이 된

1
GitHub의 readme (헤더에 링크 됨)는 명령어 인코딩 방법에 대해 자세히 설명합니다.
Dennis

1
6 개의 16 진수 / 2 = 3 바이트 @HopefullyHelpful
Stan Strum

@StanStrum 감사합니다
희망적으로 도움이되는

47

하스켈, 19 바이트

do n<-[1..];[1-n,n]

무한리스트 생성 [0,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6,7,-7...

Haskell은 기본적으로 무한 목록을 허용합니다. 이러한 목록을 인쇄하면 요소가 한 번에 하나씩 인쇄됩니다.


2
나는 사랑한다 [n,1-n]!
flawr

3
IMHO [1-n,n]는 더 좋은 결과물을 생산할 것입니다.

@Neil 동의합니다. 변경했습니다.
xnor

2
아, 그건 모나 데입니다 concatMap (\n -> [1-n, n]) [1..]? 좋은!
Carsten S

@CarstenS 그렇습니다.
xnor

29

Brainfuck, 6 바이트

셀 랩핑을 사용하고 가능한 모든 값을 인쇄합니다. Brainfuck에서 기본 정수 표현은 바이트 값 입니다.

.+[.+]

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


2
PPCG에서 지금까지 본 가장 짧은 Brainfuck 답변입니다.
Kevin Cruijssen

1
무제한 셀이있는 brainfuck 버전에서는 작동하지 않습니다. 수정하십시오 (별도의 답변 일지라도)
John Dvorak

16
@ JanDvorak 답변은 모든 구현 에서 작동하지 않아도됩니다 .
Martin Ender

7
이것이 왜 유효한 지에 대한 설명을 얻을 수 있습니까? 질문에 언급 된 분리기가 없으며 부정적인 것도 없습니다. 뿐만 아니라 brainfuck에서 9보다 큰 값을 출력 할 수 있다는 사실. 코드 골프에 대한 경험이 없어서 음수와 양수를 분리하기 전에 더 높은 숫자로 분리하는 작업을 시작했습니다.
gtwebb

5
@SQB 무제한 메모리를 사용하더라도 기본 정수 유형은 여전히 ​​8 비트입니다. Java int는 일부 램을 추가하거나 제거했기 때문에 갑자기 비트가 많거나 적지 않습니다.
flawr

26

Cubix , 14 12 바이트

.(.\OSo;?.>~

온라인으로 테스트하십시오! 더 빠르게 또는 느리게 실행하려면 속도를 조정할 수 있습니다.

작동 원리

인터프리터가 수행하는 첫 번째 일은 모든 공백을 제거 .하고 큐브에 완벽하게 맞을 때까지 코드를 no-ops로 채우는 것입니다. 즉, 위 코드도 다음과 같이 작성할 수 있습니다.

    . (
    . \
O S o ; ? . > ~
. . . . . . . .
    . .
    . .

이제 코드가 실행되었습니다. IP (명령 포인터)는 맨 왼쪽면의 왼쪽 상단에서 시작하여 동쪽을 가리 킵니다. 프로그램을 실행하는 과정에서 수행되는 경로는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

IP는 이미지의 가장 왼쪽에있는 빨간색 트레일에서 시작합니다. 그런 다음 OSo;다음을 수행합니다.

  • OTOS (스택 상단)를 정수로 인쇄하십시오. 프로그램이 시작될 때 스택에는 무한한 0이 포함되므로이 값이 인쇄 0됩니다.
  • S32공백 문자의 문자 코드 인을 누릅니다 .
  • oTOS를 문자로 인쇄하십시오. 공백이 인쇄됩니다.
  • ;TOS를 팝하십시오. 32스택에서를 제거합니다 .

이제 IP가을 ?누르면 TOS의 부호에 따라 왼쪽, 오른쪽 또는 직선으로 지시합니다. 현재 TOS는 0이므로 바로 진행됩니다. 이것이 푸른 길입니다. .아무것도하지 않고 IP가 화살표에 닿으면 >다시 빨간색 경로를 따라 동쪽으로 향하게됩니다. ~TOS의 비트 단위 NOT을 가져 와서로 변경합니다 -1.

여기서 IP는 그물의 오른쪽 가장자리에 도달하여 왼쪽으로 다시 감 쌉니다. 이것은 다시 TOS (이번 -1)와 공백을 인쇄합니다 .

이제 IP가 ?다시 충돌 합니다. 이번에는 TOS가 -1; 이것이 음수이므로 IP가 왼쪽으로 바뀌고 녹색 경로를 사용합니다. 미러 \는 IP를로 (변환하여 TOS를 감소시키고로 변경합니다 -2. 다시 돌아와서 화살을 쳤다. ~(가) 회전, NOT 다시 비트 소요 -21.

다시 TOS가 출력되고 공간이 인쇄됩니다. 이번에 IP가 ?에 도달하면 TOS는 1; 이것이 긍정적이기 때문에 IP가 노란색으로 바뀌면서 오른쪽으로 바뀝니다. 가장 먼저 접하게되는 연산자 S는 추가를 추진하는 것입니다 32. ;팝은 그것이 어떤 문제를 일으킬 수 있습니다 전에.

이제 IP가 화살표로 돌아와서 ~TOS를 변경 -2하고 O인쇄 하면서 루틴을 수행 합니다. TOS가 다시 음수이므로 IP는 다시 한 번 녹색 경로를 사용합니다. 그리고 빨강, 초록, 빨강, 노랑, 빨강, 초록, 빨강, 노랑 ..., 다음과 같은 주기로 인쇄하는 것처럼 영원히 순환됩니다.

0 -1 1 -2 2 -3 3 -4 4 -5 5 -6 6 -7 7 -8 8 -9 9 -10 10 ...

TL; DR

이 프로그램은 다음 3 가지 쉬운 단계를 반복적으로 수행합니다.

  1. 현재 숫자와 공백을 출력합니다.
  2. 현재 숫자가 음수이면 1 씩 줄입니다.
  3. 현재 숫자를 비트 단위로하지 마십시오.

분리되지 않은 버전, 6 바이트

nO?~>~

분리를 제거하면 프로그램이 단위 큐브에 맞도록 프로그램이 매우 간단 해집니다.

  n
O ? ~ >
  ~

* 참고 : 두 프로그램은 최대 2 52 개 (JavaScript가 정수 정밀도를 잃기 시작) 까지만 계산되므로 실제로 무한하지 않습니다 .


4
좋은 다이어그램! :) 직접 작성했거나 생성 할 도구를 작성 했습니까?
Martin Ender

5
@MartinEnder 감사합니다! 그것은 Hexagony 다이어그램에서 영감을 얻었습니다. 손으로 직접 만들었습니다. 시간이 충분할 때 생성 도구를 작성하고 싶습니다.
ETHproductions

18

MATL , 8 바이트

0`@_@XDT

MATL의 기본 데이터 유형 인을 사용 double하므로 2^53절대 값 까지 작동합니다 . 출력은

0
-1
1
-2
2
···

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

설명

0            % Push 0
  `     T    % Do...while true: infinite loop
   @_        % Push iteration index and negate
     @       % Push iteration index
      XD     % Display the whole stack

인쇄를 시작하기 전에 왜 이렇게 큰 지연이 발생합니까?
Fatalize

@Fatalize TIO에서 MATL 프로그램을 실행할 때마다 Octave를 다시 시작해야한다고 생각합니다.
flawr

@Fatalize 확실하지 않습니다. 오프라인이 아닌 온라인 컴파일러에서 발생합니다. 출력을 페이징하는 옥타브와 관련이 있다고 생각했지만, 이것이 이유인지 확실하지 않습니다.
Luis Mendo

1
똑똑한 아이디어가 @_@XD아니라 @_D@D첫 실행에 0을 포함시킬 수 있습니다.
Sanchises

3
XD웃는 +1
TuxCrafting

16

셰익스피어 프로그래밍 언어 , 227 바이트

.
Ajax,.
Puck,.
Act I:
Scene I:
[Enter Ajax,Puck]
Puck:You ox!
Ajax:Be me without myself.Open thy heart.
Scene II:      
Ajax:Be thyself and ash.Open thy heart.Be me times you.Open thy heart.Be me times you.Let us return to scene II.

분명히,이 대답은 거의 이길 수 없지만 SPL이 비교적 적합한 유스 케이스라는 점이 마음에 들었습니다.

설명 :

// Everything before the first dot is the play's title, the parser treats it as a comment.
.

// Dramatis personae. Must be characters from Shakespeare's plays, again with a comment.
Ajax,.
Puck,.

// Acts and scenes serve as labels. Like the whole play, they can have titles too,
// but for the sake of golfing I didn't give them any.
Act I:

// This scene would've been named "You are nothing"
Scene I:

// Characters can talk to each other when on stage
[Enter Ajax,Puck]

// Characters can assign each other values by talking. Nice nouns = 1, ugly nouns = -1.
Puck: You ox!                 // Assignment: $ajax = -1;
Ajax: Be me without myself.   // Arithmetic: $puck = $ajax - $ajax;
      Open thy heart.         // Standard output in numerical form: echo $puck;

// Working title "The circle of life"
Scene II:

// Poor Ajax always doing all the work for us
Ajax: Be thyself and ash.          // $puck = $puck + (-1);
      Open thy heart.              // echo $puck;
      Be me times you.             // $puck *= $ajax;  (remember $ajax==-1 from scene I)
      Open thy heart.              // echo $puck;
      Be me times you.             // negate again
      Let us return to scene II.   // infinite goto loop

이 코드를 관련 도전 과제에 대한 내 대답 과 비교 하여 영원히 계산 (예 : 모든 자연수 인쇄) 할 때 알 수 있듯이 문제 크기가 커지면 SPL 코드 길이가 다소 나 빠집니다 ...


1
나는 이것을 좋아한다. 골프에는 끔찍하지만 독서에는 훌륭합니다.
swinefish

설명의 마지막 줄에 오타가 있습니다. Let us return to scene II.이어야합니다 scene I.
Oliver Ni

차이점을 지적 해 주셔서 감사합니다! 오타는 실제로 상위 코드에 있습니다. 장면 I은 $puck0으로 재설정 되고 카운트 업이 더 이상 작동하지 않으므로 장면 I을 반복해서는 안됩니다 . I코드에 누락 을 추가하고 바이트 길이를 수정했습니다 (어쨌든 조금 벗어났습니다)
Christallkeks

14

파이썬 2, 27 바이트

n=0
while 1:print~n,n,;n+=1

인쇄물 -1 0 -2 1 -3 2 -4 3 ...


10

05AB1E , 9 6 바이트

Adnan 덕분에 3 바이트 절약

[ND,±,

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

0, -1, 1, -2, 2 ...바꿈으로 구분하여 인쇄 합니다.


2
비트 단위의 마법을 사용하여 6 바이트로 줄일 수있었습니다 [N,N±,.
Adnan

1
@Adnan : 니스! 나는 이전에 비슷한 것을 시도했지만 사용하지 않았고 ±당신보다 3 바이트 더 길어졌습니다.
Emigna

나는 그것이 오래되었다는 것을 알고 있지만 바이트를 절약하기 위해 D,바꿀 수 있습니다 =.
Kevin Cruijssen

10

GNU sed, 189 + 2 (rn 플래그) = 191 바이트

sed에는 정수 유형이나 산술 연산이 없으므로 가장 긴 솔루션 일 것입니다. 따라서 정규 표현식 만 사용하여 임의의 크기 증가 연산자 를 에뮬레이트해야했습니다 .

s/^/0/p
:
:i;s/9(@*)$/@\1/;ti
s/8(@*)$/9\1/
s/7(@*)$/8\1/
s/6(@*)$/7\1/
s/5(@*)$/6\1/
s/4(@*)$/5\1/
s/3(@*)$/4\1/
s/2(@*)$/3\1/
s/1(@*)$/2\1/
s/0(@*)$/1\1/
s/^@+/1&/;y/@/0/
s/^/-/p;s/-//p
t

운영:

echo | sed -rnf all_integers.sed

산출:

0
-1
1
-2
2
-3
3
etc.

10

Brainfuck, 127 바이트

+[-->+>+[<]>-]>-->+[[.<<<]>>-.>>+<[[-]>[->+<]++++++++[-<++++++>>-<]>--[++++++++++>->-<<[-<+<+>>]]>+>+<]<<<[.<<<]>>.+.>[>>>]<<<]

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

무한 테이프가 주어지면 이론적으로 영원히 실행될 것입니다.

0,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6,7,-7,8,-8,9,-9,10,-10,11,-11,12,-12,13,-13,14,-14,15,-15,16,-16,17,-17,18,-18,19,-19,20,-20,21,-21,22,-22,23,-23,24,-24,25,-25,26,-26,27,-27,28,-28,29,-29,30,-30,31,-31,32,-32,33,-33,34,-34,35,-35,36,-36,37,-37,38,-38,39,-39,40,-40,41,-41,42,-42,43,-43,44,-44,45,-45,46,-46,47,-47,48,-48,49,-49,50,-50,51,-51,52,-52,53,-53,54,-54,55,-55,56,-56,57,-57,58,-58,59,-59,60,-60,61,-61,62,-62,63,-63,64,-64,65,-65,66,-66,67,-67,68,-68,69,-69,70,-70,71,-71,72,-72,73,-73,74,-74,75,-75,76,-76,77,-77,78,-78,79,-79,80,-80,81,-81,82,-82,83,-83,84,-84,85,-85,86,-86,87,-87,88,-88,89,-89,90,-90,91,-91,92,-92,93,-93,94,-94,95,-95,96,-96,97,-97,98,-98,99,-99,...

비 압축

+[-->+>+[<]>-]>-->+
[
  [.<<<]>>-.>>+<
  [[-]>[->+<]
    ++++++++[-<++++++>>-<]>--
    [++++++++++>->-<<[-<+<+>>]]>+>+<
  ]<<<
  [.<<<]>>.+.>
  [>>>]<<<
]

9

ShadyAsFuck , 3 바이트

FVd

설명:

F     prints the current cell value (0) and increases it by 1
 V    starts a loop and prints the current value
  d   increases the current value and ends the loop

셀 랩핑을 사용하고 가능한 모든 값을 인쇄합니다. SAF에서 기본 정수 표현은 바이트 값 입니다.


5
이 대답은 ... 그늘입니다.
코너 O'Brien

1
나는 누가 언어 이름을 생각해 냈는지 궁금해하고 있었고, 그 언어의 자손을 알아 차렸다.
John Dvorak

8

R, 25 24 바이트

@JDL 덕분에 1 바이트를 기록했습니다.

repeat cat(-F,F<-F+1,'')

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

출력 예 :

0 1 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 

2
당신은 대체 할 수 while(1)repeat 숯불을 저장합니다.
JDL

@JDL 감사합니다! 구조물이 때때로 존재한다는 것을 잊습니다.
rturnbull

7

배치, 56 바이트

@set n=0
:l
@echo %n%
@set/an+=1
@echo -%n%
@goto l

산출:

0
-1
1
-2
2
-3

등. 2147483647까지 작동; 출력에서 (-) 2147483648을 원하는 경우 58 바이트 :

@set n=0
:l
@echo %n:-=%
@set/an-=1
@echo %n%
@goto l

지원되는 모든 양의 정수를 인쇄 한 다음 지원되는 모든 음의 정수를 인쇄 한 다음 끝없이 반복하는 경우 44 바이트가 허용됩니다.

@set n=0
:l
@echo %n%
@set/an+=1
@goto l

7

자바 7 151 134 122 118 바이트

import java.math.*;void c(){for(BigInteger i=BigInteger.ONE,y=i;;i=i.add(y))System.out.println(y.subtract(i)+"\n"+i);}

@flawr (및 @xnor 간접) 덕분에 12 바이트 절약

규칙 변경 후. ( 59 56 63 바이트)

void c(){for(int i=0;i>1<<31;)System.out.println(~--i+"\n"+i);}

자바 2147483647 + 1 = -2147483648에서는 i++모든 숫자를 한 번만 인쇄해야하기 때문에 단순히 계속해서 무한정 계속할 수는 없습니다 . 추가 범위 위의 코드로, 대신 모든 정수를 출력합니다 -21474836482147483647다음과 같은 순서로 각 회 : 0, -1, 1, -2, 2, -3, 3, -4, ..., 2147483646, -2147483647, 2147483647, -2147483648. / 에 관한 Java의 동작을 지적한 @ OlivierGrégoire 에게 감사합니다 . 여기에서 시도하십시오.MIN_VALUE-1MAX_VALUE+1

언 골프 및 테스트 코드 :

여기에서 시도하십시오-런타임 오류가 발생합니다

import java.math.*;
class M{
  static void c() {
    for(BigInteger i = BigInteger.ONE, y = i; ; i = i.add(y)){
      System.out.println(y.subtract(i) + "\n" + i);
    }
  }

  public static void main(String[] a){
    c();
  }
}

산출:

0
1
-1
2
-2
3
-3
4
-4
5
-5
...

1
n과 1-n을 동시에 인쇄하여 바이트를 절약 할 수 있다고 생각합니다. 이렇게하면 보정을 제거 할 수 있습니다. @xnor 가이 아이디어를 처음 사용한 곳입니다.
flawr

1
당신의 int무한 주어진 시간 -version 프로그램은 모든 정수 시간의 무한한 양을 인쇄합니다.
Olivier Grégoire

1
@ OlivierGrégoire Ah 물론 MAX_VALUE + 1은 MIN_VALUE.입니다. 한숨. 지적 해 주셔서 감사합니다.
Kevin Cruijssen

1
더 많은 골프를 즐기고 싶다면 (즉 MAX_VALUE,을 제거하고 , 내 대답을 확인하십시오 (아마도 마지막 페이지에 있음)
Olivier Grégoire

1
53 바이트 솔루션은 함수 또는 프로그램이 아닌 스 니펫이므로 유효하지 않습니다.
Mego

6

DC (GNU 또는 OpenBSD 풍미) -16 바이트

이 버전은 아래 버전보다 짧지 않지만 PC에서 스택이 폭발하지 않고 실행할 수 있어야합니다. 그럼에도 불구하고 무한한 많은 숫자는 무한한 양의 메모리를 차지할 것입니다.

때문에의 r명령이 필요 GNU-DC 또는 오픈 BSD-DC를 .

0[rp1+45Pprdx]dx

테스트:

$ dc -e '0[rp1+45Pprdx]dx' | head
0
-1
1
-2
2
-3
3
-4
4
-5

DC -16 바이트

이제 조금 의미가 있습니다. ;-)

이 버전은 스택을 늘리면서 스택 길이를 카운터로 남깁니다.

z[pz45Ppllx]dslx

테스트:

$ dc -e 'z[pz45Ppllx]dslx' | head
0
-1
1
-2
2
-3
3
-4
4
-5

DC -17 바이트

더러운 속임수없이.

0[p1+45Ppllx]dslx

테스트:

$ dc -e '0[p1+45Ppllx]dslx' | head
0
-1
1
-2
2
-3
3
-4
4
-5

+? "더 조만간 ... 예상보다 빨리"
Greg Martin

2
대신 [-]P수행 45P. "GNU-Dc 또는 OpenBSD-Dc" -야생에서 일반적으로 발견되는 다른 버전이 있습니까?
디지털 외상

1
다른 해결책 (또는 몇 가지)이 있지만 실제 음수와 관련이 있습니다. 새 답변에 게시 할 수 있습니까? 나는 dc연산자가 거의 없기 때문에 이것과 매우 비슷해 보이기 때문에 묻습니다 . 나는 이것들과 독립적으로 개발했습니다.
Joe

@DigitalTrauma ... 물론 ... 원본 Dc 에는 r"스왑"기능 이 없습니다 . 때로는 다른 버전을 볼 때 혼란스러워합니다. 아마도 고대 Dc 에서 더 이상 코드를 작성하려는 사람은 아무도 없을 r것입니다. "Dc"를 "AT & T dc"로 변경했을까요? ... 45P힌트를 주셔서 감사합니다 ...
yeti

2
@yeti 난 그냥 내 대답에 "dc"를 넣었습니다. 나는 "현대적인"dc 풍미의 편재 함을 감안할 때 여기 사람들이 너무 걱정하지 않는다고 생각합니다.
디지털 외상

6

C # 74 바이트

class P{void Main(){for(var x=0m;;System.Console.Write(x+++","+-x+","));}}

class P
{
    void Main()
    {
        for(var x = 0m; ; System.Console.Write(x++ + "," + -x + ","));
    }
}

산출:

0,-1,1,-2,2,-3,3,-4,4,-5,5,-6,6,-7,7,-8,8,-9,9,-10,10,...

시도 해봐:

dotnetfiddle.net (1000 개로 제한)


이 스 니펫이 아니고 기능 / 전체 프로그램이 아닙니까?
pinkfloydx33

죄송합니다, 전체 프로그램 추가
alex

2
public수정자를 생략하고 14 바이트를 저장할 수 있습니다 . 기본값은 동일하게 수행됩니다.
Alejandro

@Alejandro 감사합니다, 그것은 나의 첫 번째 게시물입니다 :)
alex

6

루비, 26 22 19 16 바이트

줄 바꿈으로 구분 된 숫자를 인쇄합니다. @manatwork에서 -3 바이트 @ m-chrzan에서 -3 바이트

0.step{|n|p~n,n}

여기에 숫자 값을 출력하므로 그렇게 p할 것입니다.
manatwork

0.step{|n|p n,~n}17 바이트
m-chrzan

1
@ m-chrzan 순서가 중요하지 않기 때문에 제안보다 추가 바이트를 줄일 수있었습니다!
Value Ink

6

자바 스크립트, 29 26 바이트

무한대 버전, 26 바이트

ETH 프로덕션 덕분에 3 바이트 절약

for(n=1;;)alert([1-n,n++])

-9007199254740991과 9007199254740992 사이의 모든 정수를 표시합니다.

무한 버전 (ES6) 114 112 바이트

ETH 프로덕션 덕분에 2 바이트 절약

for(n=[-1];1;alert(n[a||n.unshift(1),0]?(x=n.join``)+' -'+x:0))for(i=n.length,a=0;i--;a=(n[i]+=1-a)>9?n[i]=0:1);

무한 시간과 메모리가 주어지면 모든 정수가 표시됩니다.


기능 상용구를 버리고 전체 프로그램이라고 부를 수 있습니다.
Conor O'Brien

@ ConorO'Brien-아, 맞습니다. 감사합니다 :)
Arnauld

n[a,b,c]을 반환 n[c]하므로 괄호를에 넣을 수 있습니다 n[(a||n.unshift(1),0)].
ETHproductions

1in for 루프 가 필요하지 않습니다 . for(;;)영원히 실행됩니다. 을 사용하여 2 바이트를 더 절약 할 수 있습니다 for(n=1;;)alert([1-n,n++]). 또한 더 이상 ES6 기능을 사용하지 않습니다. ;-)
ETHproductions

5

> <> , 19 15 바이트

1::1$-naonao1+!

다음이 인쇄됩니다.

0
1
-1
2
-2
3
-3

... 등등. 구분 기호는 줄 바꿈입니다.

해당 알고리즘 버전을 사용하기 위해 @xnor의 답변을 읽은 후 다시 작성하십시오. 에서 시작 n=1하면 프로그램이 증가하기 전에 1-nn을 각각 줄 바꿈으로 인쇄합니다 n. 최대 값을 오버플로 한 후 프로그램은 오류로 종료됩니다 something smells fishy.... 이것이 언제 일어날 것인지는 통역사 구현에 달려 있습니다.


이전 버전:

0:nao0$-:10{0(?$~+!

0에서 시작하면 프로그램은 무한정 반복됩니다. 각 루프에서 현재 값이 줄 바꿈과 함께 인쇄됩니다. 그런 다음 부정되고 양수이면 증가합니다.


xnor는 "그"라는 모호하지 않습니까? 아니면 우리의 무의식적 편견이 보이고 있습니까?
Greg Martin

2
@GregMartin 흥미 롭습니다. 성별을 언급 한 적이없는 것 같습니다.
xnor

5

배쉬 + GNU 유틸리티, 26

seq NaN|sed '1i0
p;s/^/-/'

seq가 그런 식으로 사용되는 것을 본 적이 없습니다. 버그와 같은 것입니까? 또한 유형 오버플로 후에 숫자가 반복되기 시작합니까? 나는 그것이 $[++i]bash에서 그렇게 한다는 것을 알고있다 .
seshoumara

새로운 기능인 것 같습니다 . 소스 코드를 참조하십시오 . NaN에 1을 추가하면 랩 어라운드가 발생하지 않아야합니다.
디지털 외상

나는 seq NaN달리기 위해 떠났고 999999 후에 인쇄는 5 자리 정밀도로 과학 표기법으로 수행됩니다. 도전과 관련하여 그 값은 인쇄하는 가장 큰 정수이며 나머지는 이전 숫자를 반복하지 않으므로 괜찮습니다. 또한와 inf같이 대소 문자를 구분하지 않고 seq를 실행할 수 있음을 알았 습니다 nan. +1
seshoumara

5

bc, 17 16 바이트

편집 : Digital Trauma 덕분에 1 바이트가 적습니다 .

지금까지 사용 된 다양한 언어에 덧붙여 임의 크기의 정수로 작동하는 bc 솔루션을 제시합니다 . 코드 다음에 줄 바꿈이 필요하며 총 바이트 수로 계산됩니다.

for(;;){i;-++i}

첫 번째 반복에서는 i정의되지 않지만 인쇄하면 놀랍게도 0이됩니다.


1 바이트 더 짧음 :for(;;){i;-++i}
Digital Trauma

@DigitalTrauma 감사합니다. 답변을 업데이트했습니다. 재미있는 점은 오늘 다른 bash answer 에서 해당 루프 구문을 사용 했지만 잊어 버린 것입니다 bc.
seshoumara

또는 for(;;){i++;-i}(같은 길이).
sch

5

미로 , 9 바이트

!`
\:"
 (

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

이것은 또한 작동하며 본질적으로 동일합니다.

 "
`:(
\!

설명

이 코드의 제어 흐름은 다소 재미있다. Labyrinth 프로그램의 명령어 포인터 (IP)는 공백이 아닌 문자의 경로를 따르고 어느 접합점에서 스택의 맨 위를 검사하여 어느 경로를 취할지 결정합니다.

  • 스택의 상단이 양수이면 오른쪽으로 돌립니다.
  • 스택 상단이 0이면 똑바로 계속 움직입니다.
  • 스택의 상단이 음수이면 왼쪽으로 돌립니다.

IP가 막 다른 곳에 도달하면 IP가 돌아갑니다 (끝에서 명령을 한 번만 실행). 그리고 왼쪽 상단에서 동쪽으로 이동하면서 IP가 시작됩니다. 또한 스택은 암시 적으로 무한한 양의 0으로 채워져 있습니다.

이 짧은 비트로 프로그램이 시작됩니다.

!    Print top of stack (0).
`    Multiply by -1 (still 0).
:    Duplicate.

이제 IP가 관련 정션에 있고 바로 위로 이동 (하여 스택 맨 위가로 감소합니다 -1. IP가 막 다른 골목에 부딪쳐 돌아섰습니다. :스택의 상단을 한 번 더 복제합니다. 이제 스택의 상단이 음수이고 IP가 왼쪽 (서쪽)으로 바뀝니다. 이제 메인 루프를 한 번 더 반복합니다 :

\   Print linefeed.
!   Print top of stack (-1).
`   Multiply by -1 (1).
:   Duplicate.

이번에는 스택의 상단이 양수이므로 IP가 오른쪽 (서쪽)으로 바뀌고 즉시 주 루프의 다른 반복을 실행하여을 인쇄합니다 1. 그런 다음 다시 무효화 되면 스택 에서 :with -1를 누르십시오 .

이번에는 IP가 왼쪽 (동쪽)으로 바뀝니다. 은 "단지 어떤 조합하지 않으며 IP는 막 다른 골목에 주위집니다. :다른 사본을 만들고 이번에는 IP가 남쪽으로 바뀝니다. (값을으로 줄이면 -2IP가 다시 돌아옵니다. 스택의 상단이 여전히 음수 인 상태에서 IP는 이제 서쪽으로 향하고 :메인 루프의 다음 반복을 수행합니다.

이런 식으로, IP는 이제 꽉 루프 반복, 양수 인쇄, 두 데드 엔드를 통과하는 반복 사이에서 반복하여 음수를 인쇄하기 전에 값을 감소시킵니다.

"실제로 아무것도하지 않으면 왜 두 번째 줄에 왜 있는지 묻습니다 . IP가 없으면: 음수 값에 도달하면 왼쪽으로 (동쪽) 회전 할 수 없으므로 대신 오른쪽으로 (서쪽) 회전합니다 일반적으로 정션에서 일반적인 방향을 사용할 수없는 경우 IP는 반대 방향을 사용합니다. 즉, IP도 (바닥에 결코 도달 하지 않으며 긍정적 반복과 긍정적 반복을 구분할 수 없습니다.


이것은 내가 답을보기 전에 해낸 것입니다 : pastebin.com/VHzAvABe
로버트 히크

5

자바 스크립트 (ES5), 32 31 30 29 바이트

for(i=0;;)[i++,-i].map(alert)

인쇄물 0 -1 1 -2 2 -3 3 -4 4 -5 5 ...

Patrick Roberts 덕분에 1 바이트를 절약했습니다! Conor O'Brien 덕분에 2 바이트를 절약했습니다!


1
방법에 대해 [i++,-i].map(alert)대신 alert(i++),alert(-i)?
Conor O'Brien

for(;;)이상의 바이트 짧은while(1)
패트릭 로버츠

@ ConorO'Brien는 mapES6입니다
폴 슈미츠


i=0;for 루프 내 에서 비트 를 이동하여 바이트를 저장할 수 있습니다 .
Conor O'Brien

4

자바, 65 54 바이트

i->{for(;;)System.out.print(i+++" "+(-i<i?-i+" ":""));

Ungolfed 테스트 코드

public static void main(String[] args) {
    Consumer<Integer> r = i -> {
        for (;;) {
            System.out.print(i++ + " " + (-i < i ? -i + " " : ""));
        }
    };

    r.accept(0);
}

3
biggest magnitude of the standard integer type of your language intJava의 표준 정수 유형입니다.
Shaun Wild

1
죄송합니다. 요구 사항이 변경되었습니다.
flawr

2
당신은 ()->{for(int i=0;;)System.out.print(i+" "+(1-i++));};( 53 바이트 )에 골프 수 있습니다
Kevin Cruijssen

@KevinCruijssen 그 간격을 잤어요 ...
숀 와일드

1
무한 시간이 주어지면, 모든 정수를 각각 무한대로 인쇄합니다.
Olivier Grégoire

4

C #, 83 바이트

void f(){for(decimal n=0;;n++){Console.Write(n+",");if(n>0)Console.Write(-n+",");}}

언 골프 드 :

void f()
{
  for (decimal n=0;;n++)
  {
    Console.Write(n + ",");
    if (n > 0) Console.Write(-n + ",");
   }
}

출력 :

0,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6.......

문자를 줄이기 위해 할 수있는 일이 많이 있습니다. 먼저 프로그램에는 네임 스페이스가 필요하지 않습니다. 둘째, 클래스 이름이 너무 길 필요는 없습니다. 또한 console.writeline을 두 번 호출하여 대리인에게 단순화 할 수 있습니다. while true는 a (for ;;;)로 단순화 될 수 있으며, 델리게이트를 통해 먼저 0의 값을 출력하여 if 문을 제거 할 수 있습니다.
Nico

감사. 대리인이 "속임수"인지 몰랐습니까?
Pete Arden

안녕하세요, PPCG에 오신 것을 환영합니다! 나는 당신이 이것을 읽는 것이 흥미로울 것이라고 생각합니다 : C #에서의 골프 팁 . 또한 전체 프로그램이 필요하지 않으며 기능 만 수행 할 수 있습니다 (챌린지가 달리 언급하지 않는 한). 그래서 void f(){code_present_in_main}바이트 카운트에 충분하다. 코드 자체에 대해서는 다음과 같이 더 골프를 void f(){for(decimal n=1;;)Console.Write((1-n)+","+n+++",");}

1
오, 지금 훨씬 건강해 졌어요, 고마워요! 나는 당신의 대답을 모두 사용하는 것이 옳지 않을 것이지만, 그것은 확실히 개선이며 그 팁은 미래의 골프에 도움이 될 것입니다!
Pete Arden

@PeteArden 다른 접근 방식이므로 코드를 사용하지 않는 것으로 알고 있습니다. 흠, 할 수 있습니다 여전히 골프를 배치하여 자신의 대답에 2 바이트 decimal n=0n++;비록에 대한 루프 내부 : void f(){for(decimal n=0;;n++){Console.Write(n+",");if(n>0)Console.Write(-n+",");}}:)
케빈 Cruijssen

4

C # 86 66 바이트

새로운 답변 :

void b(){for(var i=0;;i++)Console.Write(i==0?","+i:","+i+",-"+i);}

명확한:

void b() 
{
    for(var i=0;;i++)
        Console.Write(i == 0 ? "," + i : "," + i + ",-" + i);
}

이전 답변 (86 바이트) :

void a(){Console.Write(String.Join(",",Enumerable.Range(int.MinValue,int.MaxValue)));}

언 골프 드 :

void a()
{
    Console.Write(String.Join(",", Enumerable.Range(int.MinValue, int.MaxValue)));
}

1
쓸모없는 공백이 2 개 있습니다. 이전 Enumerable.Range과 이전 int.MaxValue.
Yytsi

1
PPCG에 오신 것을 환영합니다! +1이 글을 읽는 것이 흥미로울 것입니다 : C #에서의 골프 팁 . 현재 답변에서 한 줄만 있기 때문에 for 루프의 브래킷을 제거 할 수 있습니다. 또는이 방법은 void f(){for(var n=1;;)Console.Write((1-n)+","+n+++",");}( 57 bytes ) 더 짧은 방법 입니다.
Kevin Cruijssen

@KevinCruijssen 감사합니다. 브레이크 트가 사라졌습니다.
Daniel Lerps


4

Powershell, 20 19 18 바이트

TimmyD의 답변에서 부끄럽게 도둑질하여 향상

0;for(){-++$i;$i}

산출:

0
-1
1
-2
2
-3
3
-4
4

구 버전:

for(){-$i;$i++;$i}

왜 tbh인지 확실하지 않지만 선언되지 않은 변수 (또는-$ null)가 0으로 제거 되어이 버전에서 2 바이트가 절약되었습니다 ...


1
PPCG에 오신 것을 환영합니다!
AdmBorkBork


4

Brachylog , 2 바이트

ẉ⊥

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

ẉ     Print with a newline
      the input,
 ⊥    then try again.

프로그램에 입력이 제공되지 않으므로 기본 술어의 입력 변수는 제한되지 않습니다. 처음에는 0으로 가정하지만 실행이 적중 하면 가능한 유일한 실패 지점 (입력 변수의 값 선택)으로 되돌아갑니다. 따라서 1, -1 및 다른 모든 정수를 시도하여 항상 역 추적을 강제 하기 때문에 개행 문자로 구분 된 각 정수를 영원히 인쇄 하고 그 효과 는 즉시 실행됩니다.

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