프로그램보다 더 짧은 문자 (문자)로 인쇄 할 수있는 가장 작은 양의 10 진수는 무엇입니까?


179

위와 같은 질문은 분명하지만 경우에 따라 다음과 같이 생각합니다.

  • 양의 10 진 정수를 출력하고 선택적으로 단일 줄 바꿈을 출력 하는 전체 프로그램 (함수가 아니라)을 작성하십시오 .

  • 적격 프로그램은 바이트 단위로 측정 된 프로그램 소스 코드보다 출력이 더 긴 ( 바이트 단위 ) 프로그램입니다 (프로그램 소스 코드의 ASCII 또는 UTF-8 인코딩 가정).

    즉, 코드는 결과 숫자의 자릿수보다 짧아야합니다.

  • 모든 상황에서 앞에 오는 0은 허용되지 않습니다. 선행 0을 계산하면 문제가 사소 해집니다. 선행 0을 무시하면 불필요하게 질문이 복잡해집니다.

  • 당첨 프로그램은 가장 작은 크기의 정수를 인쇄하는 적격 프로그램입니다.

리더 보드 스 니펫


64
핫 네트워크 질문 1 번 . 첫 번째 질문에 나쁘지 않습니다 ...
trichoplax

6
@Kslkgh 엄밀하게는 그렇지 않다면, 마지막 값을 암시 적으로 인쇄하는 프로그램에 대한 문제는 사소한 것입니다.
Arandur

6
1.0정수?
histocrat

23
UTF-8에 대한 제한은 어리 석고 해 롭습니다. 바이트는 인코딩에 관계없이 바이트입니다. 현재 문자 기반이 아니거나 (예 : Minecraft, Piet, Folders) 언어가 "실제"보다 긴 UTF-8 바이트 수 ( 이 질문 에 따라 유효하지 않음)를 허용하지 않으므로 규칙을 변경하는 것이 좋습니다. ) 바이트 수 (예 : APL, TI-BASIC, Seriously, Jelly).
lirtosiast

7
@ZachGates HNQ 목록이 작동하는 방식이 아닙니다. ;)
Martin Ender

답변:


193

망막 , 1 점


빈 프로그램은 입력에서 빈 정규 표현식 (빈 문자열)의 일치 횟수를 계산합니다. 정확히 1 번 일치하므로를 인쇄합니다 1.

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


39
... 우리에게는 우승자가 있습니다.
Arandur

9
btw, 나는 일치하는 횟수가 무한하다고 말하고 싶습니다. 빈 문자열은 무제한 반복 될 수 있으며 무한정 일치 될 수 있습니다.
nicael

50
@nicael 다행히도, 그것은 정규식이 작동하는 방식이 아닙니다. ;)
Martin Ender

8
정규식 엔진에 의존하는 @ MartinBüttner. 빈 문자열을 일치 시키려고하면 시스템이 완전히 터질 것입니다.
Sparr

19
@LorenPechtel은이 규칙이 빈 프로그램이 대부분의 언어에서 사소한 해결책 인 퀴네 문제에만 적용됩니다. 이 빈 프로그램에는 실제로 사소한 의미가 없으며 Retina에는 이와 같은 문제로 인해이 동작이 없지만 모든 단일 라인 프로그램에 대한 동작의 일관된 일반화이기 때문에 공정한 게임이라고 생각합니다.
Martin Ender

73

피스 , 10

T

먼저 Pyth를 사용하십시오. 질문이 명확 해지면 10이 가장 작은 숫자 인 것 같습니다. Pyth에서 문자 T는 숫자 10으로 시작하므로 10소스 코드의 길이보다 큰 문자를 간단히 인쇄 합니다. 당신은 할 수 여기를보십시오 .


97
Pyth를 사용하려는 첫 시도가 문자 T 인 방법이
마음에 듭니다

8
글쎄, 나는 이것이 내가 볼 수있는 가장 읽기 쉬운 Pyth 프로그램이라고 생각했지만 이것은 이해하기 쉽다.
Deusovi

2
이것은 polygot이며, 이것은 05AB1E에서도 작동합니다. 05ab1e.tryitonline.net/#code=VA
Magic Octopus Urn

60

기원전, 10

A

운 좋게도 bc기본적으로 마지막 표현식의 결과를 인쇄합니다. A는 16 진수로 해석되므로 결과는 10입니다.


1
그러나 A많은 골프 언어들이 A를 10으로 정의하고 있기 때문에 와의 솔루션을 포함하여 5 개 이상의 비슷한 답변이 이미 있습니다.
nicael

45
@nicael 네, 맞습니다. 나는 bc골프 언어가 아니기 때문에이 답변이 다르다고 주장합니다 . 실제로 찾을 수있는 거의 모든 표준 * nix 시스템에서 기본적으로 사용 가능한 Posix 정의 언어 입니다.
Digital Trauma

47

낚시, 점수 7,958,661,109,946,400,884,391,936 1,208,925,819,614,629,174,706,176

이것이 최소화 도전에서 가장 사소한 점수입니까? (골프까지도 84.8 %)

v+CCCCCCCCCC
  `32`nSSSSP

설명

v              Sets the casting direction to down
 +             Increments the casting distance by 1
  CCCCCCCCCC   Casts the rod

`32`         Pushes a string "32" to the stack
    n        Converts the stack from a string to an integer
     SSSS    Repeated squaring of the stack
         P   Prints the stack

숫자는 32^1625 자리입니다. 코드 길이는 24 바이트입니다. 이전 답변은 6^32입니다.


2
내 눈물을 흘렸다 당신의 기여에 감사합니다.
Arandur

30
아마 여전히 Java를 이길 것입니다 ...
Arcturus

3
글쎄, 그것은 C #을 친다 ...
LegionMammal978

왜 6이 아닌 9입니까?
immibis

@immibis 도전의 목표는 점수를 최소화하는 것이므로 바이트를 최소화하는 것이 아닙니다. 9를 앞에 놓으면 불필요하게 점수가 높아 졌을 것입니다.
Arcturus

36

MATLAB, 1,000,000,000 (10 9 )

또한 작동 옥타브

disp(1e9)

절대로 esolang을 이길 수는 없지만 재미를 위해 이것은 MATLAB / Octave가 할 수있는 가장 작은 것이므로 어쨌든 게시 할 것이라고 생각했습니다.


18
esolang의 대답은 유효하지만 다소 지루합니다. 그렇지 않은 것을 보게되어 기쁘다!
Arandur

1
say 1e9골프 점수를 높이려면 펄 이 약간 짧아집니다. (이 접근법이 작동하는 더 작은 정수 근처에는 없지만 ...)
derobert

@derobert True. 1e1은 문제 설명을 만족시키고 10 점 (낮을수록 좋음)을 부여합니다 (문자가 1 바이트라고 가정)
dberm22

@ dberm22 10(2 자)는 1e1(3 자) 보다 길지 않습니다
SuperJedi224

@ SuperJedi224 Ahh, 인쇄 된 숫자의 크기는 인쇄 된 숫자의 자릿수가 아닌 바이트 수보다 커야하기 때문에 읽었습니다. 설명해 주셔서 감사합니다.
dberm22

29

TI-84 기본, 120

5!

ᴇ2바보 같은 UTF-8 요구 사항이 아니라면 더 나은 점수를 얻습니다. (계산기의 기본 토큰 화 된 인코딩에서는 2 바이트에 불과하지만 UTF-8에서는 4입니다 ...)


어쩌면 뭔가
빠졌지

11
@ JasperBryant-Greene 이며 E같은 문자가 아닙니다. TI-BASIC에서 과학적 표기법이며 E변수입니다.
SuperJedi224

4
고마워 :) 나는 캐릭터가 전체 높이보다 미묘하게 작다는 것을 알았을 것입니다…
jbg

하지 않을까요 3!더 나은 점수?
dberm22

1
@NobodyNada 이번에는 질문이 어떤 이유로 UTF8로 점수를 매겼다 고 구체적으로 말했습니다.
SuperJedi224

26

C #, 점수 10 ^ 72 10 ^ 70 10 ^ 64 10 ^ 63

class A{static void Main(){System.Console.Write($"1{0:D63}");}}

1,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000입니다. 내가 시도한 것 같아요 ...


1
정말 훌륭합니다.
Arandur

4
Write(new string('1',70))더 좋지 않을까요 ?
Lynn

1
문자열 대신 이중으로 쓸 수 있으며 10 ^ 56으로 단축됩니다.class A{static void Main(){System.Console.Write(1e56);}}
goric

@goric 출력 만합니다 1E+56.
LegionMammal978


17

JavaScript, 100,000,000,000 점 (또는 1 * 10 11 )

alert(1e11)

경고를 사용하는 경우입니다. 콘솔을 사용하면 10 만 배 더 적은 점수를 얻을 수 있지만

1e3

보시다시피 1000 점, 콘솔을 사용하여 계산되는지 확실하지 않습니다.


왜 계산하지 않는지 모르겠습니다!
Arandur

6
@Arandur 나는 "그것이 확실하지 않다"는 1000의 낮은 점수를 의미한다고 생각합니다. 왜냐하면 그것은 완전한 프로그램 이라기보다는 콘솔을 REPL로 사용해야하기 때문입니다.
trichoplax

@tri는 정확하게 설명했습니다.
nicael

11
경고 +1, 자동 콘솔 출력을 허용하지 않습니다
edc65

17

PlatyPar , 59

#

#숫자 base-60 리터럴을 시작하고 숫자가 없으므로로 끝납니다 59. 이것은 행복한 사고로 시작되었지만 이미 다른 답변 으로이 버그를 사용한 적이 있기 때문에 계속 유지했습니다.

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

여기에 또 다른 접근법이 있습니다. 저는 모든 사람과 할머니가이 도전에 사용한 지루한 방식을 취했습니다.

PlatyPar , 100000000 (9 자리)

'18Md0+;

설명

'1        ## push "1" (a string) to the stack
  8Md  ;  ## repeat 8 times
     0+    ## add a 0
          ## [implicitly] print the result

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


16

Brainf ** k , 11111111111111111111111111111111111 (~ 1e34)

그리고 또 다른 감소 :

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

35 연속 1 또는 약 1e34를 제공합니다.


조금 더 작은

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

36 1에 1e35보다 약 11 % 큰 수를줍니다.


이 코드를 사용하여 총 출력을 100 배로 줄인 두 문자를 녹여 준 @Martin Büttner에게 감사의 말씀을 전합니다 (1e36).

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

내 이전 코드 (1 + e38 생성) :

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

나는 지루함에서 esolangs를 실험하고 있습니다. 이것이 BF에서 할 수있는 최선입니다. 더 작게 만들 수 있는지 궁금합니다.

여기에서 온라인으로 사용해 볼 수 있습니다 .


처음부터 더 짧은 답변을 썼습니다 : link
Lynn

@Mauris 인상적!
Tom Carpenter

16

C, 1000000000000000000000000000 (28 자리)

main(){printf("1%027d",0);}

내 C ++ 답변과 비슷하지만 #include <stdio.h> (의 선언이 누락되었다는 경고는 무시하십시오 printf. Thanks @Dennis)

줄 바꿈은 형식을 사용하여 추가 2 바이트가 필요합니다. 1%029d\n


14

Japt , 10 점

A

점수를 보여 주듯이 10을 인쇄합니다.


이것은 코드 골프가 아닙니다. 목표는 가장 작은 숫자를 인쇄하는 것이며, 점수는 10입니다.
pppery

@ppp "숫자는 프로그램보다 바이트 단위로 길어야합니다. 코드에 문자보다 많은 자릿수가 있어야합니다."– OP가 방금 편집되었습니다.
nicael

2
당신은 오해하지 않았습니다. Japt 프로그램 A이 10을 인쇄하면 10 점을받는 유효한 프로그램입니다.
Arandur

3
Woohoo, 내 언어는 <s> 1 위 </ s> 2 위입니다! Retina의
눈부심

4
공감할 이유가 있습니까?
nicael



9

미로 , 10,000,000 점

1!!!!>@

이것을 한 단계 씩 줄일 수는 있지만 지금은 아무것도 찾을 수 없습니다.

첫 번째가 1!!!!인쇄 1000됩니다. 그런 다음 >소스 코드를

@1!!!!>

조기 종료를 피할 수 있습니다. 그런 다음 IP가 막 다른 골목에 부딪쳐 돌아옵니다. 이제 !!!!네 개의 0을 더 인쇄 @하고 프로그램을 종료합니다.

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


9

사마 우 , 42

A

A인생의 궁극적 인 질문, 우주, 그리고 모든 것에 대한 답을 쌓아 올립니다. 그런 다음 스택 상단이 자동으로 인쇄됩니다.


커밋 메시지에 문제가 있다고 생각합니다. : P
Doorknob

3
@Doorknob 冰 커밋 메시지를 작성하는 방법을 모르므로 임의의 이모티콘을 사용합니다.
alephalpha

5
좋습니다, 여기 진짜 질문이 있습니다 : 무엇을 Q밀어 붙입니까?
Cyoce

9

Brainfuck, 3333333333333333333333333 (25 3)

이것은 "처음부터"작성되었으므로 별도의 답변을 게시해도 괜찮습니다.

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

23 바이트 길이


나는 bf 솔루션을 고려하고 있었고, 숫자로만 출력되는 현재 통역사가 있습니까?
Rohan Jhunjhunwala

@RohanJhunjhunwala 이것은 51 (ASCII 코드 "3")을 25 번 출력합니다.
Level River St

@LevelRiverSt Im이 말하는 것은 ascii로 입력되지 않고 정수 출력 만하는 bf 인터프리터가있을 수 있다는 것입니다. 따라서 (-.)는 255를 출력합니다.
Rohan Jhunjhunwala

9

DC , 10000

4 문자 프로그램 :

I4^f

5 자리 출력 :

$ dc<<<'I4^f'
10000

3
+1. 그래, 나는 그것이 dc에서 최적이라고 생각합니다. 비정상적으로 bc는 더 짧습니다 .
Digital Trauma

나는 내가 잘 지내고 있다고 생각 6d^p했지만 (46656 번), 당신은 그 비트를 가졌습니다.
Toby Speight


8

C, 11111111111111111111111111111111111 (35 개)

main(c){while(c++<36)putchar(49);}

아마도 더 짧은 방법이있을 것입니다. C로 큰 숫자를 인쇄하는 간단한 방법이 없기 때문에 까다로워집니다.



7

자바, 111111111111111111111111111111111111111111111111111111111111111111111111111111111111 (81)

interface A{static void main(String[]a){for(A i:new A[81])System.out.print(1);}}
                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

여기서 실제로 "가변"인 부분에 밑줄을 긋었습니다. 작동하는 Java 프로그램에는 다른 모든 것이 절대적으로 필요합니다.

아마도 이것은 Java와 함께하는 것보다 짧습니다 BigInteger.


아마도 ...- 아마도 System.out.print(BigInteger.TEN.pow(10));-한 문자가 적습니까? 죄송합니다 .pow(10).pow(10). 충분히 큰 곳은 없습니다 .
OldCurmudgeon

당신은 대체 할 수 있습니다 interfaceclass.
LegionMammal978

2
그러나 main이어야 public합니다.
Lynn

7
for 루프에서이를 수행하여 2자를 줄일 수 있습니다. for (A a : new A [81])
Jack Ammo

@OldCurmudgeon .pow(100)어떤 이유로 작동하지 않습니까?
ETHproductions

7

큐빅스 , 100100

@'dOu

Cubix는 2 차원 스택 기반 esolang입니다. Cubix는 소스 코드가 큐브 외부에 둘러싸여 있다는 점에서 다른 2D 언어와 다릅니다.

온라인으로 테스트하십시오!

설명

인터프리터가하는 첫 번째 일은 코드가 들어갈 가장 작은 큐브를 알아내는 것입니다. 이 경우 모서리 길이는 1입니다. 그런 다음 .6 개의면이 모두 채워질 때까지 코드에 op-op가 채워집니다 . 처리하기 전에 공백이 제거되므로이 코드는 위와 동일합니다.

  @
' d O u
  .

이제 코드가 실행되었습니다. IP (명령 포인터)는 맨 왼쪽에서 시작하여 동쪽을 가리 킵니다.

IP가 처음 접하는 문자는 '다음 바이트를 스택으로 푸시합니다. 이 바이트는 d또는 100입니다. 다음은O 최상위 항목 (100)을 정수로 출력하는입니다.

그런 다음 IP u를 누르면 오른쪽으로 돌리고 앞으로 이동 한 다음 다시 돌립니다. 북쪽을 가리키는 바닥면으로 전환 한 다음 동쪽으로 회전합니다. 이것은 그것을 O다시 감싸서 100을 출력 한 다음 @프로그램을 종료합니다.


6

MATL , 1000

1e3

참고 : 컴파일러의 최신 GitHub 커밋 은 Octave 및 Matlab에서 작동합니다.

이것은 과학적 표기법으로 숫자를 해석하고 암시 적으로 인쇄하여 출력을 생성합니다.

1000



6

파이썬 2, 107918163081

print 69**6

print와 사이의 공백을 제거 할 수 있습니다 2.
Bakuriu

1
@Bakuriu 아니요 당신은 할 수 없습니다
Blue

69**6입니다 107918163081.
Neil

2
놀랍게도 이것은 Perl에서도 작동합니다.
Grimy

6

C ++, 1e46

#include <stdio.h>
main(){printf("1%046d",0);}

줄 바꿈에는 "1 % 048d \ n"형식을 사용하여 추가 2 바이트가 필요합니다.


C ++에서는의 반환 유형을 생략 할 수 없다고 생각 main()합니다. OTOH, 이것은 좋은 C 답변을 만들 것입니다 ...
Toby Speight

5

O, 10

A

분명히 점수는 우리가 인쇄하는 숫자입니다!


5

05AB1E , 10 점

암호

T

설명:

T         # Puts 10 onto the stack
          # Implicit, print the last item of the stack
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.