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 - Ruby

そのまんま
1
2
3
4
5
(1..9).each{|x|
  (1..9).each{|y|
    printf("%d * %d = %2d\n", x,y,x*y)
  }
}

初投稿。思いつきで、何の工夫もなし。
1
2
3
4
5
(1..9).each do |i|
  (1..9).each do |j|
    puts "#{i} * #{j} " << "= " << (i * j).to_s.rjust(2)
  end
end

ちょっと細かいところだけど、
puts "#{i} * #{j} " << "= " << (i * j).to_s.rjust(2)
を
puts "#{i} * #{j} = " << (i * j).to_s.rjust(2)
に直した。
1
2
3
4
5
(1..9).each do |i|
  (1..9).each do |j|
    puts "#{i} * #{j} = " << (i * j).to_s.rjust(2)
  end
end


	
1
2
3
4
5
6
7
8
9
def product(xs, ys)
  xs.inject([]) {|r, x|
    r + ys.map {|y| [x, y] }
  }
end

product(1..9, 1..9).each do |x, y|
  printf "%d * %d = %2d\n", x, y, x * y
end

uptoがなかったのでとりあえず
1
2
3
4
5
1.upto(9){|x|
  1.upto(9){|y|
    printf("%2d * %2d = %2d\n",x,y,x*y)
  }
}

あえてsprintfの類やループを使わず.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
i, x, y = 0, 0, 0
puts (('o' * 9 + "\n") * 9).
  gsub(/^/) { (y += 1).to_s + ':' }.
  gsub(/o/) { i = x; x = (x + 1) % 9; i + 1 }.
  gsub(/^(\d+):(.+)/) {
    y, line = $~[1..-1]
    line.gsub(/\d/) {
      "#{y} * #{$&} = " +
        (' ' + (y.to_i * $&.to_i).to_s)[-2, 2] +
        "\n"
    }
  }.gsub("\n\n", "\n")

1
puts (1..9).map{|y|(1..9).map{|x|sprintf "%2d * %2d = %2d",x,y,x*y}}

Index

Feed

Other

Link

Pathtraq

loading...