안티 골프 안티 골프 : GolfScript 또는 J가 (기존의) 언어에 의해 아웃 골프되는 작업을 생성합니다.


29

세 가지를 만들어야합니다.

  1. 작업의 문 T .
  2. 언어 작업의 해결은하지 일반적으로 골프에 사용 .
  3. 언어 작업의 솔루션은 일반적으로 골프에 사용 B . 점수를 높이기 위해 B 를 부풀 리려고하지 말고 경쟁자가 B 를 쓴 것처럼 생각 하십시오.

를 정의 할 typically used for golfing때 상식을 사용 하고 다른 사용자의 재미를 극대화하십시오.

다른 사용자는 더 나은 제안을 할 수 있습니다 B(다른 "골프 어"언어를 포함 할 수 있음 ).

점수가 (length_in_bytes(B)+5)/(length_in_bytes(A)+5)높을수록 좋습니다. (점수 공식을 변경해야합니까?.)

주요 아이디어는 일반적으로 코드 골프에서 잘 수행되는 언어가 문제를 만나는 작업을 발명하는 것입니다. 주어진 작업에서 일반적인 언어의 갑작스런 강점 또는 golflang의 갑작스런 약점 일 수 있습니다.

와 같은 특정 프로그래밍 언어를 언급하는 작업을 피하십시오 Input a string and execute it as a Scheme code.


1
나는 이것을 당신이 코드 골프 대신 인기 콘테스트로 만든다고 가정합니다. 그렇지 않으면 사람들은 그것이 "가장 짧은 코드 윈"이 아니라고 불평 할 것입니다.
Victor Stafusa

좋아, 인기 콘테스트로 변경 더 나은 제목이나 더 나은 점수를 제안 할 수도 있습니다.
Vi.

이전 질문이 자격이 있다고 생각합니까? codegolf.stackexchange.com/questions/18633/… Perl 솔루션은 48 자, J 솔루션은 54 자
pastebin.com 슬래시 0mr8spkT

1
랭 B를 지정해야합니까 (골프에 능숙한 한)? 또는 "언어 <insert language name>의 프로그램이 있으며 길이 <n>의 솔루션이 매우 짧습니다."라고 말할 수 있습니까?
Justin

1
BTW Perl과 같은 일부 언어는 상황에 따라 A면과 B면 모두에있을 수 있습니다.
Vi.

답변:


14

저의 이전 질문 인 정현파 인쇄 (수직)가이 순간에 적합합니다. 나는 그것을 여기에 해결책으로 게시하고 있으며, 여러분이 내 원래 질문에 대한 더 짧은 해결책을 제시 할 수 있기를 바랍니다.

Vi.의 요구에 따라 질문 요약을 게시합니다.

터미널에서 수직으로 연속 정현파를 스크롤하여 인쇄합니다. 프로그램은 종료되어서는 안되며 웨이브를 계속 아래로 스크롤해야합니다 (SIGINT까지 제외). 오버플로가 문제가 아니라고 가정 할 수 있습니다 (즉, 카운터 증가 또는 무한 재귀와 함께 무한 루프를 사용할 수 있음).

웨이브는 다음 속성을 만족해야합니다.

  • 진폭 = 20 자 (피크 진폭)
  • 기간 = 60 ~ 65 행 (포함)
  • 출력은 공백, 개행 및 |
  • 각 출력 라인 후 50ms 동안 일시 중지

내 원래 질문에 대한 샘플 출력이 있지만 여기에 게시하지 않습니다. 왜냐하면 대답이 엄청나게 길기 때문입니다. 내 원래 질문은 여기에서 볼 수 있습니다 : 정현파 인쇄 (수직)

가장 짧은 A현재 : 48 개의 문자가있는 Perl 솔루션 : https://codegolf.stackexchange.com/a/18655/12205

print$"x(25+20*sin).'|
';$_+=.1;`sleep .05`;do$0

가장 짧은 B현재 : 54 문자가있는 J 솔루션 : https://codegolf.stackexchange.com/a/18649/12205

($:+&0.1[6!:3@]&0.05[2:1!:2~' |'#~1,~[:<.20*1+1&o.)0  




현재이 답변의 점수는 1.113입니다 (심지어 낮은 점수).


현재 공식에 따른 현재 점수는 대략 1.113
Vi입니다.

@Vi. 이 답변을 삭제해야합니까 아니면 잠시 기다렸다가 어떻게되는지 확인해야합니까? 후자가 얼마나 오래 기다려야합니까?
pastebin.com 슬래시 0mr8spkT

명령문은 문자가 아닌 바이트를 나타냅니다. UPL-8로 변환 된 APL 솔루션은 61 바이트 (UTF-16의 경우 70)를 만들었습니다.
Vi.

2
당신은 Perl이 골프에 일반적으로 사용되는 언어가 아니라고 주장하지만, 그것이 golf 라는 단어와 처음으로 관련된 언어입니다 ! 56 세인 루비는 질문에 대한 현재 답변에서 실제 언어 A처럼 보입니다.
피터 테일러

8

두 숫자 추가

STDIN에서 두 개의 숫자를 가져 와서 더합니다. 부동 소수점 숫자를 지원해야하므로 0.5 + 1.5는 2와 같아야합니다.

5 펄 (함께 -E)

say<>+<>

GolfScript

n%'+'*'"#{
}"'n/\*~

같은 계산 된 점수 (24+5)/(8+2+5) = 1.9(3). -E또한 프로그램 바이트로 계산됩니다.
Vi.

에이스에 대해 언급 한 것과 같은 의견 : 당신은 펄이 골프에 일반적으로 사용되는 언어가 아니라고 주장하지만 그것은 골프 라는 단어와 처음으로 관련된 언어입니다 !
피터 테일러

그리고 GolfScript 프로그램이 작동하지 않습니다. 작동하는 프로그램은 n%'+'*'"#{ }"'n/\*~그 사이의 문자 {}가 리터럴 개행입니다 (주석에서 지원되지 않음).
피터 테일러

@PeterTaylor, GolfScript와 비교하여 Perl은 "일반적인"언어입니다. Java와 비교하면 "골프"언어입니다.
Vi.

1
이것에 대한 J는 실제로 나쁘지 않습니다 +/".1!:1,~1. APL은 아마도 더 작을 것입니다.
algorithmshark

8

'Hello, World!'를 인쇄하십시오. stdout에.

PHP, 13 바이트

Hello, World!

골프 스크립트, 15 바이트

'Hello, World!'

Pyth, 14 바이트

"Hello, World!

3
멋지게 화제. :)
AdmBorkBork

2
새로운 B : HQ9 +에서H
Charles가 아닙니다.

2
그러나 @NotthatCharles
georgeunix

1
@georgeunix 좋은 지적입니다. 당신은 "W"를 대문자로 표기했습니다.
아니 찰스

7

48/37 또는 1입니다. (297)

T : 실행 후 정확히 1 시간 (가능한 한 가까운 시간 내에) 후에 프로그램을 종료하는 코드 스 니펫을 작성하십시오. 예외에 대해 걱정하지 마십시오. 처리되지 않을 수 있습니다.

A : 자바 (32)

Thread.sleep(3600000);int a=1/0;

B : Befunge 98 용이며 TIME 지문이 필요합니다 (43).

"EMIT"4(HMS00p01p02p#;gS-!01gM-!H-!++3-!j;@

실행시 시간, 분 및 초가 걸리고 at 셀 02, 01 및 00을 넣습니다. 그런 다음 ;두 번째 부분으로 건너 뜁니다 . 두 번째 부분은 다음과 같이 작동합니다.

g          get the value at 00
"EMIT"4(S) get the current time in seconds
-!         subtracts the values and changes a 0 to 1, anything else to 0

분과 시간에 대해서도 비슷합니다.

++  sums up the values
3-! i the sum is 3, we get a 1, otherwise, we get a 0.
j   jump over the next that many cells
;   skip code execution until the next ;
@   end program

줄의 끝에 도달하면 Befunge는 자동으로 줄의 시작 부분으로 돌아갑니다.


보시다시피 Befunge는 특정 시간을 기다리는 데 좋지 않습니다. 그러나 Java는 나쁘지 않습니다.


9
APL :⎕DL 3600
marinus

14
Java는 일반적으로 다음과 같이 읽습니다 class Main{public static void main.
Vi.

3
@Vi. "코드 스 니펫"을 참조하십시오. 기본적으로 실제로 작업을 수행하는 코드가 필요합니다.
Justin

2
나는 Befunge를 모른다. 그러나 Java 스 니펫은 스펙에 따라 "프로그램을 종료하지 않는다". 그것은 방법으로 System.exit(0);수면을 포장하거나 포장해야합니다 main.
피터 테일러

3
@DoorknobofSnow 컴파일 실패 :error: not a statement
Bob

5

특정 텍스트 파일 출력 (498.388888 포인트)

목표 출력은 여기에 있습니다 .

이를 인쇄하는 Python 3.4.3 스크립트는 49 바이트입니다.

for b in dir(__builtins__):print(eval(b).__doc__)

출력 문자열을 래핑하고 그 안에서 발생 "..."하는 각 문자열을 이스케이프 함으로써 순진 CJam 프로그램은 목표 출력과 같습니다 ".


매우 영리하지만 "특정 언어"제한 (모호한 것은 물론)에 위배 될 수 있습니다.
BMac

가장 가까운 규칙은 "특정 언어를 언급하지 마십시오"입니다. 파이썬은 언급되지 않았지만 분명히 의미됩니다.
Vi.

예,이 대답은 약간 뺨이 맞습니다. 규칙이 미끄러운 경사라고 지적하고 싶었습니다. 출력을 "혼돈"했다고 가정하면 (예를 들어, 각 docstring의 SHA1 체크섬을 취하면) "이 깨진 16 진 숫자는 언어별로 너무 다르다"고 주장하는 것이 매우 이상 할 것입니다. :)
Lynn

좀 더 "공정한"답변을 원한다면 Mathematica를 사용했을 것입니다. 수천 바이트의 CJam / Pyth / anything을 필요로하는 많은 도메인 특정 작업을 수행 할 수 있습니다. 그러나 슬프게도, 나는 언어를 모른다.
Lynn

출력 연결이 끊어졌습니다.
pppery

4

"안녕하세요 세상!" (50/26 ≈ 1.92)

"Hello world!"라는 메시지 상자를 표시하십시오.

자바 스크립트

alert('Hello world!')

DOM 레벨 0+를 지원하는 브라우저에서.

use Win32;Win32::MsgBox('Hello world!','',48)

Win32 :: GUI를 사용하여 ActivePerl에서 실행


alert본질적으로 JS의 일부가 아니며 GolfScript 프로그램은 단지 주석입니다.
피터 테일러

일반 Perl을 사용하도록 답변을 변경했습니다.
칫솔

3

"Hello world!"출력 사용자가 "q"를 누를 때까지 1.842 105/44 = 2.386

  1. "Hello world!"를 인쇄하십시오. (개행 포함).
  2. 사용자가 키를 누르면 화면에 표시되지 않습니다.
  3. 누른 키가 "q"가 될 때까지 반복하십시오.

Q 기본 ( 52 39 자)

1?"Hello world!":IF"q"<>INPUT$(1)THEN 1

원래 답변을 게시 한 후 QB64에서 자동 서식을 해제 할 수 있음을 발견했습니다. : ^ D 행 번호와 ?바로 가기를 사용하면 PRINTC와 같은 언어의 삼항식처럼 보입니다.

첫 번째 버전 :

PRINT "Hello world!"
IF INPUT$(1) <> "q" THEN RUN

펄 5 (100 자)

while("q"ne$e){print"Hello world!\n";system"stty cbreak -echo";$e=getc;system"stty -cbreak echo";}

위의 내용은 (확실한?) UNIX 시스템에서만 작동합니다 (Ubuntu 12.04에서 테스트). Term :: ReadKey 모듈을 사용하여 크로스 플랫폼으로 이동하여 91 자로 줄일 수 는 있지만 테스트하지는 않았습니다.

use Term::ReadKey;while("q"ne$e){print"Hello world!\n";ReadMode 3;$e=ReadKey 0;ReadMode 0;}

1

안녕하세요, 세계 (3 1/3 포인트)

출력하는 프로그램을 작성하십시오 Hello World..

HQ9 + (1 자)

이것은 "일반적으로 골프에 사용되는"언어가 아니므로 여기에 적합하다고 생각합니다. 그런데이 인터프리터 에서 작동 합니다 .

H

GolfScript (15 자)

GolfScript 인 경우에도 더 짧아 질 수 있습니다.

"Hello World."

8
나는 생각하지 않는다 HQ9+등의 정장 언어를. 트릭 / 수수께끼 / 재미를 위해 설계되었습니다. Brainfuck / unlambda / other esoterical language 또한 A 로 적합하지 않은 것 같습니다 .
Vi.

@Vi .: 그러나 일반적으로 골프에는 사용 되지 않습니다 .
Konrad Borowski 2019 년

4
당신은 사용하려고 hovewer 수 HQ9+B의 언어와 자바 또는 ...에 의해 그것을 이길
VI.

7
계층 구조가있는 것처럼 보입니다 : Java와 비교할 때 Perl은 golflang입니다. Perl에 비해 GolfScript는 golflang입니다. HQ9 +는 GolfScript와 비교하여 golflang ...
Vi.

@Vi .: 신중하게 작업 설명을 확인했습니다. HQ9 +는 두 가지 특정 작업 인 "99 병"과 "Hello, world"를 제외하고는 골프에 절대 사용되지 않습니다. HQ9 +가 다른 프로그래밍 언어로이기는 다른 작업을 보여줄 수 없다면, 나는 그것을 남용하더라도 정의에 적합하다고 생각합니다 (이봐, 인기 콘테스트입니다 ). HQ9 +는 단순히이 두 가지 작업과 관련이없는 골프 용품에는 사용되지 않습니다. 따라서 일반적으로 골프에는 사용 되지 않습니다 . 두 번째는 분명히 CodeGolf를 위해 설계되었습니다-GolfScript입니다.
Konrad Borowski

0

"Hello world!"출력, 33/97 = 2.94

출력하는 프로그램 작성 Hello world!

아두 이노 또는 GML

Serial.print("Hello world!")

또는

show_message("Hello world!")

둘 다 28 자입니다.

GTB

나는 골프를 많이하기 위해 GTB를 사용한다 (특히 내가 직접 만든 이후로 튜링 완료). 불행히도 소문자 지원은 제한적입니다 (TI-84 계산기는이를 처리 할 수 ​​없기 때문에). Hello world를 출력 할 수있는 가장 짧은 GTB 프로그램 일 것입니다!

S;"lower",1,1)→_~"H"+S;"expr(",1,1)+_+_+S;"cos(",2,1)+" W"+S;" or ",2,2)+_+S;" and ",4,1)+"!

92 자


GTB 버전도 직렬 포트로 출력합니까?
Vi.

GTB 버전은 의도적으로 다양한 함께 부풀어 cos들과 exprs아니면 genuintely 일반적인 방법뿐 아니라 출력 뭔가를 할 수 있습니까? 또는 "문자는 실제로 문자열 리터럴이 아니며 나를 혼란스럽게합니다 ...
Vi.

@Vi. 전혀 부풀어 오르지 않습니다 ... expr에서 e를 제거해야합니다.
Timtech

'다른 사용자는 더 나은 B를 제안 할 수 있습니다 (다른 "골프 어"언어에 포함될 수 있음). '--- golfscript를 시험해 보자 :"Hello world!"
John Dvorak

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