『文字列で+を表示する』投稿
『どう書く?.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へのスパム何とかしてほしい。