The Wayback Machine - https://web.archive.org/web/20160731024910/http://www.owlab.org:80/pxem/fizzbuzz.html

fizzbuzz in pxem

in English

流れ
材料
手順
解説

流れ

FizzBuzzを30バイトで

30バイトとか余裕すぎるんスけど。

fizzbuzz in pxem.zip

材料

手順

  1. explorer.exeを開きます。
  2. pxemインタプリタを置いてある階層まで移動します。
  3. それとなく振り向きざまなどに右クリックし、新規作成からテキストドキュメントを選択します。
  4. ファイル名を「ak.-akbuzz.-ak4.-akfizz.-ak2.-1.p05.-.tab.z01.-.c.m.+.c.t05.-.%.w.s01.-.m03.-.%.W.s.m.nak.-.p00.-.c.c.c.a.wak.-fizz.p00.-.c.c.a.a.w01.-.m03.-.%.w.sak.-buzz.p00.-.c.c.a.wak.-fizzbuzz.p00.-.c.a.a.md2.-02.-.!.a.d.pxe」にします。
  5. ファイルの中身を「Pxem is the shortest language.」にします。←重要!書かないと動きません。
  6. 眠さを堪え、コマンドプロンプトを開きます。
  7. pxemインタプリタのある階層まで移動して「pxemi.exe ak.-akbuzz.-ak4.-akfizz.-ak2.-1.p05.-.tab.z01.-.c.m.+.c.t05.-.%.w.s01.-.m03.-.%.W.s.m.nak.-.p00.-.c.c.c.a.wak.-fizz.p00.-.c.c.a.a.w01.-.m03.-.%.w.sak.-buzz.p00.-.c.c.a.wak.-fizzbuzz.p00.-.c.a.a.md2.-02.-.!.a.d.pxe」と入力します。
  8. すごい!30バイトでFizzBuzzできちゃったヨ!

解説

俺用語

mk x
xの値を作る。
toreg
レジスタ(一時領域)に値代入。
flag X
loopやif用のフラグをスタックに入れる。Xはラベル。
cp
値のコピー。
fromreg
レジスタからスタックに値を積む。
mod x
xで割った余り
if X
if的なの。Xはラベル。X'になるとelse部分。
delete flag
いらんフラグの削除。
print_num
printf("%d")
print "xxx"
puts("xxx")
ak.-akbuzz.-ak4.-akfizz.-ak2.-1.p
05.-	mk 5
.t	toreg
ab	flag A
.z	loop A
	01.-	mk 1 (flag B)
	.c	cp
	.m.+	fromreg and + 1
	.c.t	cp and toreg
	05.-	mk 5
	.%	mod 5
	.w		if B
		.s	delete flag B
		01.-	mk 1 (flag C)
		.m	fromreg
		03.-	mk 3
		.%	mod 3
		.w		if C
			.s	delete flag C
			.m.n	print_num
			ak.-.p
			00.-	mk 0 (flag C)
			.c.c.c  cp 0 (flag C'BB')
		.a
		.w		if C'
			ak.-
			fizz.p	print "fizz"
			00.-	mk 0 (flag C')
			.c.c	cp 0 (flag BB')
		.a
	.a
	.w		if B'
		01.-	mk 1 (flag D)
		.m	fromreg
		03.-	mk 3
		.%	mod 3
		.w		if D
			.s	delete flag D
			ak.-
			buzz.p	print buzz
			00.-	mk 0 (flag D)
			.c.c	cp 0 (flag D'B')
		.a
		.w		if D'
			ak.-
			fizzbuzz.p
			00.-	mk 0 (flag D')
			.c	cp 0 (flag B')
		.a
	.a
	.m	fromreg
	d2.-	mk 50
	02.-	mk 2
	.!	mk 100
.a.d.pxe

他のpxemコードを見る。

Tweet livedoorクリップ livedoorクリップ