九九の表示
動的にサイズを変えられるようにしてみました。
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 - Common Lisp
再帰版
1 2 3 4 5 | (defun kuku (&optional (x 1) (y 1))
(cond ((and (= x 9) (> y 9)) nil)
((> y 9) (terpri) (kuku (1+ x) 1))
(t (format t "~D * ~D = ~2D~%" x y (* x y))
(kuku x (1+ y)))))
|
ibazaさん(#3088)のきれいな解答の後で投稿するのは恥ずかしいのですが、doループで…。 おまけで9*9以上にも対応してみました…。
1 2 3 4 5 6 7 | (defun print-kuku (&optional (n 9))
(let* ((dn (1+ (truncate (log (expt n 2) 10))))
(dnn (1+ (/ dn 2))))
(do ((i 1 (1+ (mod i n)))
(j 1 (if (= i n) (1+ j) j)))
((> j n))
(format t "~:[~;~%~]~VD *~VD = ~VD~%" (= i 1) dnn j dnn i dn (* j i)))))
|





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