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

普通に。
1
2
3
for i in xrange(1, 10):
    for j in xrange(1, 10):
        print "%d * %d = %2d" % (i, j, i * j)

おなじく一行python版です。
1
print '\n'.join(['%d * %d = %2d' % (i, j, i*j) for i in range(1, 10) for j in range(1, 10)])

どれが何桁でもズレないの作りました。
%dの文字幅に変数使えたらいいのになー。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
def kuku(A=[0],B=[0]):
  keta_A = len( str(A[-1]) )
  keta_B = len( str(B[-1]) )
  keta_ans = len( str( A[-1]*B[-1] ))
  
  for i in A:
    print
    I = str(i).rjust(keta_A)
    
    for j in B:
      J = str(j).rjust(keta_B)
      print "%s * %s = %s" \
            %( I, J, str(i*j).rjust(keta_ans) )

a=range(1,10)
kuku(a,a) #九九
kuku([8],range(1,21)) #八の段

あったのかー。
1
2
3
4
5
6
7
8
9
def digit(xs=[]):
	return [len( str(i) ) for i in xs]

def kuku(A=range(1,10),B=range(1,10)):
  lA,lB = A[-1],B[-1]
  ketaA, ketaB, ketaAns = digit([ lA, lB, lA*lB ])
  for i in A:
    for j in B:
      print "%*d * %*d = %*d" %( ketaA,i,  ketaB,j,  ketaAns,i*j )

%2sのところ%2dにしてstr(x*y)のところをたんにx*yにすればいいと後になって気づいたorz
掛け算が9x9が最高なんでいろいろと楽チンですね。
1
2
3
for x in range(1,10):
    for y in range(1,10):
        print "%d * %d = %2s"%(x,y,str(x*y))

え、これじゃだめなの?
1
2
3
def out(a,b):
    print "%d * %d = %2d" % (a, b, a*b)
[out(a,b) for a in range(1,10) for b in range(1,10)]

Index

Feed

Other

Link

Pathtraq

loading...