challenge 九九の表示

掛け算の九九を下のように表示してください。

1 * 1 =  1
1 * 2 =  2
1 * 3 =  3
(略)
7 * 8 = 56
7 * 9 = 63
8 * 1 =  8
8 * 2 = 16
8 * 3 = 24
8 * 4 = 32
(略)
9 * 8 = 72
9 * 9 = 81

なお、この問題は掛け算をどうやるかではなく、 どうやって右端がそろうようにレイアウトするかに重点を置いているので、 下のようなへこんだ出力は禁止です。

7 * 9 = 63
8 * 1 = 8
8 * 2 = 16
動的にサイズを変えられるようにしてみました。
 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(" ", "&nbsp;", $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;

?>

Index

Feed

Other

Link

Pathtraq

loading...