『文字列で+を表示する』投稿

どう書く?.org』連投。

お題はこちら

与えられた文字列で十字を描けというもの。

PHPで書(描)きました。

ブラウザで出力するなら<pre>タグで括ると良い。

$str = "abracadabra";  
  
$slen = strlen( $str );  
$bar = $str.$str[0];  
  
echo sprintf( "% ".strval($slen*2+1)."s\n", $bar );  
for ( $i = 0; $i < $slen-1; $i++ ) {  
  echo sprintf( "% ".strval($slen+1)."s% ".strval($slen)."s\n", $str[$slen-$i-1], $str[$i+1] );  
}  
echo sprintf( "%s% ".strval($slen*2)."s\n", $bar, $bar );  
for ( $i = 0; $i < $slen-1; $i++ ) {  
  echo sprintf( "%s% ".strval($slen*3)."s\n", $str[$slen-$i-1], $str[$i+1] );  
}  
echo sprintf( "%s% ".strval($slen*2)."s\n", $bar, $bar );  
for ( $i = 0; $i < $slen-1; $i++ ) {  
  echo sprintf( "% ".strval($slen+1)."s% ".strval($slen)."s\n", $str[$slen-$i-1], $str[$i+1] );  
}  
echo sprintf( "% ".strval($slen*2+1)."s\n", $bar);

$strに任意の文字列を設定すれば、それに応じた十字が描かれる。

関数化できる箇所があるけど、わかりやすさ優先でわざと同じものを書いている。

仕様として、文字列は半角英数字2文字以上とする。ガードは入れてない。

文字列’abc’の場合以下の結果となる。

   abca  
   c  b  
   b  c  
abca  abca  
c        b  
b        c  
abca  abca  
   c  b  
   b  c  
   abca

投稿:

http://ja.doukaku.org/comment/11244/

どう書く.orgへのスパム何とかしてほしい。