九九の表示
動的にサイズを変えられるようにしてみました。
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 - Other
再帰版ver.2 二桁の場合にも右端が揃うように汎用性を持たせてみました。 例:(kuku 19) (省略) 19 * 1 = 19 19 * 2 = 38 19 * 3 = 57 19 * 4 = 76 19 * 5 = 95 19 * 6 = 114 19 * 7 = 133 19 * 8 = 152 19 * 9 = 171 19 * 10 = 190 19 * 11 = 209 19 * 12 = 228 19 * 13 = 247 19 * 14 = 266 19 * 15 = 285 19 * 16 = 304 19 * 17 = 323 19 * 18 = 342 19 * 19 = 361
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 | (defun kuku (n)
;nの桁数をlen1,最も大きな積(n*n)の桁数をlen2とする
(let ((len1 (digits n))
(len2 (digits (* n n))))
(sub n len1 len2)))
(defun sub (n len1 len2 &optional (x 1) (y 1))
(cond ((and (= x n) (> y n)) nil)
((> y n) (sub n len1 len2 (+ x 1) 1))
(t (print-space (- len1 (digits x)))
(format t "~D * " x)
(print-space (- len1 (digits y)))
(format t "~D = " y)
(print-space (- len2 (digits (* x y))))
(format t "~D~%" (* x y))
(sub n len1 len2 x (+ y 1)))))
;桁数を数える
(defun digits (m &optional (d 0))
(cond ((zerop m) d)
(t (digits (floor m 10) (incf d)))))
;空白を出力
(defun print-space (space-num)
(dotimes (i space-num)
(format t " ")))
|
Factor です。
1 2 3 4 5 6 7 8 9 10 | USING: kernel sequences math math.parser io ;
: out ( x y -- )
over number>string write
" * " write
dup number>string write
" = " write
* number>string 2 CHAR: \s pad-left write nl ;
9 [ 1+ 9 [ dupd 1+ out ] each drop ] each
|
1 2 3 4 5 6 7 8 9 10 11 | : PRINT ( i j -- , print formated i * j = i*j )
2DUP SWAP . ." *" SPACE . ." =" SPACE * 2 .R CR ;
: KUKU ( -- , print all kuku )
10 1 DO
10 1 DO J I
PRINT
LOOP
LOOP ;
KUKU
|






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