スリリンが好きだ

カンペンのおかげで、ブログにパズルを掲載して、解いてもらうことが簡単にできるようになっています。下のような感じが一般的ですかね。スリザーリンクです。

カンペンにリンク

スリザーリンクのルール(ニコリのページ)


とはいうものの、画像を表示することもJavaを起動することも難しい環境もありましょう。そういう時はテキストで書くことが考えられます。例えばこんな。

・ ・ ・ ・ ・ ・ ・ ・ ・
   3         1 2 
・ ・ ・ ・ ・ ・ ・ ・ ・
   3   3         
・ ・ ・ ・ ・ ・ ・ ・ ・
       0   3 2   
・ ・ ・ ・ ・ ・ ・ ・ ・
 3               
・ ・ ・ ・ ・ ・ ・ ・ ・
 1   1     1   1 
・ ・ ・ ・ ・ ・ ・ ・ ・
 2   1     3   3 
・ ・ ・ ・ ・ ・ ・ ・ ・
               3 
・ ・ ・ ・ ・ ・ ・ ・ ・
   0 2   3       
・ ・ ・ ・ ・ ・ ・ ・ ・
         3   0   
・ ・ ・ ・ ・ ・ ・ ・ ・
 0 2         1   
・ ・ ・ ・ ・ ・ ・ ・ ・

このくらいだと直接書いてもどうということはないですが、「簡易ループメーカー」というフリーソフトを使用すると簡単に作成できます。

とはいうものの、PencilBoxの方が使い慣れているとか、PencilBoxで作成した資産を利用したいとか、ループメーカーと題されたソフトウェアを使うことはできないとか、いろいろな事情があると思います。

そんな時のために、pencilbox形式のファイルからテキスト形式に変換するawkスクリプトを作成しました。スクリプトは記事の最後に載っけますが、とりあえず出力はこんな感じ。

・ ・ ・ ・ ・ ・ ・ ・ ・
   3         1 2 
・ ・ ・ ・ ・ ・ ・ ・ ・
   3   3         
・ ・ ・ ・ ・ ・ ・ ・ ・
       0   3 2   
・ ・ ・ ・ ・ ・ ・ ・ ・
 3               
・ ・ ・ ・ ・ ・ ・ ・ ・
 1   1     1   1 
・ ・ ・ ・ ・ ・ ・ ・ ・
 2   1     3   3 
・ ・ ・ ・ ・ ・ ・ ・ ・
               3 
・ ・ ・ ・ ・ ・ ・ ・ ・
   0 2   3       
・ ・ ・ ・ ・ ・ ・ ・ ・
         3   0   
・ ・ ・ ・ ・ ・ ・ ・ ・
 0 2         1   
・ ・ ・ ・ ・ ・ ・ ・ ・

結果だけだと、「簡易ループメーカー」の出力と区別できませんけど。


で、まあ、作成意図はこっちなんですが、途中まで作成した問題ファイルをこのawkスクリプトにかけるとこんな感じ。

これが、

こんな感じ。

・―・―・ ・ ・ ・―・―・―・
|  3|     |  1 2|
・ ・―・ ・―・ ・ ・ ・ ・
| |3  |3|       |
・ ・―・―・ ・―・ ・ ・ ・
|      0   @ @   
・ ・ ・ ・ ・ ・ ・ ・ ・
 @               
・ ・ ・ ・ ・ ・ ・ ・ ・
 @   @     @   @ 
・ ・ ・ ・ ・ ・ ・ ・ ・
 @   @     @   @ 
・ ・ ・ ・ ・ ・ ・ ・ ・
    |          @ 
・ ・ ・―・ ・ ・ ・ ・ ・
|  0 2|  @       
・―・ ・ ・ ・ ・ ・ ・ ・
  |      @   @   
・ ・―・ ・ ・ ・ ・ ・ ・
 0 2|        @   
・ ・ ・―・ ・ ・ ・ ・ ・

@は未確定文字ということでひとつ。

スクリプトは以下。

BEGIN{
 tate = 10;
 yoko = 10;
}

{
 if(NR==1){
  fn = "b_" FILENAME;
  tate=$1;
 }
 else if(NR==2){
  yoko=$1;
 }else if(NR fn;
  }
  printf "・\n" >fn;
  for(j=0;j fn;
  }
   printf("%s\n",t[i*(yoko+1)+yoko]) > fn;
 }
 for(j=0;j fn;
 }
 printf "・\n" >fn;
}