[トップ][一覧][最近の更新]

編集履歴:過去のバージョン

2015/12/10 15:05:17 JST時点でのネタ:自己出力プログラムの内容

現在のバージョンとの差分を見る

編集履歴ページに戻る

  * HSPで自分自身を出力させてみよう。
  
  というネタ。プログラミングパズルの定番じゃないかと思う。
  
  で、とりあえず、作ってみた。
  
  {{{
  sdim a,256,10
  a.0="sdim a,256,10"
  a.1="for i,0,10:c=\"\":d=\"\":strlen l,a.i"
  a.2=" for j,0,l:strmid c,a.i,j,1"
  a.3="  if (c=\"\\\\\")|(c=\"\\\"\"):d+=\"\\\\\""
  a.4="  d+=c"
  a.5=" next"
  a.6=" k=i:str k:mes \"a.\"+k+\"=\\\"\"+d+\"\\\"\":next"
  a.7="a.0=\"mes a.0\""
  a.8="mes a.0"
  a.9="for i,1,10:mes a.i:next:stop"
  mes a.0
  for i,0,10:c="":d="":strlen l,a.i
   for j,0,l:strmid c,a.i,j,1
   if (c="\\")|(c="\""):d+="\\"
    d+=c
   next
   k=i:str k:mes "a."+k+"=\""+d+"\"":next
  a.0="mes a.0"
  mes a.0
  for i,1,10:mes a.i:next:stop
  }}}
  
  議論の叩き台になると思うので、上のコードはできるだけいじらないで下さいな。--[[iwata]]
  
  
  * 改良案など
  
  - かなり冗長なので、もっとクールなコードをガンガン貼って下さい。--[[iwata]]
  
  ** 例のブツです|・)ノ
  
  sdim s,1024:str q:poke q,0,34:sdim t,1024:t="+q:s+s+t:poke s,44,34:poke s,128,34:mesbox s,winx,winy:stop;Output clone of myself!":s="sdim s,1024:str q:poke q,0,34:sdim t,1024:t='+q:s+s+t:poke s,44,34:poke s,128,34:mesbox s,winx,winy:stop;Output clone of myself!':s="+q:s+s+t:poke s,44,34:poke s,128,34:mesbox s,winx,winy:stop;Output clone of myself!
  
  - てめぇらもっとクールなコードをガンガン貼れるもんなら貼って下さい。おながいします。--[[Yuki]]
  -- 1行プログラムの常として、バラして評価しないと流れが掴みにくいですね。同じコードが3回出てきますけど、2回にできればもっといい感じだと思います--[[iwata]]
  
  ** 卑怯かもしれないけど
  {{{
  str a
  bload "hsptmp",a
  mes a
  stop
  }}}
  - ……ダメですか?
  -- コンパイルしたら動きませんよね。
  あと、外部ファイルを参照してもよいのなら、HSPではありませんが、
  {{{
  #!/bin/sh
  cat $0
  }}}
  のようなコードもアリになってしまうし、面白くない。ちゃんとクワイン化して欲しいな、ということで。
  -- やっぱダメですか(笑
  -- コンパイル(実行ファイル作成)したら動かなければ「#pack "hsptmp"」
  
  ** 別例1
  
  {{{
  sdim a,256,10
  a.0="sdim a,256,10"
  a.1="for i,0,10:c=\"\":d=\"\":strlen l,a.i"
  a.2=" for j,0,l:strmid c,a.i,j,1"
  a.3="  if (c=\"\\\\\")|(c=\"\\\"\"):d+=\"\\\\\""
  a.4="  d+=c"
  a.5=" next"
  a.6=" k=i:str k:mes \"a.\"+k+\"=\\\"\"+d+\"\\\"\":next"
  a.7="a.0=\"mes a.0\""
  a.8="mes a.0"
  a.9="for i,1,10:mes a.i:next:stop"
  }}}
  
  編集中...
  
  * 議論
  
  ----
  参考: http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/quine.html