Bir süre önce, aşağıdaki soru soruldu: GolfScript, CJam veya Pyth? Sadece başlığa dayanarak, bunun çok güzel bir meydan okuma olacağını düşündüm, ancak ne yazık ki, ipuçları isteyen bir soru olduğu ortaya çıktı. İşte okumak istediğim zorluk:
Golf dünyasının Gerçek Dünya'da kullanılmadığını kim söyledi? Herkesin bildiği gibi, kod satırı başına hata oranı kullanılan programlama dilden bağımsız olarak aynıdır, bu nedenle hata ayıklama ve bakım maliyetlerini bu dillerle azaltmak için açık bir fırsat vardır. Şirketiniz nihayet ışığı gördü ve ürünlerini geliştirmek için Golfscript, CJam ve Pyth kullanmaya karar verdi.
Ne yazık ki, birkaç ay sonra, sabit diskleriniz kod parçacıklarıyla doludur ve hangilerinin hangi dillerde yazıldığını bile bilmiyorsunuz (hatta bazı programcıların Perl kullandığından şüpheleniyorsunuz).
Hangi programın yazıldığı dilin CJam, Golfscript veya Pyth olduğunu algılamak için bir araç yazmalısınız. Durum kritik, istediğiniz herhangi bir dili kullanabilirsiniz, ancak lütfen kısa tutun (veri depolama pahalı: ne kadar çok bayt kullanırsak, maliyeti o kadar artar).
Genel
- En kısa kod kazanma
- Standart boşluklar vs.
- Çevrimiçi tercüman kullanma
- Bir işlev veya program yazabilirsiniz
- Kendi dilinizi belirlemek için eval'ü kullanabilirsiniz
Giriş
- Girişiniz standart giriş akışından veya bir dize olarak alınır.
- Giriş yalnızca ASCII yazdırılabilir karakterleri ve satır beslemeleri içeriyor
- Girişin boyutu 256 byte uzunluğunda
Çıktı
- Çıktı, çıktı akışına yazdırılır veya bir dizi dizge / sembol olarak döndürülür
Girdi şüphesiz geçerli bir X programı ise, yazdırın veya X , X ∈ {CJam, Pyth, Golfscript} yazın veya geri dönün.
Not : "şüphesiz", herhangi bir dili sürekli olarak tespit edemeyen aptal bir analizörle cevap verebileceğiniz anlamına gelmez. İçin Pyth , beklediğim Basit Programları tanınan (ancak hiçbir hardcoding) edebilirsiniz. Aynı şey CJam ( hile tabaka , örnek ) ve Golfscript ( örnekler ). Önceki bağlantılar, her dilin özelliklerine işaret eder. Bulanık / bayesli bir yaklaşım kullanıyorsanız, "şüphesiz", yüksek bir güven düzeyi anlamına gelir (örneğin, sınıflandırmanızla% 99 puan alırsınız). Gerçek test takımı için aşağıya bakın.
Giriş birden fazla dilde geçerliyse, algılanan her dil yazdırılmalı / iade edilmelidir. Yazdırıldığında, birden fazla çıktı arasında bir ayırıcı olmalıdır (örn. Boşluk, yeni satır, virgül ...).
- Dillerin denenme sırası önemli değil
- Davayı umursamıyorum (CJam, cjam, CJAM, SPAM) [1]
- Eğer yukarıdaki dilin hiçbiri , baskı algılandığında "
Probably Perl
" . Mbomb007'den gelen bu yorum sayesinde , yukarıdaki durumdaSeriously
4 baytlık bir ceza ("her iki dize arasındaki fark) " " çıktısı alabilirsiniz .
[1] Sadece açık olmak gerekirse, SPAM geçersiz
Örnekler
-
"Crime predicted: -- Calling: 1--555- "30*{_5<{iAa*:mr}&}/
Çıktı (çoklu dönüş değeri örneği)
["Golfscript", "Cjam"]
Giriş
3
Çıktı (standart çıktıya örnek)
golfscript cjam pyth
Giriş
if {} aazd
Çıktı
Probably Perl
Son durumda, giriş programı Her Üç çevrimiçi yorumlayıcı ile birlikte bir hata üretir .
Puanlama, kazanan kriter
En kısa kod kazanır. "Gerçekten" çıktısını alıyorsanız 4 bayt ekleyin. Ardından ikramiye uygulayın.
Başarısız testler
Aşağıdakiler, yukarıdaki üç dilden herhangi biri olarak tanınmaması gereken snippet'lerdir .
Tek gömlekler (yani her satıra bir giriş)$^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";
}
Balık
#ifndef __linux
#include "x.h"
#define X/*\
a=1 set -e
+++++++++++++++++++++_+++++++++++++....Hello World!?:Q:
#endif
echo "Hello, World!"
int m(){}
Temel test paketi
Bunlar geçmesi gereken testler . Aşağıda , programınızın yazıldığı dili algılaması gereken her dil için tek bir gömlek bulunmaktadır (hangilerinin çokgrup olduğunu kontrol etmedim).
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=}{;}?}/
Gümüş bonus: bayt sayısı * 0.6
Önceki tüm testlerin yanı sıra aşağıdaki tek gömlekleri geçmelidir. Tüm bu snippet'ler gerçek CodeGolf cevaplarından alınmıştır.
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*
Altın bonusu: önceki puan * 0.8
Pyth
Karşılaştırmakjdm@cd)._-FQcj"
is
equal greater less
to than
"Qb
Kardan adam
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
Büyükrri: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
Kardan adam
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.
Dijital saat
:*{32' _':$@'14'{?~!=}:&~32}%n*{:x' |':|\'1237'&$x'017'&|x'56'&}%n*{:x|\'134579'&$x'147'&|x'2'&}%
İyi ki doğdun
4,{"Happy Birthday "["To You""Dear GolfScript"]@2==n}%
Farey dizisi
~:c[,{){.}c(*}%.c/zip{+}*]zip{~{.@\%.}do;1=},{~<},{~\10c?*\/}${'/'*}%', '*'F'c`+' = {0/1, '+\', 1/1}'