얼마 전에 GolfScript, CJam 또는 Pyth? 제목만을 기반으로, 나는 그것이 매우 어려운 도전이라고 생각했지만 불행히도 그것은 팁을 요구하는 질문으로 판명되었습니다. 내가 읽고 싶은 도전은 다음과 같습니다.
누가 골프 언어가 현실 세계에서 사용되지 않았다고 말했습니까? 모두가 알고 있듯이, 코드 라인 당 버그 비율은 사용되는 프로그래밍 언어와 독립적으로 동일하므로 해당 언어로 디버깅 및 유지 관리 비용을 줄일 수있는 명확한 기회가 있습니다. 귀사는 마침내 조명을보고 Golfscript, CJam 및 Pyth를 사용하여 제품을 개발하기로 결정했습니다.
불행히도, 두 달이 지나면 하드 드라이브가 코드 조각으로 어수선 해져 어떤 언어로 어떤 하드 드라이브가 작성되어 있는지조차 모릅니다 (일부 프로그래머가 Perl을 사용하는 것으로 의심됩니다).
CJam, Golfscript 또는 Pyth 중 프로그램이 작성된 언어를 감지하는 도구를 작성해야합니다. 상황은 매우 중요합니다. 원하는 언어를 사용할 수 있지만 짧게 유지하십시오 (데이터 저장 비용은 비쌉니다. 사용하는 바이트가 많을수록 비용이 많이 듭니다).
일반
- 최단 코드 승리
- 표준 허점 등
- 온라인 통역사를 사용하지 마십시오
- 함수 나 프로그램을 작성할 수 있습니다
- eval을 사용하여 자신의 언어를 감지 할 수 있습니다
입력
- 입력은 표준 입력 스트림 또는 문자열로 가져옵니다.
- 입력은 ASCII 인쇄 가능 문자와 줄 바꿈 만 포함합니다
- 입력 크기는 최대 256 바이트입니다.
산출
- 출력은 출력 스트림으로 인쇄되거나 일련의 문자열 / 기호로 반환됩니다.
입력 값이 유효한 X 프로그램 인 경우, X , X ∈ {CJam, Pyth, Golfscript}를 인쇄하거나 반환하십시오.
비고 : "의심없이"는 언어를 지속적으로 감지하지 못하는 바보 같은 분석기로 응답 할 수 있다는 의미는 아닙니다. 들어 Pyth , 내가 기대하는 간단한 프로그램이 인식되지 않습니다 (하지만 하드 코딩) 할 수 있습니다. 동일 간다 CJam ( 치트 시트 , 예 ) 및 Golfscript ( 예 ). 이전 링크는 각 언어의 사양을 가리 킵니다. 퍼지 / 베이지 접근 방식을 사용하는 경우 "의심없이"는 높은 수준의 신뢰를 의미합니다 (예를 들어 분류에서 99 %의 점수를 얻음). 실제 테스트 스위트는 아래를 참조하십시오.
입력이 여러 언어로 유효한 경우 감지 된 각 언어를 인쇄 / 반환해야합니다. 인쇄시 여러 출력 (예 : 공백, 줄 바꿈, 쉼표 등) 사이에 구분 기호가 있어야합니다.
- 언어를 시도하는 순서는 중요하지 않습니다
- 나는 사건에 관심이 없다 (CJam, cjam, CJAM, SPAM) [1]
- 경우 위의 언어 중 어느 것도 , 인쇄 감지되지 "
Probably Perl
" . mbomb007의이 주석 덕분에 위의 경우Seriously
4 바이트의 벌점 (두 문자열의 차이)에 대해 " "를 출력 할 수도 있습니다 .
[1] SPAM은 유효하지 않습니다.
예
-
"Crime predicted: -- Calling: 1--555- "30*{_5<{iAa*:mr}&}/
출력 (여러 반환 값의 예)
["Golfscript", "Cjam"]
입력
3
출력 (표준 출력의 예)
golfscript cjam pyth
입력
if {} aazd
산출
Probably Perl
마지막 경우, 입력 프로그램 오류 발생 으로 모든 세 가지 온라인 통역을.
득점, 승리 기준
최단 코드 승리. "Seriously"를 출력하면 4 바이트를 추가하십시오. 그런 다음 보너스를 적용하십시오.
실패한 테스트
다음은 위의 세 언어 중 하나로 인식 되지 않아야 하는 스 니펫입니다 .
라이너 1 개 (즉, 라인 당 하나의 항목)$^X=~/([a-z]+)[^\/]+$/;print$1,$/
<>;map($s-=(-1)**$_/(2*$_-1),1..$_),$s=!print$s,$/for<>
((THIS IS LISP HAIKU) (TRULY THIS IS LISP HAIKU) (THIS IS LISP HAIKU))
(format t"~@(~{~R~^, ~}~).~%~:*~@(~{~:R~^, ~}~)."(loop for i to 99 collect(1+ i)))
print sum(ord(c) for c in 'Happy new year to you!')
Brainfuck
>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
++++++++++++++++++++++++++++++++++++++++++++++++.
-----------------.
++++++++.
+++++.
--------.
+++++++++++++++.
------------------.
++++++++.
펄
@list=( "aaaa",
"aaaaaaaa",
"aaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
while (@list) {
for($i=0;$i<6;$i++){
print length($list[$i])." ";
}
print "\n";
}
물고기
#ifndef __linux
#include "x.h"
#define X/*\
a=1 set -e
+++++++++++++++++++++_+++++++++++++....Hello World!?:Q:
#endif
echo "Hello, World!"
int m(){}
기본 테스트 스위트
그것들은 반드시 통과 해야하는 테스트입니다 . 아래는 프로그램이 작성중인 언어를 감지 해야하는 각 언어에 대한 하나의 라이너 입니다 ( 폴리 글 로트 중 어느 것을 검사하지는 않았습니다).
피스
*2Q
FNrZTN
FNrZhTN
FNUhTN
VhTN
FNr1hQN
=N5N
K5K
K1FNr1hQ=K*KN
K1FNr1hQ=K*KNK
K1FNr1hQ=K*KN;K
DhZK*3ZRK
L?b*bytb1yQ
A(Z1)VQHA(H+HG
골프 스크립트
;'2706 410'~{.@\%.}do;
;''6666,-2%{2+.2/@*\/10.3??2*+}*`50<~\;
'Hello, world!'
1 2 [\]
CJam
"Hello, world"
{`"_~"}_~
"`_~"`_~
T1{_2$+}A*]`
{__'`>\'x>26*2-*-}/
Y38#
N/s:X,8-,{X>9<__{'a<},,\4%{'Z>},,*I={4=}{;}?}/
실버 보너스 : 바이트 수 * 0.6
이전의 모든 테스트는 물론 다음의 단일 라이너도 통과해야합니다. 이러한 모든 스 니펫은 실제 CodeGolf 답변에서 가져옵니다.
피스
VzJ:zZhZpkJ~Zhy}rJ0-G"aeoui
Vzjdm?@zd}N,dt-lzd\ Uz
jd.iSQs*RtQ,\?":0
rsXOtQmO*-GJ"aeiou"J/Q2*%Q2O"hy"4
VhQIq`N_`NN
s["$$\\varphi=1+"*Q"\cfrac1{1+"\\<\dQ"dots"*Q\}"$$
@c"weak trick fair"d-!JlfhT-M.:us_cG.u+NYtKrH7-52hK.zU52 2>J26
골프 스크립트
);:|;{0):0;|$:§-1%" - "§" = ""0"4$~§~-+-4>:|n|6174`=!}do"Iterations: "0"."
'-+,/'{)))))}%
4:echo(2+2);
#undef X;A!"$%&'()*+-[,.]/0123456789:<=>?@BCDEFGHIJKLMNOPQRSTUVWYZ\^_`abcghijklmopqrstvwxyz{|}~
{`),32>^.}.~
"126,32>''+".~\-'.~\-"'-
"),@`^^32>#.~".~
...[[]]{{}}&%%++++5i
*++..0011125::::;;;?bbbbcccc{}
"This program wasn't written in "o"GolfScript"", it was built for ""CJam"oo"!"
CJam
"Q"c("ASSW"1$("aRD"(((T1
%\@_@){;_0}*__*)\15
"This program wasn't written in "o"GolfScript"", it was built for ""CJam"oo"!"
"P2"1e3K51_,1>K*$K*~]N*
li__,\mf:i2m1+:*/fb:+
ri:B__(^2/):G/,{_BBG/@-(#G@*G(B2/*+*}/]:+
{1$+S@]_1=4+1$`,-S*"2$~"}21D2$~
[S'-26*N]:Z[S'|:PS24*PN]:RR'(PS5*qi:XD=X0<-X2%2*+:Y[" ^ "_" > ""(O)"" - "__]=S8*Y[" ^ "" "" < ""(O)"" - "__]=S5*P')NRRXD=[SPS7*'oA*S7*PN]:QR?Y[[SPS5*'oSC*'oS5*PN]:T_R[SPS7*'oS8*'oS7*PN]RRR]=QY2=TR?RRZ
li4H#+2bW%32<2b
q~:R100:H*\d:T/i){R-H*HT-/m]}6*_H)<*
"JamesBdo,"YZ+/)BA*c+Y*Y%:BS@SB)))[JW:Z____)ci+*]U*
골드 보너스 : 이전 점수 * 0.8
피스
비교jdm@cd)._-FQcj"
is
equal greater less
to than
"Qb
눈사람
M@GCHgc" ___
___
_"bhzgc" (_*_)
_===_
.....
/_\\"bhzs[g" \ "@z4\(g"-.oO"@z2g" ,._"@z1g"-.oO"@z3\)g" / "@z5)s[g" < /"@z4\(gc"
:
] [
> <"b@z6\)g" > \\"@z5)++" ("gc"
:
\" \"
___"bez\)
CJam
큰rri:Hri:Vri:Q[q~]3/_Qa3*a+_|$W%:Pf{\a#}:AH/:B0ff*
P,,[AHAW%HBz:+_W%V\V]2/
ff{~@@f=/::|1#}0Ua4*t:R;
P0f<
V{H{BI=J=_2$=
0R{"I>! I+V<J>! J+H<"4/+4/z{~~}%:&1$*\)}%);2$-|t
}fJ}fI
[P,{_La#\1$0t1$f-}*;;]
{:TR=2/~\~V\-,>\f{\_3$=@~H\-,>{Tt}/t}~}/
:~Pf=:~
~]S*N
눈사람
q:Q;SS"
_===_,___
....., _
/_\,___
(_*_)"',/0{Q=~(=}:G~N" \ "4G'(".oO-"_2G",._ "1G@3G')" / "5GN"< / "4G'(" : ] [> < "3/6G')"> \ "5GNS'(" : \" \"___ "3/7G')
골프 스크립트
로렘 입숨Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras imperdiet est ut sem commodo scelerisque. Sed ut ultricies enim. Nam eget lectus suscipit, gravida turpis a, volutpat tellus. Cras efficitur luctus neque, at semper massa condimentum at posuere.
디지털 시계
:*{32' _':$@'14'{?~!=}:&~32}%n*{:x' |':|\'1237'&$x'017'&|x'56'&}%n*{:x|\'134579'&$x'147'&|x'2'&}%
생일 축하 해요
4,{"Happy Birthday "["To You""Dear GolfScript"]@2==n}%
패 레이 시퀀스
~:c[,{){.}c(*}%.c/zip{+}*]zip{~{.@\%.}do;1=},{~<},{~\10c?*\/}${'/'*}%', '*'F'c`+' = {0/1, '+\', 1/1}'