네 91 줄입니다


50

yescoreutils의 길이91 줄입니다 . 그들 중 대부분은 주석입니다,하지만 여전히 WAY 너무 오래.

2019 년 9 월부터 수정 : 소스 파일은 지난 5 년 동안 증가했으며 이제 126 줄입니다.

다음을 모방하는 프로그램을 작성하십시오 yes.

  • stdout"y \ n"의 무한 스트림으로 출력
  • 거기에 과정을 죽이는 것보다 다른 중지 할 수있는 옵션이 있어야합니다 SIGKILL:하지만 SIGINTSIGPIPE괜찮
  • "y"또는 "\ n"또는 해당 ASCII 값 (121, 0x79, 0171, 10, 0xA 또는 012)을 사용할 수 없습니다

최단 답변이 이깁니다.

보너스:

  • stdin"y"대신 문구를 받아 인쇄 할 수 있다면 코드 길이에서 10을 빼십시오 (그러나 여전히 줄 바꿈 포함).

13
" "y "또는"\ n " "을 사용할 수 없습니다. "문자열 리터럴을 사용 y하거나 \n내부에 사용할 수 없습니다"로 읽어야 합니까?
apillers

12
관련 메모에서 GNU의 true.c길이는 80 줄입니다.
Dennis Williamson

6
@DennisWilliamson 비슷한 관련 메모에서 false.c의 길이는 2 줄입니다 ....; _;
LordAro

6
coreutils yes는 아닌 명령 줄에서 선택적 인수를 사용합니다 stdin.
Brian Minton

7
@MrLore : 그들이하고있는 다양한 것들을 지속적으로 확인하도록 요구할 수있는 다른 프로그램으로 파이프하기 위해, 당신은 y스스로를 타이핑 할 필요가 없습니다 .
marcus erronius

답변:


37

CJam, 13 바이트-10 = 3

l_'x)?{_oNo}h

온라인 인터프리터는 프로그램이 종료 된 후에 만 ​​리턴하므로 Java 인터프리터 를 사용해야 합니다 .

Ctrl-C를 눌러 SIGINT로 프로그램을 중단 할 수 있습니다. STDIN에서 행을 읽고 해당 행을 인쇄하거나 y입력이 비어있는 경우 인쇄합니다 .

설명

l             "Read line from STDIN.";
 _            "Duplicate.";
  'x          "Push character x.";
    )         "Increment to get y.";
     ?        "Ternary operator. Replaces line with y if it was empty.";
      {    }h "Repeat while true. Leaves condition on the stack, which is the output string.";
       _o     "Duplicate line and print.";
         No   "Push string with newline and print.";

OP를 명확히 한 후 다음 사항을 더 자세히 설명합니다.

l{_o9c)o1}g

OP가 내 의견에 대답 할 때까지 제출 업데이트를 기다릴 것입니다.


16
나는 당신의 프로그램 /no/i이 도전하는 것을 고려 하여 일치하는 것을 좋아 합니다.
Kevin-Reinstate Monica

20

Brainfuck-38 바이트

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

+-<>.,[]어쨌든 언어의 모든 의미있는 문자 이기 때문에 10 또는 121을 사용하지 않지만 매우 순진하게 계산합니다 (0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 10, 10 * 12 + 1 = 121).

이것은 아마도 통역사에 달려 있지만 ^C내 컴퓨터에서 죽습니다 .

Brainfuck-(63-10) = 53

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

@fry 나는 그런 식으로 39 이하로 그것을 얻을 수 없었다. 어쨌든 10이 필요하므로 1에서 120을 더하거나 11에서 1을 빼고, 전자를 수행하는 것이 더 짧습니다.
undergroundmonorail

P : 미안, 10 재사용 그 후 네, 알
FryAmTheEggman

10 * 12 + 1 대신 11 * 11이 아닌 이유는 무엇입니까? 나는 그것이 당신에게 숯을 구할 수 있다고 생각합니다.
ProgramFOX

@ pro 그런 식으로 39 미만으로 얻을 수 없었습니다. 어쨌든 10이 필요하므로 1에서 120을 더하거나 11에서 1을 빼고, 전자를 수행하는 것이 더 짧습니다.
undergroundmonorail

@undergroundmonorail 아, 알겠습니다.
ProgramFOX

18

파이썬 3, 27 바이트

적어도 CPython 및 Jython에서 작동합니다.

while 1:print(str(help)[1])

SIGINT가 중지합니다.


18
그것을 python2로 만들고 짧게 할 수 있습니다 while 1:print`help`[1].
undergroundmonorail

4
하하, 좋아 나는 파이썬에서 백틱 연산자가 "사용"되었다는 것을 완전히 잊었다. :)
pgy

당신은 chr(11**2)또한 몇 문자를 저장하는 데 사용할 수 있습니다
user1354557

2
@RamchandraApte 귀하는 사용할 수 없습니다 121.
Jonathon Reinhart

17

놀라운 14 바이트

0978
]]/\++
!!

이것은 매우 간단합니다. '/ \'장치는 왼쪽과 오른쪽에 두 개의 사본을 배치하고 오른쪽은 증분 한 ++다음 보드에서 떨어져 인쇄됩니다. ]]STDIN이 비어 있지만, 그렇지 않은 경우는 STDIN의 첫 번째 바이트가 떨어질 수 있습니다 경우 장치는 오른쪽에있는 대리석을 푸시합니다. 그런 다음 !!장치 를 트리거 하여 보드를 종료합니다. stdin에 입력 할 때까지 y가 인쇄됩니다.

이것은 파이썬 인터프리터에서만 작동합니다.


17

Pyth, 10 9 6 바이트 - 10 = 0 -1 -2

#|zePG

나는 내가 만족하는 것을 얻기 위해 오랫동안 노력 해왔다. 기본적으로

#      = while True
(implied print)
|      = or
z      = (automatically initialized from stdin)
ePG    = second-to-last lowercase letter = 'y'

"z"변수는 stdin에서 초기화 된 후 그 값이 사용됩니다. 명시 적으로 작성하지 않고 ASCII 값을 얻는 짧은 방법을 찾았습니다.
swstephe

문자를 저장하기 위해 "^ 11 2"에서 "^ hT2"로 전환했습니다.
swstephe

안녕하세요 swstephe, 다른 언어 사용자를 만나게되어 기쁩니다! 반 호스의 커플 : #에 동일한 기능을 가지고 W1, 그리고 ePG캐릭터 얻기 위해 훨씬 짧은 방법입니다 y이상을 C^hT2.
isaacg

감사합니다. 변경 사항을 적용하겠습니다. 이 골프 물건에 아직도 새로운. 나는 Pyth를 좋아하지만, 약간의 문맥 기능과 비트 조작이 있었으면 좋겠다.
swstephe

13

C #, 81 78 76 바이트

다른 언어와 경쟁 할 수는 없지만 어쨌든 여기 있습니다 :

class A{static void Main(){for(;;)System.Console.WriteLine((char)('x'+1));}}

Ctrl+ 를 눌러 SIGINT로 종료 할 수 있습니다 C.

보너스를 얻는 데 10 바이트 이상이 걸리기 때문에 보너스가 없습니다.


사용할 수 없습니까 while(1)? 두 문자를 저장합니다.
칫솔

@ toothbrush 나는 그것을 시도했지만 C #에서는 작동하지 않습니다.
ProgramFOX

1
for(;;) 작동 해야 합니다.
core1024

2
어떤 이유로 든이 코드에는 여전히 포함 y되어 있습니다. 검사하십시오 System.
TheNumberOne

4
@TheBestOne System제거 할 수 없습니다. .NET Framework의 최상위 네임 스페이스이므로 모든 클래스 / 다른 네임 스페이스가 있으므로 리플렉션은 도움이되지 않습니다. 그러나 그것이 유효하지 않은지 확실하지 않습니다. Ramon의 의견 : "y 또는 \ n으로 평가되는 것은 없음"을 참조하십시오. 이 평가되지 않습니다 y. Ramon에게 이것이 유효한지 묻는 질문에 대한 의견을 남기고 있습니다.
ProgramFOX

10

자바, 178

class C{public static void main(String[]a)throws Exception{for(char c='x'+1;;)((java.io.PrintStream)Class.forName("java.lang.S"+c+"stem").getField("out").get(null)).println(c);}}

인쇄가 필요 System하지만 y문자는 금지되어 있습니다. 그러므로 저는 반사를 사용해야했습니다.



당신은을 절약 할 수 있습니다 ;넣어 char c='x'+1;for루프 선언, 그래서 for(char c='x'+1;;)당신은 어쨌든 거기에 빈 세미콜론이 있기 때문에
corsiKa

@corsiKa 좋은 지적입니다.
Ypnypn

10

펄 : 18 바이트-10 = 8

문자열은 STDIN에서 온 것입니다.

$_=<>;{print;redo}

3
y\nSTDIN으로부터 입력을받지 못하면 반복적으로 인쇄됩니까 ? 그렇지 않으면 제대로 모방되지 않습니다 yes.
vurp0

@ vurp0 yesSTDIN결국 입력을받지 않습니다 :)
core1024

1
그것은 아니지만, 골프 골프 질문은 입력을받지 못하면 반복적으로 인쇄해야한다고 지정했습니다 y\n.
vurp0

2
@ vurp0 어디서? 스트림에서 읽는 프로그램은 입력하지 않고 정지됩니다.
core1024

@ vurp0 질문에 대한 OP의 의견을 참조하십시오.
nyuszika7 시간

9

루비, 30 23 18 바이트

loop{puts ?x.succ}

Ctrl+ 를 눌러 SIGINT로 종료 할 수 있습니다 C.

감사합니다 manatwork 개선을 공유!


1
loop{puts [*?x..?z][1]}– 23 문자 loop{puts ?x.succ}– – 18 문자
manatwork

@manatwork 감사합니다! 업데이트되었습니다.
ProgramFOX

8

펄, 26 바이트

{print chr$=*2+1,$/;redo}

인수의 사용자 정의 입력 ( yes실제로 작동 함), 22 바이트 -10 = 12

{print @ARGV,$/;redo}

stdin의 사용자 정의 입력, 22 바이트 -10 = 12

while(<>){print;redo}

@mar Nitz의 프로그램은 길이가 14 바이트에 불과하며 링크에 매우 높은 의견이 있습니다. 이것은 나에게 합법적 인 것 같습니다.
undergroundmonorail

아 잠깐만, 나는 "당신은 \"y \ "를 사용할 수 없습니다"라는 질문을 보지 못했습니다. 이건 나쁜
undergroundmonorail

맞습니다. 수정
Nitz

6

C, 64 55 53 45 40-10 = 30

main(int c,int**a){for(;;)puts(a[c>1]);}

프로그램에 "y"라는 이름을 지정하고`y` 만 사용하여 호출해야하므로 $ PATH에 있어야하지만 첫 번째 codegolf입니다.)

대안 :

C, 30 (+ 1 파일 이름)

main(){for(;;)puts(__FILE__);}

존경하는 동료 @Matt Windsor와 같은 기술을 사용

  • 편집 : no \ n 문자가 점점 작아지는 것으로 나타났습니다.
  • EDIT2 : "int"가 "char"보다 짧습니다.
  • EDIT3 : 해당 변수가 전혀 필요하지 않았습니다.
  • EDIT4 : 약간 정의되지 않은 약간의 행동은 누구에게도 상처를주지 않습니다.
  • EDIT5 : 대체 버전 추가

5

리눅스 배쉬, 33-10 = 23

read a; while :; do echo $a; done

Ctrl+ 를 눌러 SIGINT로 종료 할 수 있습니다 C.


한 줄만 읽고 같은 줄을 반복해서 인쇄해야합니다. 프로그램은 없습니다 yes하지만 cat프로그램.
jimmy23013

나의 나쁜, 나는 일의 일 후에 그것을 시도하지 않아야했다.
Orace

어때read a;for((;;));{ echo $a;}
core1024

5

녹, 52 자

fn main(){loop{println!("{}",'Y'.to_lowercase())}}

yRust에서 건방진하지 않고 멋진 컴퓨팅 방법이 아닌 것 같습니다 . 문자를 안전하게하는 일을 너무 잘했습니다. 나는:

  • 에 리터럴이 아닌 문자열을 제공 할 수 println!없으므로 트릭이 허용되지 않습니다.
  • 'x'Rust 문자는 숫자가 아니기 때문에에 1을 더할 수 없습니다 .
  • ROT13을 사용할 수 없습니다 (Rus의 표준 라이브러리에 ROT13이없는 이유는 무엇입니까?);
  • 믿을 수 없을 정도로 장황하고 52c를 넘지 않고 C 문자열로 삭제하거나 숫자에서 문자로 변환하는 등 안전하지 않은 작업을 쉽게 수행 할 수 없습니다.

읽을 stdin때 오류 처리 = 3이 필요 하기 때문에 코드 보너스 가치가 없습니다.

필자가 찾을 수있는 많은 코드 축소는 컴파일러 환경에서 점점 규칙을 위반하는 일을하는 것과 관련이 있습니다.

녹, 44 자 (파일 이름은 1 자 이상)

fn main(){loop{println!("{:.1}", file!())}}

아래에서 더 이상 사용되지 않습니다. 소스 파일 의 이름은 로 시작해야하기 때문에 이것은 아마도 계산되지 않습니다 y.

편집 : 녹, 36 문자 (35 소스, 1 파일 이름)

fn main(){loop{println!(file!())}}

위와 같이 파일 호출해야합니다 y( y.rs, y). 유머러스하게 Rust는 바이너리로 소스를 덮어 쓸 것입니다! 적어도 내 컴퓨터에서는 바이너리가 그 후에 작동합니다.

녹, 37 자 ( env K='y'플랫폼에서 + 이상 )

fn main(){loop{println!(env!("K"))}}

이 사람은 더 악화입니다 : 환경 변수를 설정해야 K하기 y시간을 컴파일 .

편집 : 당신이 설정 한 경우 Ky\n, 당신은 떨어질 수 ln에을 println!의 그랜드, 총 35 개 문자 및 여러 facepalms :

fn main(){loop{print!(env!("K"))}}

특정 파일 이름이나 컴파일러 플래그를 요구하는 일반적인 정책은 바이트 수에 포함하는 것입니다.
Martin Ender

@ MartinBüttner 박람회에 충분합니다. 이상하게도, 녹은 코드 골프에 가장 적합한 언어가 아닌 것 같습니다 :: P
Matt Windsor

당신은 x패션 에 하나를 추가 할 수 있지만 여전히 짧지는 않습니다 :(b'x' + 1) as char
Shepmaster

5

리눅스 배쉬-19 바이트

/ usr / bin / yes가 없거나 / usr / bin / xes 또는 / usr / bin / zes가없는 경우 부정 행위가 발생하거나 실패 할 수 있습니다.

/usr/bin/[x-z]es $*

나는 그것이 "y로 평가되는 것은 없다"라는 규칙을 위반하고 있지만 요구 사항을 충족한다고 생각합니다. 그리고 yes실제로 실행 하여 모방 하는 것은 yes규칙에 위배됩니다.

이것은 11 바이트로 낮추기 위해 조금 최적화 될 수 있습니다 (작동하기는 쉽지 않지만).

/*/*/?es $*

코드에 10 바이트 이상을 추가하지 않고 stdin에서 문자열을 읽음으로써 10 점 보너스를 얻는 방법을 알 수 없었습니다.


2
/*/*/?es `line` 또는 /*/*/?es `head -n1` 없는 경우 /usr/bin/line.
jimmy23013

2
또는 sed q를위한 line.
jimmy23013

5

dc, 12

[30986Pdx]dx

출력 만 y\n. stdin에서 읽지 않으므로 보너스가 없습니다.

30986은 0x790A입니다 (예 : "y \ n"). 이 P명령은 단순히 숫자를 기본 256으로 변환하고 각 기본 256 자리에 해당하는 문자를 인쇄합니다.


30986은 어떻게 평가 y\n됩니까?
nyuszika7 시간

나는 P한 번에 두 개 이상의 캐릭터를 할 수 있다는 것을 알았지 만 몰랐습니다.
nyuszika7 시간

5

공통 리스프 : (30-10) = 20

(format t"~@{~a~%~:*~}"(read))
  • (read) 입력 스트림에서
  • 출력 스트림으로 인쇄 : (format t ... )
  • 모든 format인수를 반복합니다 (여기서는 하나만).~@{ ... ~}
  • 루프 내부에서 각 인수에 대해

    • 인쇄 인수 ~A다음에 개행~%
    • 현재 요소 를 이전 요소 로 되감기 ~:*(무한 루프)

을 사용하여 루프를 끊을 수 있습니다.이 Ctrl+C옵션은 재시작 옵션 (계속 / 중단)에서 오류를 나타냅니다.



3

루비, 27 바이트-10 = 17

보너스가있는 @ProgramFOX의 솔루션입니다 (보너스 질문을 해결하려면 9 바이트가 걸렸습니다).

loop{puts ARGV[0]||?x.succ}

3

dc, 21 바이트-10 = 11

C1st?st[ltP[]ps0dx]dx

[]예를 들어 [no], ?입력을 dc코드 로 실행하는 유일한 방법 이기 때문에 입력을에 래핑해야 합니다.


C2대신 사용할 수 있습니다 122. 사실 나는이 주장 122 1-으로 대체 될 수 C1C1명시 적으로 질문에서 금지되지 않는다
디지털 외상을

3

코모도어 64 기본 : 14 13 바이트

1?C|(11↑2):R╭

평소와 같이, 나는 PETSCII에서 유니 코드로 존재하지 않는 문자를 대체했습니다. |표현하기 위해 사용되는 SHIFT+H반면,이 나타낸다 SHIFT+U. 기본 Commodore 문자 세트가 'y'로 표시되는 문자가 아닌 ASCII 'y'(바이트 값 121)를 출력합니다.

BASIC은 배우기 쉽고 영어와 비슷한 프로그래밍 언어입니다. 많은 초기 방언에있는 바로 가기 키를 입력하면 Perl보다 짧고 읽기 어려운 것을 얻을 수 있습니다.

편집 : "shifted mode"에서는 소문자 "y"가 10 진수 값 89로 인코딩되어 2 바이트가 짧아집니다. ASCII가 아닌 문자 집합을 사용하여 "ASCII 값을 사용할 수 없음"규칙을 사용하면 그러나 속임수.

1?cH(89):rU

유니 코드에 존재하는 모든 💩를 사용하면 C64에서 사용하는 전체 문자 세트가 어딘가에 없을 것입니다.
kasperd

@kasperd, 유니 코드의 상자 그리기 문자는 대부분 IBM "DOS"세트에서 가져오고 문자 셀의 중심을 통과합니다. PETSCII는 훨씬 더 큰 세트를 가지고 있으며, 대부분 문자 셀의 가장자리를 사용합니다. U + 2502는에 의해 생성 된 세로 막대의 근사치 SHIFT+H일 수 있지만 파이프 문자를 입력하기가 더 쉽습니다. `SHIFT + O '에 의해 생성 된 "상단 및 좌측 가장자리 라인"에 해당하는 것은 없습니다
Mark

매우 훌륭하지만 "Goto 1"을 "Run"으로 바꾸면 1 바이트를 절약 할 수 있습니다. "1? cH (89) :
rU

@LeFauve, 감사합니다. 또한 ASCII 방출 버전에도 적용했습니다.
Mark

3

AWK, 38 바이트

BEGIN{for(;;)printf("%c%c",60+61,5+5)}

stdin에서 문자열을 읽는 변형 : 14 bytes-10 = 4

{for(;;)print}

그러나 두 가지를 모두 수행 할 수 없기 때문에 (stdin이 제공되지 않으면 "y"로 되돌리기), 나는 그것이 셀 수 있는지 확실하지 않습니다 ... : o)

둘 다 Ctrl + C로 종료 할 수 있습니다.


3

핵분열 , 5 바이트

Rx+!N

이것은 핵분열에 대해 상당히 경쟁적입니다. :)

제어 흐름은에서 (1,0)오른쪽 원자로 시작 R합니다. x질량을로 설정 120하고 +증가시킵니다 (121,0). 그런 다음 !해당 문자 ( y)를 N인쇄하고 줄 바꿈을 인쇄합니다. 소스 코드는 가장자리를 감싸고 있기 때문에 원자는 R다시 지나가고 (지금은 아무것도하지 않습니다) x질량을 120다시 설정하고 +증가시킵니다.


3

C, 32 바이트

스택 오버플로를 피하기 위해 리틀 엔디 언 머신과 -O2로 컴파일이 필요합니다.

a=11*11;main(){main(puts(&a));}

2

PowerShell, 27 − 10 = 17

param($s=$Host[1])for(){$s}

Pash에서는 작동하지 않을 수 있습니다. 보다 강력한 대안은

param($s="$(gal gh*)"[2])for(){$s}

2

루아, 42 바이트-10 = 32

while 1 do print(...or('').char(90+31))end

루아, 49 바이트-10 = 39

y=...or(string.char(60+61))while 1 do print(y)end

둘 다 Lua 5.1.4로 테스트되었으며 SIGINT ( Ctrl+ C) 로 죽일 수 있습니다 .


대박! 우리 엄마는 루아에서 글을 썼는데, 나는 전에는 야생에서 본 적이 없습니다. ( 이봐 엄마! 내가 본 것을 맞춰보세요! )
Signal15

2

펄, 31

yes내가 말할 수 있는 한 실제로 GNU 와 같이 작동하는 Perl 버전은 다음과 같습니다 .

{print "@ARGV"||chr 11**2;redo}

이것은 펄의 명령 행 스위치 ( -l개행 문자) 를 사용하는 것이 괜찮다면 작동합니다 . 그렇지 않으면 3 문자 더 길어집니다.

{print "@ARGV"||chr 11**2,$/;redo}

오타 :이다 -l(안 -e새로운 라인 스위치).
chris-l

또한 보너스는 스크립트가 stdin 에서 읽을 수있는 경우에만 가능합니다 . 예, 나는 진짜 는 표준 입력에서 읽지 않고 논증에서 읽지 만 그것이 OP의 규칙이라는 것을 알고 있습니다. 보너스를 받으려면 stdin에서 가져와야합니다.
chris-l

@ chris-l은 유형을 고쳤습니다. 또한 보너스에 관한 주장을 제거하지만 P는 그대로 내 대답을 떠나
xebtl가

내 자신의 대답은 당신과 같다. stdin 대신 인수를 사용합니다. IMHO, op는 실제 예가 하는 일 을 실제로 하는 사람들에게 보너스를 주어야합니다 .
chris-l

2

CAPL 1.5+; 입력이없는 6; 입력시 10-10 = 0

Sidenote
필자는 사용자 지정 언어가 골프 질문에서 허용되지 않는다는 것을 읽었습니다. 질문에서 요구하는 것과 정확히 일치하는 내장 함수를 만들 수는 있지만 CAPL을 통해 골프를보다 쉽게 ​​만들 수 있었습니다 . 이것이 허용되지 않는다고 생각되면 알려주십시오.

> <>Befunge (행 사이를 이동하고 16 진수 문자를 사용하여 숫자를 입력 할 수 있음), Ruby 및 일부는 골프를 쉽게하기 위해 몇 가지 아이디어를 얻었습니다 .
CAPL은 왼쪽에서 오른쪽으로 읽고 줄 끝에서 한 줄 아래로 내려갑니다. 마지막 줄이면 프로그램이 종료됩니다.

아직이 언어를 아는 사람이 없기 때문에 가능한 한 많이 설명하려고 노력할 것입니다.

출력 y. 6 바이트

bb*.n<

bb* b16 진수이고 11, 그래서 bb*이다 11*11= 121의 UTF-8 등가 인 y. 이 값은 스택으로 푸시됩니다.
.스택에서 최상위 값을 팝하고 UTF-8로 출력합니다. 121스택 맨 위에있는 것처럼 인덱스는 여기서 무시됩니다.
n줄 바꾸기 출력
<포인터를 줄 의 시작 부분으로 다시 보내서 그 줄을 반복합니다. 입력이 예상되지 않으므로 입력을 다시 요청하지 않고도 안전하게 입력 할 수 있습니다.

입력에서 출력. 10 바이트, 보너스 후 0

i~a&{X:.)}

i사용자로부터 입력을 받아 스택 상단에 UTF-8로 푸시 한 후 길이를 푸시합니다. 즉 [72,101,108,108,111,5]
~, 스택에서 숫자를 팝한 다음 해당 바이트 수를 되돌립니다. 즉 , 개행 문자에 [111,108,108,101,72]
a대한 16 진수 10,
&{...}무한 루프를 만듭니다. 입력이 있으므로 포인터를 다시 라인으로 보낼 수 없습니다. 아래 줄에 함수를 배치하면 바이트가 안전하지만 줄 바꿈은 허용되지 않습니다.
X스택에서 최상위 값을 제거합니다 (루프의 인덱스)
:.최상위 값을 복제 한 다음 UTF-8로 출력
)스택을 오른쪽으로 바꿉니다. ( [1,2,3,4,5]-> [5,1,2,3,4])

그러나 이것은 개행으로 시작한 다음 입력, 개행, 입력 등을 출력하기 시작한다는 것을 의미합니다. 개행으로 시작할 수없는 경우 12 바이트와 함께 다음 코드를 빼거나 2를 뺀 후 보너스.

iXa#~&{X:.)}

여기에서 유일한 새로운 명령 #은 스택에있는 항목의 양을 스택으로 푸시하는 것입니다.
나는의 길이를 제거 i입니다 이상 제거하고 다시 길이를 얻기보다 줄 바꿈과 교환 한 후, 1을 추가하기 때문에.

재미를 위해 여기에 "Hello World"프로그램이 있습니다.

"Hello World"#~
#?!;.<

?!동작> <>의 것과 동일


실제로이 제한 은 질문이 게시 된 게시 된 사용자 지정 언어 / 라이브러리 / 기능에 적용됩니다 .
manatwork

@manatwork 내 대답이 잘못되었음을 의미합니다. 설명해 주셔서 감사합니다. 나는이 언어를 만들었고, 앞으로 더 나은 버전을 위해 개선 할 수있는 부분을 테스트하기 위해 골프 도전을하고 싶었다.
Charlie

내 의견으로는 이것은 유효하지 않으며 단지 이길 자격이 없습니다. 제한의 목표는 부정 행위를 방지하는 것이었지만 언어의 신선도에 대한 진술을 포함했을 때 이것은 부정 행위로 간주 될 수 없었습니다.
manatwork

2

APL (Dyalog APL) , 5-10 = -5 바이트

경고 : 문서화되지 않은 지원되지 않는 기능 / 버그에 의존합니다.

⎕←⍣≢⍞

빈 STDIN은 빈 라인 ( "Y"하지 않음) 인쇄 허용제안되었습니다 .

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

 줄 바꿈 개행 STDOUT

 얻는다

 까지 반복

 ~와 다르다

 STDIN

즉, 스레드를 일시 중지하여 결코 중단 할 수 없습니다.


흠. 학대 버그 .. 흥미로운.
Matthew Roh

@MatthewRoh 남용하지 않고 사용 중입니다. "기능"은 실제 함수가 아니지만 피연산자가 될 수는 없지만 할당시 연산자 를 사용하고 있습니다. 여전히 작동합니다 ...
Adám

2

> <>, 6 바이트

b:*oao

;마지막에 a 를 포함시키지 않으면 > <> 는 SIGINT에서 풀릴 때까지 계속 수영합니다.

설명

b:*oao
b         Push 11
 :        Duplicate
  *       Multiply top elements to get 121
   o      Print as character
    a     Push 10
     o    Print as character (yielding '\n')
          No program terminator, so our ><> will 
          keep on swimming this path forever.
^----' 


> <>, 17-10 = 7 바이트

이전은 지루한 솔루션이므로 stdin에서 입력을받는 솔루션이 있습니다. 이것은 > <> 프로그램에 입력을 제공하는 기본 방법 이 문자를 제공하는 echo 'input' | fish.py yes.fish곳 이라는 사실을 남용합니다 .echo\n

 i:0)?!v
0r}o:r~<

설명

 i:0)?!v     Load STDIN into the stack (reversed)

             NOP           <----------,
 i           Push a byte from STDIN   |
  :          Duplicate top element    |
   0         Push 0                   |
    )?       If (i > 0):              |
      !        Wrap around  ----------'
             Else:
       v       Move to the second part

0r}o:r~<     Print STDIN until halted

       <     Go right         <---------------,
      ~      Remove top element (duplicated   |
                -1 from EOF)                  |
     r       Reverse stack                    |
    :        Duplicate top element            |
   o         Output as character              |
  }          Rotate stack to right (go to     |
                next character)               |
 r           Reverse the stack                |
0            Push 0                           |
             Wrap around       ---------------'

0r끝에 허용 SFOR 루프는 우리가 여전히 함께 되돌릴 수 스택을 가정 할 경우, 약 포장에 의해 일어날 -1위에.


1

분명히 이것은 완전히 이식 가능하지 않습니다. 내 sys.version 입니다 2.7.9 (default, Dec 11 2014, 04:42:00) \n[GCC 4.9.2]. 따라서 다른 것이면 작동하지 않을 수 있습니다.

파이썬 2-(76-10) = 66

import sys
s=sys.stdin;a=`help`[1]if s.isatty()else s.read()
while 1:print a

꽤 길지만 보너스를 원했습니다 (비용이 10 바이트 이상 임에도 불구하고). 입력을 요구하지 않고 stdin이 비어 있는지 확인하는 것은 분명히 길다.

처음에 나는 stdin 대신에 논쟁을 취하는 것으로 보너스를 잘못 읽었습니다. 나는 그것에 대한 내 솔루션을 자랑스럽게 생각하므로 어쨌든 게시하고 있습니다.)

파이썬 2-(52-10 + ∞) = ∞ (잘못된)

import sys
while 1:print(sys.argv+[0])[1]or`help`[1]

sys.argv0 번째 요소는 파일 이름이고 모든 요소 뒤의 단어는 프로그램에 주어진 인수입니다. 목록 끝에 잘못된 값을 추가합니다. 인수가 없으면 첫 번째 요소는 잘못된 값이고, 그렇지 않으면 첫 번째 인수입니다. a or b파이썬에서 결과가 무엇인지 확인하는 첫 번째 값을 반환합니다. a진실한 경우 모든 것이 사실임을 이미 알고 있으므로 반환됩니다. 거짓이면, == b이후로 반환 됩니다.False or bb


@fry 가능하지만 사용자에게 프롬프트합니다. y\nstdin이 비어 있으면 즉시 뱉어지기를 원했습니다 .
undergroundmonorail

@fry 그것은 이상하다, 그것은 나를 위해 일한다. cPython에 의존 할 수 있습니까? 다른 아이디어가 없습니다.
undergroundmonorail

그것에 좋은 아이디어
undergroundmonorail

r=raw_input();p=r if r else`help`[1]\nwhile 1:print p 52 자
globby

1
흠, 이미 첫 번째 줄에는 두 번째 줄 y도 있습니다.
Paŭlo Ebermann
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.