เวลาที่ผ่านมาคำถามต่อไปนี้ถูกถาม: GolfScript, CJam หรือ Pyth? จากชื่อเรื่องเท่านั้นฉันคิดว่ามันจะเป็นความท้าทายที่ดีมาก แต่น่าเสียดายที่มันกลายเป็นคำถามที่ถามถึงเคล็ดลับ นี่คือความท้าทายที่ฉันต้องการอ่าน:
ใครบอกว่าภาษากอล์ฟไม่ได้ใช้ในโลกแห่งความจริง? ตามที่ทุกคนรู้อัตราส่วนของข้อผิดพลาดต่อบรรทัดของรหัสจะเหมือนกันกับภาษาการเขียนโปรแกรมที่ใช้ดังนั้นจึงมีโอกาสที่ชัดเจนในการลดการดีบักและค่าใช้จ่ายในการบำรุงรักษาด้วยภาษาเหล่านั้น ในที่สุด บริษัท ของคุณเห็นแสงสว่างและตัดสินใจใช้ Golfscript, CJam และ Pyth เพื่อพัฒนาผลิตภัณฑ์ของตน
น่าเสียดายที่หลังจากผ่านไปสองสามเดือนฮาร์ดไดรฟ์ของคุณจะเต็มไปด้วยตัวอย่างโค้ดและคุณไม่รู้ด้วยซ้ำว่ามีคนเขียนด้วยภาษาใดบ้าง (คุณสงสัยว่าโปรแกรมเมอร์บางคนใช้ Perl)
คุณต้องเขียนเครื่องมือเพื่อตรวจสอบว่า CJam ใด Golfscript หรือ Pyth เป็นภาษาที่ใช้ในการเขียนโปรแกรม สถานการณ์เป็นสิ่งสำคัญคุณสามารถใช้ภาษาใดก็ได้ที่คุณต้องการ แต่โปรดย่อให้สั้น (การจัดเก็บข้อมูลมีราคาแพง: ยิ่งเราใช้ไบต์มากเท่าใดก็ยิ่งมีค่าใช้จ่ายมากขึ้น)
ทั่วไป
- รหัสที่สั้นที่สุดชนะ
- ช่องโหว่มาตรฐาน ฯลฯ
- อย่าใช้ล่ามออนไลน์
- คุณสามารถเขียนฟังก์ชั่นหรือโปรแกรม
- คุณสามารถใช้ eval เพื่อตรวจจับภาษาของคุณเอง
อินพุต
- ข้อมูลที่คุณป้อนมาจากสตรีมอินพุตมาตรฐานหรือเป็นสตริง
- อินพุตมีอักขระและบรรทัดที่พิมพ์ได้ ASCII เท่านั้น
- ขนาดของอินพุตมีความยาวสูงสุด 256 ไบต์
เอาท์พุต
- เอาต์พุตถูกพิมพ์ไปยังเอาต์พุตสตรีมหรือส่งคืนเป็นลำดับของสตริง / สัญลักษณ์
หากอินพุตไม่ต้องสงสัยเลยว่าเป็นโปรแกรมX ที่ถูกต้องให้พิมพ์หรือส่งคืนX , X ∈ {CJam, Pyth, Golfscript}
หมายเหตุ : "ไม่ต้องสงสัยเลย" ไม่ได้หมายความว่าคุณจะได้รับอนุญาตให้ตอบด้วยเครื่องวิเคราะห์โง่ที่ไม่สามารถตรวจจับภาษาใด ๆ ได้อย่างสม่ำเสมอ สำหรับPythฉันคาดว่าโปรแกรมแบบง่ายจะได้รับการยอมรับ (แต่ไม่มีการเข้ารหัส) เดียวกันจะไปสำหรับCJam ( แผ่นโกง , ตัวอย่าง ) และGolfscript ( ตัวอย่าง ) ลิงก์ก่อนหน้าชี้ไปที่ข้อมูลจำเพาะของแต่ละภาษา หากคุณใช้วิธีฟัซซี / เบย์แบบ "ไม่ต้องสงสัยเลย" หมายถึงความมั่นใจระดับสูง (เช่นคุณได้คะแนน 99% จากการจำแนกประเภทของคุณ) ดูด้านล่างสำหรับชุดทดสอบจริง
หากอินพุตถูกต้องในหลายภาษาควรตรวจสอบ / พิมพ์ภาษาที่ตรวจพบแต่ละภาษา เมื่อพิมพ์จะต้องมีตัวคั่นระหว่างเอาต์พุตหลายรายการ (เช่น space, newline, comma ... )
- ลำดับในการลองภาษาไม่สำคัญ
- ฉันไม่สนใจกรณี (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
ในกรณีสุดท้ายโปรแกรมอินพุตสร้างข้อผิดพลาดกับ All Online Threeล่าม
เกณฑ์การให้คะแนนชนะ
รหัสที่สั้นที่สุดชนะ เพิ่ม 4 ไบต์ถ้าคุณส่งออก "อย่างจริงจัง" จากนั้นใช้โบนัส
การทดสอบล้มเหลว
ข้อมูลต่อไปนี้เป็นตัวอย่างที่ต้องไม่รับรู้ว่าเป็นหนึ่งในสามภาษาข้างต้น
หนึ่งสมุทร (เช่นหนึ่งรายการต่อบรรทัด)$^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";
}
ปลา
#ifndef __linux
#include "x.h"
#define X/*\
a=1 set -e
+++++++++++++++++++++_+++++++++++++....Hello World!?:Q:
#endif
echo "Hello, World!"
int m(){}
ชุดทดสอบพื้นฐาน
นั่นคือการทดสอบที่ต้องผ่าน รายละเอียดด้านล่างเป็นหนึ่ง linersสำหรับแต่ละภาษาที่โปรแกรมของคุณต้องตรวจสอบภาษาที่กำลังเขียนอยู่ (ฉันไม่ได้ตรวจสอบว่าเป็นภาษาใด)
Pyth
*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
Golfscript
;'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 ที่เกิดขึ้นจริง
Pyth
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
Golfscript
);:|;{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
Pyth
เปรียบเทียบ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')
Golfscript
Lorem IpsumLorem 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}%
ลำดับ Farey
~:c[,{){.}c(*}%.c/zip{+}*]zip{~{.@\%.}do;1=},{~<},{~\10c?*\/}${'/'*}%', '*'F'c`+' = {0/1, '+\', 1/1}'