少し前に、次の質問が尋ねられました:GolfScript、CJam、またはPyth? タイトルのみに基づいて、私はそれは非常に素晴らしい挑戦になると思いましたが、残念なことに、それはヒントを求める質問であることが判明しました。これが私が読みたかった挑戦です:
ゴルフの言語は実世界では使用されていないと誰が言ったのですか?誰もが知っているように、コードの行ごとのバグの割合は、使用されているプログラミング言語に関係なく同じであるため、これらの言語のデバッグおよび保守コストを削減する明確な機会があります。あなたの会社はついに光を見て、Golfscript、CJam、Pythを使用して製品を開発することにしました。
残念ながら、2、3か月後、ハードドライブにはコードスニペットが散らばっており、どの言語がどの言語で書かれているのかさえわかりません(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]明確にするために、スパムは無効です
例
-
"Crime predicted: -- Calling: 1--555- "30*{_5<{iAa*:mr}&}/
出力(複数の戻り値の例)
["Golfscript", "Cjam"]
入力
3
出力(標準出力の例)
golfscript cjam pyth
入力
if {} aazd
出力
Probably Perl
最後のケースでは、入力プログラムはエラー生成して すべての スリーオンライン通訳を。
得点、勝利基準
最短のコード勝利。「本気で」出力する場合は4バイトを追加します。次に、ボーナスを適用します。
失敗したテスト
以下は、上記の3つの言語のいずれとしても認識してはならないスニペットです。
1行(つまり、1行に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!')
ブレインファック
>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
++++++++++++++++++++++++++++++++++++++++++++++++.
-----------------.
++++++++.
+++++.
--------.
+++++++++++++++.
------------------.
++++++++.
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(){}
基本的なテストスイート
これらは合格しなければならないテストです。以下は、プログラムが書かれている言語をプログラムが検出する必要がある各言語のワンライナーです(どれが多言語かをチェックしませんでした)。
パイス
*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の回答から取得されています。
パイス
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
パイス
比較する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 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}'