九九の表示
動的にサイズを変えられるようにしてみました。
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)]
|





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