KuinでQuine

Last Modified: 2018/12/03 22:29:58.
Kuin関連情報の個人的まとめに戻る


概要

KuinでQuine http://tatt.ch/kuin/code/quine/index.html まだ誰もそれっぽいものを公開していないようだったので作ってみました。 #Kuin9月 14, 2012

コード

Kuinっぽさを意識したQuine

quine.kn

{ 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

コードゴルフを意識したQuine

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文字を含んでいるためブラウザ上に表示できません。上記リンクを右クリックしてコードをダウンロードしてください。

宣伝

Kuin関連情報の個人的まとめに戻る

This page has been described by Tatt (tatt61880) ---- Twitter: @tatt61880

ツイート