ASCII 2Dゲームマップ

問題

与えられた入力 a は、出力の各
‘ブロック’に対して1つの要素しか持たない限り、aは任意の入力形式の文字のグリッドです。

そして、 b を入力します。ここで、bは入力 a
と同じサイズのグリッドです。

There are two types of road, a 1 represents a stone road marked
by @ and a 2 represents a dirt road marked by
#

  • @ 道路はブロック内の中央に配置され、道路が隣接している場合はそのサイズが6×6です。
  • 道路が隣接している場合はそのブロックがグリッドセルの境界線まで拡張された道路がブロックの中央に配置されます。

入力 a にASCII文字の行番号8×8でグリッドオフセットを出力し、入力
b から ‘road’をオーバーレイします。

Input a=[[a,b,a],[b,a,b],[a,b,a]]
b=[[1,1,1],[2,0,1],[2,0,0]]

出力:

ステップ1:グリッド(入力 a の8×8表現)

aaaaaaaabbbbbbbbaaaaaaaa
aaaaaaaabbbbbbbbaaaaaaaa
aaaaaaaabbbbbbbbaaaaaaaa
aaaaaaaabbbbbbbbaaaaaaaa
aaaaaaaabbbbbbbbaaaaaaaa
aaaaaaaabbbbbbbbaaaaaaaa
aaaaaaaabbbbbbbbaaaaaaaa
aaaaaaaabbbbbbbbaaaaaaaa
bbbbbbbbaaaaaaaabbbbbbbb
bbbbbbbbaaaaaaaabbbbbbbb
bbbbbbbbaaaaaaaabbbbbbbb
bbbbbbbbaaaaaaaabbbbbbbb
bbbbbbbbaaaaaaaabbbbbbbb
bbbbbbbbaaaaaaaabbbbbbbb
bbbbbbbbaaaaaaaabbbbbbbb
bbbbbbbbaaaaaaaabbbbbbbb
aaaaaaaabbbbbbbbaaaaaaaa
aaaaaaaabbbbbbbbaaaaaaaa
aaaaaaaabbbbbbbbaaaaaaaa
aaaaaaaabbbbbbbbaaaaaaaa
aaaaaaaabbbbbbbbaaaaaaaa
aaaaaaaabbbbbbbbaaaaaaaa
aaaaaaaabbbbbbbbaaaaaaaa
aaaaaaaabbbbbbbbaaaaaaaa

ステップ2: b で表される道路でオーバーレイする:

aaaaaaaabbbbbbbbaaaaaaaa
[email protected]@@@@@@@@@@@@@@@@@@@@@a
[email protected]@@@@@@@@@@@@@@@@@@@@@a
[email protected]@@@@@@@@@@@@@@@@@@@@@a
[email protected]@@@@@@@@@@@@@@@@@@@@@a
[email protected]@@@@@@@@@@@@@@@@@@@@@a
[email protected]@@@@@@@@@@@@@@@@@@@@@a
[email protected]@@@@@[email protected]@@@@@a
bb####[email protected]@@@@@b
bb####[email protected]@@@@@b
bb####[email protected]@@@@@b
bb####[email protected]@@@@@b
bb####[email protected]@@@@@b
bb####[email protected]@@@@@b
bb####[email protected]@@@@@b
bb####bbaaaaaaaabbbbbbbb
aa####aabbbbbbbbaaaaaaaa
aa####aabbbbbbbbaaaaaaaa
aa####aabbbbbbbbaaaaaaaa
aa####aabbbbbbbbaaaaaaaa
aa####aabbbbbbbbaaaaaaaa
aa####aabbbbbbbbaaaaaaaa
aaaaaaaabbbbbbbbaaaaaaaa
aaaaaaaabbbbbbbbaaaaaaaa

ステップ3:各行を線番号でオフセットする:

aaaaaaaabbbbbbbbaaaaaaaa
 [email protected]@@@@@@@@@@@@@@@@@@@@@a
  [email protected]@@@@@@@@@@@@@@@@@@@@@a
   [email protected]@@@@@@@@@@@@@@@@@@@@@a
    [email protected]@@@@@@@@@@@@@@@@@@@@@a
     [email protected]@@@@@@@@@@@@@@@@@@@@@a
      [email protected]@@@@@@@@@@@@@@@@@@@@@a
       [email protected]@@@@@[email protected]@@@@@a
        bb####[email protected]@@@@@b
         bb####[email protected]@@@@@b
          bb####[email protected]@@@@@b
           bb####[email protected]@@@@@b
            bb####[email protected]@@@@@b
             bb####[email protected]@@@@@b
              bb####[email protected]@@@@@b
               bb####bbaaaaaaaabbbbbbbb
                aa####aabbbbbbbbaaaaaaaa
                 aa####aabbbbbbbbaaaaaaaa
                  aa####aabbbbbbbbaaaaaaaa
                   aa####aabbbbbbbbaaaaaaaa
                    aa####aabbbbbbbbaaaaaaaa
                     aa####aabbbbbbbbaaaaaaaa
                      aaaaaaaabbbbbbbbaaaaaaaa
                       aaaaaaaabbbbbbbbaaaaaaaa

ルール:

  • 先頭の空白や改行を許可します。
  • 後続の空白と改行が許可されています。
  • これはコードゴルフで最短のコードが勝てるようになっています

Here is an extra test case with all edge
cases in I can think of.

ベストアンサー

PHP 857バイト

誰もが
“ゴルフ”と呼べるものではありませんが、他に誰も何も入っていないようだから、これはスタートだと思いました。大規模ですが、うまくいくようです。私は時間があれば、明日はそれをゴルフにしようと努力するだろう。

function a($a,$b){$c=sizeof($a);$d=sizeof($a[0]);for($e=0;$e<$c;$e++){for($f=0;$f<$d;$f++){$A=$GLOBALS['h']=$a[$e][$f];$i=$GLOBALS['i']=$b[$e][$f];$B=j($i==1&&$b[$e-1][$f]>0);$C=j($i==1&&$b[$e][$f+1]>0);$D=j($i==1&&$b[$e+1][$f]>0);$E=j($i==1&&$b[$e][$f-1]>0);$F=j($i>0&&$b[$e-1][$f]>0);$G=j($i>0&&$b[$e][$f+1]>0);$H=j($i>0&&$b[$e+1][$f]>0);$I=j($i>0&&$b[$e][$f-1]>0);$J=j($i==1);$K=j($i==1||($i>1&&$b[$e-1][$f]>0));$L=j($i==1||($i>1&&$b[$e][$f+1]>0));$M=j($i==1||($i>1&&$b[$e+1][$f]>0));$N=j($i==1||($i>1&&$b[$e][$f-1]>0));$O=j($i>0);$P=$e*8;$g[$P].="$A$B$F$F$F$F$B$A";$g[$P+1].="$E$J$K$K$K$K$J$C";$l="$I$N$O$O$O$O$L$G";$g[$P+2].=$l;$g[$P+3].=$l;$g[$P+4].=$l;$g[$P+5].=$l;$g[$P+6].="$E$J$M$M$M$M$J$C";$g[$P+7].="$A$D$H$H$H$H$D$A";}}foreach($g as$h){echo str_repeat(' ', $i++)."$hn";}}function j($k){return($k)?strtr($GLOBALS['i'],'12','@#'):$GLOBALS['h'];}

テストケース

error_reporting(0);
$a=[[a,b,a],[b,a,b],[a,b,a]];
$b=[[1,1,1],[2,0,1],[2,0,0]];
a($a,$b);

出力

aaaaaaaabbbbbbbbaaaaaaaa
 [email protected]@@@@@@@@@@@@@@@@@@@@@a
  [email protected]@@@@@@@@@@@@@@@@@@@@@a
   [email protected]@@@@@@@@@@@@@@@@@@@@@a
    [email protected]@@@@@@@@@@@@@@@@@@@@@a
     [email protected]@@@@@@@@@@@@@@@@@@@@@a
      [email protected]@@@@@@@@@@@@@@@@@@@@@a
       [email protected]@@@@@[email protected]@@@@@a
        bb####[email protected]@@@@@b
         bb####[email protected]@@@@@b
          bb####[email protected]@@@@@b
           bb####[email protected]@@@@@b
            bb####[email protected]@@@@@b
             bb####[email protected]@@@@@b
              bb####[email protected]@@@@@b
               bb####bbaaaaaaaabbbbbbbb
                aa####aabbbbbbbbaaaaaaaa
                 aa####aabbbbbbbbaaaaaaaa
                  aa####aabbbbbbbbaaaaaaaa
                   aa####aabbbbbbbbaaaaaaaa
                    aa####aabbbbbbbbaaaaaaaa
                     aa####aabbbbbbbbaaaaaaaa
                      aaaaaaaabbbbbbbbaaaaaaaa
                       aaaaaaaabbbbbbbbaaaaaaaa

テストケース

error_reporting(0);
$a=[['.', ',', '.', ',', '.', ',', '.'],['.', ',', '.', ',', '.', ',', '.'],['.', ',', '.', ',', '.', ',', '1']];
$b=[[0,1,0,0,1,2,0],[1,1,1,2,2,2,2],[0,2,0,0,0,1,0]];
a($a,$b);

出力

........,,,,,,,,........,,,,,,,,........,,,,,,,,........
 ........,@@@@@@,........,,,,,,,,[email protected]@@@@@@,,,,,,,,........
  ........,@@@@@@,........,,,,,,,,[email protected]@@@@@@######,,........
   ........,@@@@@@,........,,,,,,,,[email protected]@@@@@@######,,........
    ........,@@@@@@,........,,,,,,,,[email protected]@@@@@@######,,........
     ........,@@@@@@,........,,,,,,,,[email protected]@@@@@@######,,........
      ........,@@@@@@,........,,,,,,,,[email protected]@@@@@@,,####,,........
       ........,@@@@@@,........,,,,,,,,[email protected]@@@@@.,,####,,........
        ........,@@@@@@,........,,,,,,,,..####..,,####,,........
         [email protected]@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,..####..,,####,,........
          [email protected]@@@@@@@@@@@@@@@@@@@@@@##############################..
           [email protected]@@@@@@@@@@@@@@@@@@@@@@##############################..
            [email protected]@@@@@@@@@@@@@@@@@@@@@@##############################..
             [email protected]@@@@@@@@@@@@@@@@@@@@@@##############################..
              [email protected]@@@@@@@@@@@@@@@@@@@@@@,,,,,,,,........,,####,,........
               ........,@@@@@@,........,,,,,,,,........,,####,,........
                ........,,####,,........,,,,,,,,........,@@@@@@,11111111
                 ........,,####,,........,,,,,,,,........,@@@@@@,11111111
                  ........,,####,,........,,,,,,,,........,@@@@@@,11111111
                   ........,,####,,........,,,,,,,,........,@@@@@@,11111111
                    ........,,####,,........,,,,,,,,........,@@@@@@,11111111
                     ........,,####,,........,,,,,,,,........,@@@@@@,11111111
                      ........,,,,,,,,........,,,,,,,,........,@@@@@@,11111111
                       ........,,,,,,,,........,,,,,,,,........,,,,,,,,11111111

テストケース

error_reporting(0);
$a=[[p,p,p,p,h,h,h,p,p,p,p],[p,p,p,p,h,h,h,p,p,p,p],[p,p,p,p,h,h,h,p,p,p,p],[p,p,p,p,h,h,h,p,p,p,p],[p,p,p,p,h,h,h,p,p,p,p]];
$b=[[1,1,1,0,1,0,1,0,1,1,1],[1,0,1,0,1,0,1,0,1,0,1],[1,1,1,0,1,1,1,0,1,1,1],[1,0,0,0,1,0,1,0,1,0,0],[1,0,0,0,1,0,1,0,1,0,0]];
a($a,$b);

出力

pppppppppppppppppppppppppppppppphhhhhhhhhhhhhhhhhhhhhhhhpppppppppppppppppppppppppppppppp
 [email protected]@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@p
  [email protected]@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@p
   [email protected]@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@p
    [email protected]@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@p
     [email protected]@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@p
      [email protected]@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@p
       [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@p
        [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@p
         [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@p
          [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@p
           [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@p
            [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@p
             [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@p
              [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@p
               [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@p
                [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@p
                 [email protected]@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@p
                  [email protected]@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@p
                   [email protected]@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@p
                    [email protected]@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@p
                     [email protected]@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@p
                      [email protected]@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@@@@@@p
                       [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@ppppppppppppppppp
                        [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@ppppppppppppppppp
                         [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@ppppppppppppppppp
                          [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@ppppppppppppppppp
                           [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@ppppppppppppppppp
                            [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@ppppppppppppppppp
                             [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@ppppppppppppppppp
                              [email protected]@@@@@[email protected]@@@@@h[email protected]@@@@@[email protected]@@@@@ppppppppppppppppp
                               [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@ppppppppppppppppp
                                [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@ppppppppppppppppp
                                 [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@ppppppppppppppppp
                                  [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@ppppppppppppppppp
                                   [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@ppppppppppppppppp
                                    [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@ppppppppppppppppp
                                     [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@ppppppppppppppppp
                                      [email protected]@@@@@[email protected]@@@@@[email protected]@@@@@[email protected]@@@@@ppppppppppppppppp
                                       pppppppppppppppppppppppppppppppphhhhhhhhhhhhhhhhhhhhhhhhpppppppppppppppppppppppppppppppp

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です