Last Modified: 2018/12/03 22:29:58.
Kuin関連情報の個人的まとめに戻る
KuinでQuine http://tatt.ch/kuin/code/quine/index.html まだ誰もそれっぽいものを公開していないようだったので作ってみました。 #Kuin9月 14, 2012
{ Quine in Kuin. @tatt61880 {Last Modified: 2018/12/03 22:29:07.}}
func main()
func quine(str: []char)
var s: []char :: ""
for i(0, ^str - 1)
var c: char :: str[i]
switch(c)
case '\n'
do s :~ "\\n\" ~\n\t|\""
case '\t'
do s :~ "\\t"
case '\\', '"'
do s :~ ['\\', c]
default
do s :~ [c]
end switch
end for
do cui@print("\{str ~ s}\"\n\tdo quine(str)\nend func\n")
end func
const str: []char :: "{ Quine in Kuin. @tatt61880 {Last Modified: 2018/12/03 22:29:07.}}\n" ~
|"func main()\n" ~
|"\tfunc quine(str: []char)\n" ~
|"\t\tvar s: []char :: \"\"\n" ~
|"\t\tfor i(0, ^str - 1)\n" ~
|"\t\t\tvar c: char :: str[i]\n" ~
|"\t\t\tswitch(c)\n" ~
|"\t\t\tcase '\\n'\n" ~
|"\t\t\t\tdo s :~ \"\\\\n\\\" ~\\n\\t|\\\"\"\n" ~
|"\t\t\tcase '\\t'\n" ~
|"\t\t\t\tdo s :~ \"\\\\t\"\n" ~
|"\t\t\tcase '\\\\', '\"'\n" ~
|"\t\t\t\tdo s :~ ['\\\\', c]\n" ~
|"\t\t\tdefault\n" ~
|"\t\t\t\tdo s :~ [c]\n" ~
|"\t\t\tend switch\n" ~
|"\t\tend for\n" ~
|"\t\tdo cui@print(\"\\{str ~ s}\\\"\\n\\tdo quine(str)\\nend func\\n\")\n" ~
|"\tend func\n" ~
|"\tconst str: []char :: \""
do quine(str)
end func
KuinでQuine http://tatt.ch/kuin/code/quine/index.html 【挑戦状】 447バイトより小さなサイズで書ける人はいますか? #Kuin #Quine #codegolf9月 15, 2012
※2018/12/03時点でのKuin用に書き直したら440バイトになりました。
440バイトのコード → quine440.kn
func main()
func q(s:[]char)
for i(0,195)
if(s[i]='\n')
do s:~"\\n"
elif(s[i]='\\'|s[i]='"')
do s:~"\\\{s[i]}"
else
do s:~"\{s[i]}"
end if
end for
do cui@print(s~"\")\nend func\n")
end func
do q("func main()\nfunc q(s:[]char)\nfor i(0,195)\nif(s[i]='\\n')\ndo s:~\"\\\\n\"\nelif(s[i]='\\\\'|s[i]='\"')\ndo s:~\"\\\\\\{s[i]}\"\nelse\ndo s:~\"\\{s[i]}\"\nend if\nend for\ndo cui@print(s~\"\\\")\\nend func\\n\")\nend func\ndo q(\"")
end func
最短249バイト → Quine249.kn
※古いバージョンのKuinで動作していたプログラムです。最新用に書き換えるのが面倒なのでメンテナンスしていませんm(__)m
※非SGML文字を含んでいるためブラウザ上に表示できません。上記リンクを右クリックしてコードをダウンロードしてください。
This page has been described by Tatt (tatt61880) ---- Twitter: @tatt61880
ツイート