Cách đây một thời gian, câu hỏi sau đây đã được hỏi: GolfScript, CJam hay Pyth? Chỉ dựa trên tiêu đề, tôi nghĩ rằng nó sẽ là một thử thách rất hay, nhưng thật không may, hóa ra đó là một câu hỏi yêu cầu lời khuyên. Đây là thử thách tôi muốn đọc:
Ai nói ngôn ngữ chơi gôn không được sử dụng trong thế giới thực? Như mọi người đều biết, tỷ lệ lỗi trên mỗi dòng mã là độc lập với ngôn ngữ lập trình đang được sử dụng, do đó có một cơ hội rõ ràng để giảm chi phí sửa lỗi và bảo trì với các ngôn ngữ đó. Công ty của bạn cuối cùng đã nhìn thấy ánh sáng và quyết định sử dụng Golfscript, CJam và Pyth để phát triển sản phẩm của mình.
Thật không may, sau một vài tháng, các ổ đĩa cứng của bạn bị lộn xộn với các đoạn mã và bạn thậm chí không biết những ngôn ngữ nào được viết bằng ngôn ngữ nào (thậm chí bạn còn nghi ngờ một số lập trình viên của mình sử dụng Perl).
Bạn phải viết một công cụ để phát hiện ra CJam, Golfscript hoặc Pyth là ngôn ngữ mà chương trình được viết. Tình hình rất quan trọng, bạn có thể sử dụng bất kỳ ngôn ngữ nào bạn muốn, nhưng vui lòng giữ cho nó ngắn gọn (lưu trữ dữ liệu đắt tiền: chúng tôi sử dụng càng nhiều byte, chi phí càng nhiều).
Chung
- Mã ngắn nhất giành chiến thắng
- Lỗ hổng tiêu chuẩn, vv
- Không sử dụng trình thông dịch trực tuyến
- Bạn có thể viết một chức năng hoặc một chương trình
- Bạn có thể sử dụng eval để phát hiện ngôn ngữ của riêng bạn
Đầu vào
- Đầu vào của bạn được lấy từ luồng đầu vào tiêu chuẩn hoặc dưới dạng chuỗi
- Đầu vào chỉ chứa các ký tự và nguồn cấp dữ liệu có thể in ASCII
- Kích thước của đầu vào dài tới 256 byte
Đầu ra
- Đầu ra được in ra luồng đầu ra hoặc được trả về dưới dạng một chuỗi các chuỗi / ký hiệu
Nếu đầu vào chắc chắn là một chương trình X hợp lệ , hãy in hoặc trả về X , X ∈ {CJam, Pyth, Golfscript}
Lưu ý : "không nghi ngờ gì" không có nghĩa là bạn được phép trả lời bằng máy phân tích câm mà không phát hiện ra bất kỳ ngôn ngữ nào. Đối với Pyth , tôi hy vọng các Chương trình đơn giản sẽ được công nhận (nhưng không có mã hóa cứng). Điều tương tự cũng xảy ra với CJam ( cheat sheet , ví dụ ) và Golfscript ( ví dụ ). Các liên kết trước chỉ đến thông số kỹ thuật của từng ngôn ngữ. Nếu bạn sử dụng phương pháp mờ / bayes, "không nghi ngờ gì" có nghĩa là với mức độ tin cậy cao (ví dụ, bạn đạt 99% với phân loại của mình). Xem dưới đây cho bộ thử nghiệm thực tế.
Nếu đầu vào hợp lệ bằng nhiều ngôn ngữ, mỗi ngôn ngữ được phát hiện sẽ được in / trả lại. Khi được in, phải có một dấu phân cách giữa nhiều đầu ra (ví dụ: khoảng trắng, dòng mới, dấu phẩy ...).
- Thứ tự các ngôn ngữ được thử không quan trọng
- Tôi không quan tâm đến trường hợp (CJam, cjam, CJAM, SPAM) [1]
- Nếu không có ngôn ngữ nào ở trên được phát hiện, hãy in "
Probably Perl
" . Nhờ nhận xét này từ mbomb007 , trong trường hợp trên, bạn cũng có thể xuất "Seriously
" cho hình phạt 4 byte (sự khác biệt giữa cả hai chuỗi).
[1] Để rõ ràng, SPAM không hợp lệ
Ví dụ
-
"Crime predicted: -- Calling: 1--555- "30*{_5<{iAa*:mr}&}/
Đầu ra (ví dụ về nhiều giá trị trả về)
["Golfscript", "Cjam"]
Đầu vào
3
Đầu ra (ví dụ về đầu ra tiêu chuẩn)
golfscript cjam pyth
Đầu vào
if {} aazd
Đầu ra
Probably Perl
Trong trường hợp cuối cùng, chương trình đầu vào tạo ra lỗi Với cả ba thông dịch viên trực tuyến.
Ghi điểm, tiêu chí chiến thắng
Mã ngắn nhất giành chiến thắng. Thêm 4 byte nếu bạn xuất "Nghiêm túc". Sau đó, áp dụng tiền thưởng.
Không kiểm tra
Sau đây là những đoạn không được công nhận là bất kỳ ngôn ngữ nào trong ba ngôn ngữ trên.
Một lớp lót (tức là một mục nhập trên mỗi dòng)$^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
>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
++++++++++++++++++++++++++++++++++++++++++++++++.
-----------------.
++++++++.
+++++.
--------.
+++++++++++++++.
------------------.
++++++++.
Perl
@list=( "aaaa",
"aaaaaaaa",
"aaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
while (@list) {
for($i=0;$i<6;$i++){
print length($list[$i])." ";
}
print "\n";
}
Cá
#ifndef __linux
#include "x.h"
#define X/*\
a=1 set -e
+++++++++++++++++++++_+++++++++++++....Hello World!?:Q:
#endif
echo "Hello, World!"
int m(){}
Bộ kiểm tra cơ bản
Đó là những bài kiểm tra phải vượt qua. Belows là một lớp lót cho mỗi ngôn ngữ trong đó chương trình của bạn phải phát hiện ngôn ngữ mà nó đang được viết (Tôi không kiểm tra ngôn ngữ nào trong số đó là polyglot).
Bình
*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
Golf
;'2706 410'~{.@\%.}do;
;''6666,-2%{2+.2/@*\/10.3??2*+}*`50<~\;
'Hello, world!'
1 2 [\]
Camam
"Hello, world"
{`"_~"}_~
"`_~"`_~
T1{_2$+}A*]`
{__'`>\'x>26*2-*-}/
Y38#
N/s:X,8-,{X>9<__{'a<},,\4%{'Z>},,*I={4=}{;}?}/
Phần thưởng bạc: đếm byte * 0,6
Tất cả các bài kiểm tra trước phải vượt qua, cũng như các lớp lót sau. Tất cả các đoạn được lấy từ các câu trả lời CodeGolf thực tế.
Bình
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
Golf
);:|;{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"!"
Camam
"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*
Phần thưởng vàng: điểm trước * 0,8
Bình
So sánhjdm@cd)._-FQcj"
is
equal greater less
to than
"Qb
Người tuyết
M@GCHgc" ___
___
_"bhzgc" (_*_)
_===_
.....
/_\\"bhzs[g" \ "@z4\(g"-.oO"@z2g" ,._"@z1g"-.oO"@z3\)g" / "@z5)s[g" < /"@z4\(gc"
:
] [
> <"b@z6\)g" > \\"@z5)++" ("gc"
:
\" \"
___"bez\)
Camam
Lớnrri: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
Người tuyết
q:Q;SS"
_===_,___
....., _
/_\,___
(_*_)"',/0{Q=~(=}:G~N" \ "4G'(".oO-"_2G",._ "1G@3G')" / "5GN"< / "4G'(" : ] [> < "3/6G')"> \ "5GNS'(" : \" \"___ "3/7G')
Golf
LoremLorem 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.
Đồng hồ kỹ thuật số
:*{32' _':$@'14'{?~!=}:&~32}%n*{:x' |':|\'1237'&$x'017'&|x'56'&}%n*{:x|\'134579'&$x'147'&|x'2'&}%
Chúc mừng sinh nhật
4,{"Happy Birthday "["To You""Dear GolfScript"]@2==n}%
Trình tự giá vé
~:c[,{){.}c(*}%.c/zip{+}*]zip{~{.@\%.}do;1=},{~<},{~\10c?*\/}${'/'*}%', '*'F'c`+' = {0/1, '+\', 1/1}'