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

 『どう書く?.org』連投。
 お題はこちら
 与えられた文字列で十字を描けというもの。

 PHPで書(描)きました。
 ブラウザで出力するなら<pre>タグで括ると良い。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$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’の場合以下の結果となる。

1
2
3
4
5
6
7
8
9
10
   abca
   c  b
   b  c
abca  abca
c        b
b        c
abca  abca
   c  b
   b  c
   abca

投稿:
http://ja.doukaku.org/comment/11244/
PHP Rank:16(61.6%)

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

Related Posts

Comments are closed.