九九の表示
動的にサイズを変えられるようにしてみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | static void Main(string[] args)
{
kuku(9);
kuku(99);
kuku(999);
}
static void kuku(int n)
{
int len = n.ToString().Length;
int xLen = (n * n).ToString().Length;
string format = "{0, " + len + "} * {1, " + len + "} = {2, " + xLen + "}";
for (int i = 1; i <= n ; ++i)
for (int j = 1; j <= n ; ++j)
Console.WriteLine(format, i, j, i * j);
}
|
面白くない答えですが・・・ sayは、printlnだと思ってください。 t_ishida
1 | for(var i=1;i<10;i++) for(var j = 1;j<10;j++) say([i,'*',j,'=',''].join(' ') + (i * j > 9 ? '' : ' ') + i * j);
|
Posted feedbacks - PHP
インドでも使える版
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php
function print_kuku($max) {
$len1 = strlen($max);
$len2 = strlen(pow($max, 2));
for ($i = 1; $i <= $max; $i++) {
for ($j = 1; $j <= $max; $j++) {
printf("%{$len1}s * %{$len1}s = %{$len2}s\n", $i, $j, $i*$j);
}
}
}
print_kuku(9); //日本
print_kuku(20); //インド
?>
|
何桁でも表記できるものを作成してみました。 かつ第二引数でHTML表示させる時の、 タグ形成も出来るようにしてます。
負荷軽減を考えるなら、 「strlen」の箇所を関数の最初に計算して、 変数にしてもいいかと思います。 とりあえずは行数を少なくするようにしてみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <?php
function listKuku($num=9, $html=false)
{
$list = "";
for ($i=1; $i<$num+1; $i++) {
for ($j=1; $j<$num+1; $j++) {
$list .= str_pad($i, strlen($num), " ", STR_PAD_LEFT)." * ".str_pad($j, strlen($num), " ", STR_PAD_LEFT)." = ".str_pad($i*$j, strlen($num*$num), " ", STR_PAD_LEFT)."\n";
}
}
if ($html) {
$list = str_replace(" ", " ", $list);
$list = nl2br($list);
//TABLE等作成させても可
}
return $list;
}
//header("Content-Type: text/html; charset=utf-8"); //必要なら使用
//使用方法1
$list = listKuku();
echo $list;
//使用方法2
$big_list = listKuku(40);
echo $big_list;
//使用方法3
$html_list = listKuku(40, true);
echo $html_list;
?>
|





にしお
#3418()
Rating0/2=0.00
なお、この問題は掛け算をどうやるかではなく、 どうやって右端がそろうようにレイアウトするかに重点を置いているので、 下のようなへこんだ出力は禁止です。
2 replies [ reply ]