코드 길이의 두 배 출력 생성


85

도전

프로그램 길이보다 2 배 많은 바이트를 표준 출력에 쓰는 완전한 프로그램을 작성하십시오.

규칙

  • 프로그램은 ASCII 문자를 표준 출력에 기록해야합니다.

  • 출력 내용은 중요하지 않습니다.

  • 보너스를 충족하지 않는 한 바이트 단위로 측정 한 출력 은 프로그램 길이의 정확히 두 배 여야하며 바이트 단위로 측정해야합니다 .

  • 후행 줄 바꿈은 출력의 바이트 수에 포함됩니다.

보너스

프로그램은 선택적으로 숫자 n를 입력으로 사용할 수 있습니다. 그렇다면 출력은 정확히 n * program length바이트 여야합니다 . n 은 항상 양의 정수 라고 가정 할 수 있습니다 . 입력이 없으면 n기본값은 2입니다.

이렇게하면 점수에서 25 바이트를 뺄 수 있습니다.

최단 프로그램이 이깁니다.

제한 사항

  • 표준 허점이 없습니다.

  • 프로그램의 길이는 1 바이트 이상이어야합니다.

  • 길이를 변경하기 위해 소스 코드에 불필요한 공백을 추가하지 않아도됩니다. 마찬가지로 댓글도 포함되지 않습니다.

  • 보너스를 이행하지 않으면 프로그램은 입력을받지 않아야합니다. 보너스를 이행하면 정수만 입력해야합니다.

최저 점수 (바이트 단위의 프로그램 길이-보너스)가 이깁니다.

각 언어에 대한 최단 답변이 해당 언어에서 승리 합니다 .

리더 보드

다음은 일반 리더 보드와 언어 별 수상자 개요를 생성하는 스택 스 니펫입니다.

답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.

# Language Name, N bytes

N제출물의 크기는 어디에 있습니까 ? 당신이 당신의 점수를 향상시킬 경우에, 당신은 할 수 있습니다 를 통해 눈에 띄는에 의해, 헤드 라인에 오래된 점수를 유지한다. 예를 들어 :

# Ruby, <s>104</s> <s>101</s> 96 bytes

헤더에 여러 숫자를 포함하려는 경우 (예 : 점수가 두 파일의 합계이거나 인터프리터 플래그 페널티를 별도로 나열하려는 경우) 실제 점수가 헤더 의 마지막 숫자 인지 확인하십시오 .

# Perl, 43 + 2 (-p flag) = 45 bytes

언어 이름을 링크로 만들어 리더 보드 스 니펫에 표시 될 수도 있습니다.

# [><>](http://esolangs.org/wiki/Fish), 121 bytes


1
보너스로 출력이 정확히 n * program length바이트 여야 합니까, 아니면 최소값입니까?
xnor

2
정확해야합니다
Daniel M.

3
음수 점수를 처리하려면 코드 스 니펫을 수정해야합니다.
El'endia Starman

40
-25의 보너스는 기본적으로 마이너스 점수를 얻을 수 있기 때문에 일부 언어에서는 필수입니다. 앞으로는 백분율 보너스를 사용하거나 답변을 원할 경우 보너스로 질문하는 것이 좋습니다. 또는 보너스가 없습니다.
xnor

4
"입력이 제공되지 않음"에 대해 빈 문자열이 전달되었다고 가정합니까? 입력을 입력하지 않고 프로그램이 대기중인 사용자를 처리하는 방법을 알 수 없습니다.
xnor

답변:


138

HQ9 + , 2 바이트

QQ

출력

QQQQ

나는 그것이 금지되어 있지 않다고 생각합니다.


14
금지되지는 않았지만 그다지 중요하지는 않습니다. 잠깐, 8 개의 공감대는 어떻게 얻었습니까?
John Dvorak

58
@JanDvorak HQ9 +를 싫어하는만큼, 이것은 나에게 창조적 인 용도입니다. 이 사용법은 HQ9 +가 만들어 졌을 때 예상되지 않았으며, 이는 대부분의 다른 Hq9 + 프로그램에서 말할 수있는 것 이상입니다. 나에게서 +1
Digital Trauma

13
Q가“프로그램의 소스 코드”를 인쇄한다는 것을 몰랐습니다. 방금 Q를 인쇄했다고 생각했습니다.
Timwi

7
@ LegionMammal978 기술적으로 이것은 지속적인 출력 문제이므로 프로그래밍이 아닌 언어가 허용됩니다.
스파게티

3
이것은 120 표입니다. QQ통역사 입력 1,200 명
Stan Strum

95

셰익스피어, 768

네, 셰익스피어는 골프 언어가 아닙니다. 1,536 개의 공백을 출력합니다.

Rosencrantz and Guildenstern: A Series of Tedious Events.

Rosencrantz, a count of extraordinary determination.
Guildenstern, a spacy character.

Act I: The Long Conversation

Scene I: A Tortured Friendship

[Enter Rosencrantz and Guildenstern]

Rosencrantz:
 You are a gentle, noble, valiant, loyal, loving companion.

Guildenstern:
 You are nothing!

Scene II: Asking the Hard Questions

Rosencrantz:
 Speak your mind.

Guildenstern:
 You are as fair as the sum of yourself and a daisy. Are you as
 daring as the sum of a big, bold, fiery, feisty, rough, rowdy,
 ham-fisted, hawk-eyed, broad-shouldered, bright-eyed lad and a
 large, yellow, vicious, hairy, wild, scary, long-tailed,
 sharp-clawed, small-eared lion?

Rosencrantz:
 If not, let us return to scene II.

편집 : 256

알았어, 실제로 골프를 할게 위의 내용은 손으로 직접 작성했기 때문에 기존 셰익스피어 구현에서는 컴파일되지 않습니다 (그러나 정확성을 방어 할 준비가되어 있습니다).

아래는 spl-1.2.1에서 하나의 경고와 함께 C로 변환되며 512 공백을 출력합니다.

Ummm.Ajax,1.Puck,2.Act I:I.Scene I:A.[Enter Ajax and Puck]Ajax:You old old old old old cow.Puck:You are zero!Scene II:B.Ajax:Speak thy mind.Puck:You are the sum of you and a red cat.Are you as big as the square of me?Ajax:If not, let us return to scene II.

15
실제로 골프를한다면 +1이됩니다.
lirtosiast

1
이것이 어떤 방식의 whitchcraft입니까? 나는 그런 일이 존재하는지도 몰랐습니다 ...
Malavos

10
와우, 당신은 골프를 쳤다. 거룩한 피난처.
Malavos

2
@Malavos 난 그냥, 미안 해요 당신이 마법 맞춤법이 틀린 방법에 대해 농담 - 모두가 무엇을하는 것은 아마 괜찮 니
고양이

2
아니요, 공격적이거나 방어적인 것처럼 들리면 용서를 구합니다. 나는 단지 Futurama를 언급하고 있었다! :) 진지하게 말하지만, 나는 여전히이 대답에 놀랐습니다. 우리는 사이트에 더 많은 것들이 필요합니다.
Malavos

69

리콜, 17 바이트

................!

NOOP 16 개 그런 다음 디버거 !가 호출되고 메모리를 콘솔에 덤프합니다. 메모리가 비어 있지만 헤더 길이는 34 바이트입니다.

-- STATE DUMP --
----------------

여기에서 시도 하십시오 .


13
이것은 더 멋진 답변 IMO 중 하나입니다.
고양이

67

Mathematica REPL, 1 바이트

#

인쇄 #1합니다.


14
질문은 "완전한 프로그램 작성"이라고 말합니다. 이것은 단지 REPL 스 니펫입니다.
LegionMammal978

60

CJam, -17 바이트

r2e|i8,*

소스 코드의 길이 는 8 바이트 이며 보너스 는 -25 바이트 입니다.

CJam 통역사 에서 온라인으로 사용해보십시오 .

작동 원리

r         e# Read a token from STDIN.
 2        e# Push 2.
  e|      e# Logical OR; keep the token if it's not empty, 2 otherwise.
    i     e# Cast to integer.
     8,   e# Push [0 1 2 3 4 5 6 7].
       *  e# Repeat the array the corresponding number of times.

4
쓰레기. 잘 했어.
The_Basset_Hound

1
음수 바이트는 어떻습니까?
Nick T

3
@NickT 8 바이트 (소스 코드)-25 바이트 (보너스).
데니스

16
디스크 공간이 부족한 경우 수백만 개의 사본을 저장할 수 있습니다.
Robert Fraser

아니요, 메타 데이터가 긍정적이라고 생각합니다.
CalculatorFeline

47

파이썬 2.6, 10

print`-.1`

-0.1000000000000000120자인을 인쇄합니다 .

문자열 repr은 더 정밀함을 보여줍니다. print-.1그냥을 제공 -.1하고 13 자리의 정확도 만 print.1/3제공 0.0333333333333합니다.


5
이것은 더 이상 작동하지 않습니다 파이썬 2.7 또는 3.1.
Anders Kaseorg

@AndersKaseorg 그렇다면 repl.it 이 틀렸습니까?
mbomb007

2
@ mbomb007 분명히. GitHub는 이것이 유일한 잘못은 아니라고 제안합니다. Ideone은 CPython에 동의합니다.
Anders Kaseorg

다른 답변과 동일한 의견 : 21 줄의 출력을 제공하는 후행 줄 바꿈이 인쇄되지 않습니까?
Martin Ender

1
당신은 의미 print`+.1`합니까?
mbomb007

46

, 10 바이트

4 56111240

이것은 Befunge 프로그램으로 컴파일됩니다 (무차별 대입)

9k.@

실행할 때 다음 20 바이트를 생성합니다 (CCBI에서 테스트 한 후행 공백에 유의).

0 0 0 0 0 0 0 0 0 0 

Befunge 98에 익숙하지 않기 때문에이 사양을 몇 번 다시 확인해야했습니다.

  • k IP가 반복 명령으로 이동하여 의도 한 것보다 한 번 더 실행되어 나에게 꽤 깨진 것처럼 보입니다.
  • Befunge 98의 스택은 맨 아래에 0이 무한합니다
  • . 숫자로 출력 한 다음 공백으로 출력

18
...... 그냥 .... 할 수 없습니다.
Daniel M.

44

R, 3 2 바이트

암호

!0           # NOT FALSE

출력

TRUE

와우, 드디어 R

그것은 {}작동하는 것처럼 보이며 출력됩니다.NULL

보너스 33 16 바이트 :

암호

rep(1,number*16)

출력

# if number is not defined
> rep(1,number*16)                     
> Error: object 'number' not found     # output is 32 (or 2*16) bytes long error

# if number is defined
> number = 3                            
> rep(1,number*16)                     # output is 16*number bytes long
> 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

2
변수에 "숫자"라는 이름을 사용하는 것이 "소스 코드에 불필요한 공백을 추가하는"것과 동일하지 않기를 바랍니다.
Mutador

26

Matlab, 7 5 바이트

@flawr 덕분에 2 바이트 감소!

123;3

산출:

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

출력에는 10 바이트 가 포함 됩니다.newline ans = newline newline 3 newline


1
아무도 format compact기본값을
갖지

2
@sanchises :-) 예, Matlab의 환경 설정 방법에 따라 다릅니다. 그러나 format loose는 IS 기본 환경 설정
루이스 Mendo

2
어때요 123;4? 3 바이트가 짧습니다 =)
flawr

@flawr 좋은 생각이야! 직접 게시하십시오!
Luis Mendo

아니요, 귀하의 답변에서 너무 많은 영향을 받았습니다 =)
flawr

25

JavaScript, 2 바이트!

3 바이트 솔루션보다 짧습니다.

!0

true실행 후 반환 합니다.


2
이것은 REPL 환경에서만 작동합니다
Cyoce

21

파이썬 2, 11

print`id`*1

내장 id문자 의 문자열 표현 ( 22 자)을 인쇄하십시오 .

<built-in function id>

*111 개 문자에 코드를 얻는 것입니다. 당신은 또한 할 수 있습니다 print id;00.

더 지루한 대안 11은 다음과 같습니다.

print'1'*22
print 9**21

나는 복잡한 숫자를 가지고 놀았지만 불행히도 print.8/-9j하나의 문자가 짧습니다
Sp3000

이것으로 후행 줄 바꿈을 인쇄하여 출력 바이트 수를 23으로하지 않습니까?
Martin Ender

1
@ MartinBüttner이 규칙은 나중에 편집되었지만 print id,;1후행 줄 바꿈을 억제 하기에 충분하도록 규칙을 변경했습니다 . 후행 공백도 추가하지 않습니다.
xnor

@xnor print 9**21가 작동하지 않습니다. 21 자입니다. print 9**23그래도 작동
Koishore Roy

18

dc, 10-25 = -15

2?A*Ar^1-n

"입력 없음"에 대해 빈 줄을 사용합니다.

10 ^ (10 * n)-1을 계산합니다. 여기서 n은 입력이거나 입력이 비어 있으면 2입니다. 9필요한 길이 의 s 문자열을 인쇄합니다 .

  • 2 입력이 비어있는 경우 2를 스택으로 푸시
  • ? 입력을 스택으로 푸시
  • A스택으로 푸시 (10) (DC 단축키를 갖는다 A- F10 - 15)
  • * 두 번 튀기고 곱하기 (10을 곱한 값)
  • A 스택에 10을 밀어 넣습니다
  • r 상단 두 스택 요소 반전
  • ^ 지수 10 ^ (10 * 입력)
  • 1- 스택 상단에서 1 빼기
  • n 줄 바꿈없이 인쇄합니다.

멍청 아, 정말 똑똑해 그리고 코드 길이가 운이 좋으면 :) 그러나 어쩌면 시작하지 않은 것에 대한 작은 설명을 추가해야 할 것입니다. 그리고 줄 바꿈이 중요하다고 생각하므로 n대신에 사용해야 합니다 p.
daniero

17

TI 기본, 3 바이트

1ᴇ5

인쇄 100000합니다.


실제로 줄 바꿈이 중요하다고 생각하므로 01 바이트 만 할 수 있습니다 .
lirtosiast

1
어때요 ᴇ3? TI-Basic에는 개회식이 없기 때문에 @lirtosiast에 대해 회의적입니다.
Jakob

16

Brainfuck, 14 바이트

+++++++[....-]

이것은 약간의 수학 연습입니다. 의는의 수를 나타내는하자 +에 의한 코드 문자 a, 그리고 숫자 .로 문자를 b.

이 코드 a*ba아래에서 값까지 바이트를 출력 합니다 1(ASCII 이외의 바이트이지만 사양에 따라 정상으로 보입니다). 코드의 길이는 a+b+3입니다. 그래서 우리는

a*b = 2 * (a+b+3)

ab에 대해 다른 값을 시도 하면에 대한 최소값 a+b+3이 달성됩니다.

a = 4       or       a = 7
b = 7                b = 4

베테랑 brainfuck 프로그래머는 +[[>....]-<<+]옵션 을 발견합니다 .
orthoplex

@orthoplex 내가 당신의 코멘트를 읽을 때 나는 즉시 portmanteau'd brainfuck 및 프로그래머 : brainfucker
Poke

15

gs2 , -18 바이트

CP437 :W↕0!↨.2

육각 덤프 : 57 12 30 21 17 2e 32

WSTDIN에서 숫자를 목록으로 읽습니다. ↕0목록에 2를 추가 !하고 첫 번째 요소를 추출합니다. 그런 다음 ↨.(목록 )이 여러 번 [0,1,2,3,4,5,6]반복됩니다 ( 2).

이 데니스의 CJam 응답과 매우 유사 - GS2은 결합 ri한 바이트로.

참고 : gs2이 작업을 수행 하려면 구현 에서 버그를 수정 해야했습니다. 이전에 각 프로그램에는 숨겨진 개행이 출력에 추가되어 완전히 의도하지 않았습니다. 이 프로그램을 해결하려고 시도한 후에 만 ​​나타났습니다 (언어는 모든 문제에서 후행 줄 바꿈을 무시하는 무정부 상태 골프 용으로 설계되었습니다). 소금.


1
첫 번째 GS2 답변 카드에 맞는 문자가없는 것을 보았습니다!
Cyoce

14

펄 5, 16 바이트-25 = -9

$_ =$]x($_*2||4)

이것은 문제에 대한 이상한 접근 방식입니다.

-p명령 행 인수로 실행하십시오 .

더 많은 텍스트를 인쇄하기 위해 특수 변수를 사용하여 바이트 수를 줄이는 Perl 답변이 아래에 있습니다. 그래서 훨씬 더 자세한 특수 변수를 사용했습니다. 변수 이름이 2자인 8자를 인쇄합니다. 따라서, (16)의 바이트 카운트와 함께, 그 출력 (그 16 있도록 하나 개의 공백 패딩) 2 * $]여기서 $]으로서 인쇄 펄 버전 5.xxxxxx펄 버전에 의존한다. 입력 없이는 같게 그 네 번 인쇄 8*4또는 32이중 코드의 바이트 수이다.

나는 Perl을 좋아한다.


나는 이것이 빈 입력에 실패한다고 생각합니다. 규칙에 따라, 입력이 제공되지 않으면 배수는 기본적으로 2로 설정되어야합니다.
Alex A.

@AlexA. 젠장, 나는 그것을 그리워했다. 골프 코딩이 처음입니다. 들어오는 내용을 편집하지만 perl에서 더 창의적으로 수행하는 방법을 모르기 때문에 답변에 많은 문자가 있습니다. (
Codefun64

2
안녕, 프로그램 스크립트에 기본적으로 당신을 도울 수있는 몇 가지 더 팁 popshift에 작동 @ARGV(A에서 sub그들이 작업 @_) 그래서 당신이 뭔가를 할 수 좋아 $n=pop||2아래 첫 번째 코드 블록을 얻기 위해, 당신은이 ;}말에 거의 항상 }다른 것을 저장하기 만하면 됩니다. 당신이 더 많은 문자를 저장 도움이 될 뭔가 문자열 반복 연산자입니다 x고려 print 1x20... 또는 그 라인을 따라 뭔가 : 희망하는 데 도움이!
Dom Hastings

@DomHastings Man, 감사합니다! 나는 당신의 도움으로 총 2 바이트로 줄었습니다 :) 제안 해 주셔서 감사합니다.
Codefun64

1
나는 당신이 이것을 줄일 수 있다고 생각합니다 print"n"x(21*pop||42). 명령 행에서 실행perl -e'print"n"x(21*pop||42)' 3 | wc -c
hmatt1

14

Pyth , 10 9-25 = -16

Dennis의 -1

**N9?zvz2

[입력] * 9 따옴표를 입력하거나 입력이 비어 있으면 2 * 9를 인쇄합니다.

isaacg는 여기에 더 짧은 대답이 있습니다

Pyth , 1 바이트

T

인쇄 10합니다. 10으로 초기화되는 내장 변수입니다.


.x가 오류와 함께 작동하면 유용합니다. 왜 그렇지 않은가에 대한 정당성이 있습니까?
lirtosiast

2
내 최선의 추측은 Q실제 코드가 실행되기 전에 Pyth가 입력을 평가하게하는 것입니다. **N9.xvz2예상대로 작동하지만보다 짧지 않습니다 **N9?zvz2.
Dennis

2
후행 줄 바꿈은 출력의 바이트 수에 포함됩니다. T출력 10과 개행. 사용 d, 그것은 줄 바꿈이 추가되는 공간입니다
Stan Strum

9

마카로니 0.0.2 , 23 자

print tobase pow 32 9 2

32 9 를 이진수로 인쇄 1000000000000000000000000000000000000000000000합니다.이 문자는 후행 줄 바꿈없이 46 자 길이 ( ) 로 편리하게 나타납니다 .


9

자바 스크립트, 4 바이트

~$ cat main.js
+1/0
~$ nodejs main.js
Infinity

나는 이것이 ES6없이 가능한 가장 짧은 JS 솔루션이라고 생각합니다 : P


어떤 NodeJS 버전이 있습니까? 이것은 내 것과 함께 작동하지 않습니다.
Dennis

1
Firefox 콘솔에서도 작동합니다.
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

1
후행 줄 바꿈은 출력 길이에 포함되어야합니다.
lirtosiast

v0.10.40인쇄 명령이 없기 때문에 Node.js 는 아무것도 인쇄하지 않습니다. Node.js의 다른 버전이 있습니까 아니면 라인의 평가를 인쇄하는 쉘에서만 작동합니까? (이 경우이 답변이 유효하지 않다고 생각합니다).
Nateowami

4 바이트? 실제로 올바른 크기로 만드십시오.
Star OS

9

C, 27 25

main(){printf("%50f",0);}

2 바이트를 시작해 주셔서 감사합니다 @Titus


그리고 C에서 경쟁하지 않는 16 바이트 솔루션의 경우 https://codegolf.stackexchange.com/a/111330/16513으로 이동하십시오.

^ 오류 코드가 컴파일러에 따라 달라질 수 있기 때문에 비경쟁이라고 말합니다. 또한 해당 솔루션에서 GCC를 사용하고 있습니다. 또한 그것이 규칙 1을 위반하는지 여부를 확신하지 못합니다. 아마도 그렇게 생각합니다.


1
나는 그것이 유효한 C 프로그램으로 계산되지는 않지만 main(){printf("%0.XXf",0);}작동 한다고 생각 합니다.
wefwefa3

2
@Zereges 아니요, C에는 일반적으로 적절한 요소없이 물건을 사용할 수있게하는 "암시 적 선언"규칙이 있습니다 #include. 컴파일러는 경고를 내고 때로는 충돌을 일으키지 만 일반적으로 작동 합니다.
아나톨리 크

1
@AlbertRenshaw 또한 여기에서 작동한다고 생각하지 않습니다 .
Zereges

1
27 * 2! = 38입니다.
mbomb007

1
@ 제 레지스. 이 코드는 정의되지 않은 동작을 나타내지 않습니다. "암시 적 선언"및 "암시 적 반환 유형"기능은 최근 표준에서 더 이상 사용되지 않지만 그 사용법은 여전히 ​​허용되며 결과가 잘 정의되어 있습니다. 이러한 기능을 사용하면 정의되지 않은 동작이 발생할 수 있지만이 코드에는 해당 기능이 포함되지 않습니다.
Peter

7

V , 2 바이트

이 출력

ÿÿÿÿ

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

설명

이것은 정말 해킹 적 인 답변이며 V의 내부를 악용하여 작동합니다. 본질적으로 작동하는 방식은 ÿV의 명령으로 프로그램이 끝났다는 신호이며 보류중인 명령은 완료되어야합니다. 그렇지 않으면 일부 암시 적 결말이 작동하지 않으며 해석이 더 자주 중단됩니다. 이 명령은 프로그램 종료시 자동으로 여러 번 전송되며 대부분 출력에 영향을 미치지 않습니다.

é단일 문자를 삽입하는 명령입니다. 그러나 원시 바이트를 가져 와서 ÿ"end"로 해석하지 않고 "삽입해야하는 문자"로 해석합니다. 이 문자를 1 개 대신 4 번 삽입합니다.


7

bash, 11 바이트

다음은 데이터 압축 도구의 유쾌한 사용법입니다 :) ...

gzip -f<<<2

다음은 출력의 16 진 덤프 (22 바이트)입니다.

0000000: 1f 8b 08 00 e3 ce 32 59 00 03 33 e2 02 00 90 af  ......2Y..3.....
0000010: 7c 4c 02 00 00 00                                |L....

22 바이트의 "확장 ASCII"(예 : 문자 당 8 비트)를 출력합니다. 질문 게시물에 대한 의견을 읽으면 OP의 ASCII 정의를 충족시키는 것 같습니다.
Wossname 2016 년

TIO 나는 16를 얻었으나, 내 리눅스 머신에, 나는 34 있어요
스탠 스트 럼

@StanStrum, TIO가 무엇인지 모르겠지만 Linux에서 34는 이상합니다. 아마도 다른 스위치를 정상으로 사용하기 위해 gzip 별칭이 있습니까?
Wossname

그것이 사실인지 모르겠지만, 이상하게 보입니다. 이 프로그램을 @Wossname
Stan Strum에서

1
나는 그 사람이 아니며, 새로 얻은 129 명의 담당자 tyvm을 이용하지 않을 것입니다. Linux 설치에서 작동하는 버전을 만들 수 있는지 확인할 수 있습니다.
Stan Strum

6

dc, 19-25 = -6

2?19*[1n1-d0<l]dslx

숫자를 가져 와서 (2는 백업으로 스택에 푸시 됨) 19를 곱합니다. 1줄 바꿈을 인쇄 하지 않고 숫자를 줄입니다. 숫자가 0보다 큰 루프.


6

C ++, 80 바이트

#include<iostream>
int main(){int i=0;while(i<20){std::cout<<&i;i++;}return 0;}

개행 문자는 두 문자입니다. (원치 않는 경우 동일한 바이트 수로 돌아가려면 i <20을 i <= 19로 변경하십시오.)

샘플 출력 (매번 변경됨)

0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C0088FA0C

동일한 8 문자 메모리 주소 20 번.


몇 가지 골프 힌트 : for루프는 루프보다 짧고 while버팀대를 떨어 뜨릴 수 있으며 사용하기가 약간 저렴 하고 문자열 cstdioprintf있으며 아무것도 반환 할 필요가 없습니다.
Luke

63 바이트로 접근 방식을 제거 할 수 있습니다. #include<iostream> int main(){for(int i=10;--i;)std::cout<<&i;}그러나 약간 다른 접근 방식으로 이미 짧은 대답이 있습니다.
movatica

6

CJam, -9

q_,{i}{;2}?G*'X*

설명

  • q_,

전체 입력을 읽고 밀어 넣은 다음 길이를 밀어 넣습니다.

  • {i}{;2}?

입력 길이가 0을 초과하면 정수로 변환하십시오. 그렇지 않으면 입력을 팝하고 2를 누릅니다.

  • G*

16 (프로그램 길이)을 누른 다음 입력이 없으면 입력에 2를 곱합니다.

  • 'X*

X를 밀어 스택의 상단에 곱합니다.


@ThomasKwa 으악. 몇 초 안에 업데이트 중입니다.
The_Basset_Hound

쉼표가 필요하지 않습니다,하지만 당신은 피할 수 "만약"모두 당신이 할 경우 논리적 "또는" q2e|i당신에게 당신이 원하는 번호를 줄 것이다
aditsu

또한 'X 대신 S를 사용할 수 있습니다. 유일한 문제는 출력을 선택할 때까지 출력을 볼 수 없다는 것입니다 (오프라인으로 실행하고 파일로 리디렉션하면 문제가되지 않습니다)
aditsu


조건부로도이를 줄일 수 있습니다. 빈 문자열은 이미 거짓이므로 길이를 계산할 필요가 없습니다. 빈 문자열은 출력에 기여하지 않기 때문에 스택에서 빈 문자열을 팝 할 필요가 없습니다. 또한 yo는 else 분기의 괄호를 피할 수 있습니다. 나는 대답 중 하나를보기 전에 이것을 생각해 냈습니다 r_{i}2?SB**.
Reto Koradi

6

> <> , 19 + 2 (-v 플래그)-25 = -4 바이트

l?!2f4+*v
-1o;!?::<

여기에서 테스트하십시오!

감사합니다 Cole and Sp3000

먼저 스택 길이가 0 인 경우 스택 길이를 확인합니다. 이 숫자에 21 (코드 길이)을 곱한 다음 해당 숫자의 유니 코드 표현을 출력하고 1 씩 줄입니다. 0까지 반복됩니다. (브라우저가 표시하지 않으므로 문자를 보려면 출력을 검사해야합니다)


1
네, 대답을 망치게해서 미안합니다. (하지만 기분이 나아지면 답보다 짧습니다.) 편집 : whoops가 너무 빨리 Enter 키를 누르십시오. 현재 상태 그대로의 항목은 "n은 항상 양의 정수라고 가정 할 수 있습니다. 입력이 제공되지 않으면 n은 기본적으로 2로 설정해야합니다." 또한 너무 많은 문자를 인쇄 할 수 있다고 생각합니다 (14에서 0이 아니라 14에서 0으로 15 자). 내가 맞다 l0=?2f6+*v면 첫 번째 줄과 1-::0=?;o>두 번째 줄이 올바르게 해야합니다.
cole

흠, 무슨 뜻인지 모르겠어 어떤 경우에도 0을 인쇄해서는 안됩니다. 이 문자 카운터 를 적어도 28 자로 사용하는 초기 스택 출력 (편집 : 붙여 넣을 수없는 것들)으로 2를 넣으십시오 .
torcado

당신이 지금 무슨 말을하는지 이해합니다. "프로그램은 선택적으로 숫자 n을 입력으로 취할 수 있습니다"를 해석했습니다. 입력이 2이면 답을 편집하겠습니다. 감사합니다! (또한 숫자 대신 문자열을 사용하여 일부를 저장할 수 있습니다)
torcado

특히 <> 인 경우 도와 드리겠습니다.
cole

2
?!보다 일반적으로 더 나은0=?
SP3000

6

자바 스크립트 (ES5), 68 바이트-25 보너스 = 43

alert(Array(1+(+prompt()||2)).join(document.scripts[0].textContent))

(브라우저가 보안상의 이유로 스 니펫을 실행할 수없는 경우이 바이올린을 시도하십시오 http://jsfiddle.net/thePivottt/c3v20c9g/ )

이 스크립트는 적어도 DOM3 (포함 Node.textContent) 및 ECMAScript 5 (또는 이전 버전)를 따르는 브라우저에서만 작동합니다 . 나는 가능한 한 표준을 준수하고 호환되도록 노력했습니다. 또한 스크립트가 script문서 의 첫 번째 요소에 있다고 가정합니다 .

그것은 실제로 스크립트 자체의 여러 복사본을 연결해, 꽤 멋진을 . SE의 스 니펫 도구는 스크립트 주위에 여분의 공백을 둡니다. 우리는 공백을 무시할 수는 .trim()있지만 SE의 방해없이 프로그램이 완벽하다고 생각할 필요는 없습니다. 이 HTML5 파일을 완벽하게 실행하려면 파일을 저장하십시오.

<!DOCTYPE html>
<html>
  <head>
    <title>Minimalist HTML5 page</title>
    <script>alert(Array(1+(+prompt()||2)).join(document.scripts[0].textContent))</script>
  </head>
</html>

이 스크립트는 사용 prompt하고 alert있기 때문에 console.log대부분의 최신 브라우저를 사용하는 경우에도 표준의 일부가 아닙니다. 전달 된 반복 수가 유효하지 않거나 비어있는 경우 기본값은 2입니다. 입력이 10 진수 인 경우 유효하지 않은 배열 길이로 인해 프로그램이 충돌합니다.

이 코드는 JavaScript의 몇 가지 흥미로운 기능을 사용합니다.

  • Array(1+(+prompt()||2))

    • Array(INT) INT 셀의 배열을 만듭니다.

    • +prompt()입력을 받아 숫자로 바꿉니다. 입력을 문자열로 전달하면 Array함수는 단순히 단일 요소 배열로 래핑합니다.

    • +prompt()||2입력이 true 이면 입력을 리턴하고 그렇지 않으면 2를 리턴합니다.

    • 이 전체 코드는 N 개의 빈 요소 배열을 작성합니다. 여기서 N은 요청 된 반복 횟수보다 하나 이상입니다.

  • .join(document.scripts[0].textContent)

    • 배열의 join(STRING)메소드는 모든 셀을 연결하여 제공된 STRING을 값 사이에 배치하여 문자열을 작성합니다. 이 프로그램 에는 배열에 N + 1 개의 요소가 있거나 정확히 N 개의 스팟이 있습니다. 결과는 제공된 STRING의 N 배를 포함하는 문자열입니다.

    • document.scripts[o]<script>문서 의 첫 번째 요소입니다.

    • textContentNode인스턴스는 그들과 스크립트를 포함하여 자신의 자식 노드, 내부에있는 전체 텍스트를 반환합니다.


ES6을 사용 str.repeat하고 코드 자체를 출력하는 경우 점수가 26으로 낮아 지지만 너무 지루합니다 .P
Domino

음, 26이 어디에서 왔는지 모르겠는데 이제 33 살이됩니다. 잠을 좀 자야 할 것 같습니다.
Domino Domino

일부 브라우저 설정은 스 니펫에서 프롬프트를 사용하지 못할 수 있습니다. 실행하기 위해 저장해야 할 수도 있습니다.
Domino 님

6

자바 스크립트 ES6, 33-25 = 8

(a=2)=>Array(a*33).fill(0).join``

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


이 코드를 콘솔에서 실행할 수없는 것 같습니다. 맞아? "Uncaught SyntaxError : Unexpected token =>"
Malavos

@Malavos 최신 Firefox와 같은 es6 호환 브라우저가 필요합니다. Chrome은 기본 인수 afaik을 지원하지 않습니다
DankMemes

UCBrowser를 사용하고 있지만 맞습니다! 어쨌든 크롬과 도마뱀을 기반으로합니다. 매일 밤 그것을 시도, "000000000000000000000000000000000000000000000000000000000000000000"를 얻었다. 좋은! 코드를 설명해 주시겠습니까? 나는 초보자입니다.
Malavos

2
@Malavos 하드 코딩 된 코드 33는 실제로 코드 길이입니다. 이 길이의 새로운 배열 생성 을 채우고 상기 OP 당 2 디폴트 입력 매개 변수, 그리고 결합 된 문자열을 반환한다. 33*aa
DankMemes

2
하나 개의 추가 요소 배열을 만들면 당신은 가입으로 채울 수 Arrary(1+a*<length>)join`0`
숀 H

5

줄리아, 42 바이트-25 = 17

print("@"^42((r=readline())>""?int(r):2))

STDIN에서을 사용하여 줄을 읽습니다 readline(). 비어 있으면 (즉, 입력이 제공되지 않은 경우) n 은 정수로 변환 된 입력으로 정의됩니다. 그렇지 않으면 , n은 2. 우리는 다음 42 개 인쇄입니다 n은 @ STDOUT에들.


5

펄, 18-25 = -7

print$=x(<>*9||18)

특수 변수 $=aka $FORMAT_LINES_PER_PAGE는 수명을로 시작 60하므로 바이트 출력의 절반만큼만 복제하면됩니다.


1
나는 매우 비슷한 대답을했다 : print$=x9x(pop||2)nice!
Dom Hastings
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.