九九の表示
動的にサイズを変えられるようにしてみました。
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 - Scheme
Gauche srfi-42とutil.matchを使った
1 2 3 4 5 6 7 8 9 10 11 12 | (use srfi-42)
(use util.match)
(define (display99 n)
(let* ((k (string-length (x->string n)))
(k2 (string-length (x->string (* n n))))
(fmt (string-append "~" (x->string k) "d * ~" (x->string k) "d = ~" (x->string k2) "d~%")))
(define (f x)
(match x
((i j ij) (format #t fmt i j ij))))
(for-each f (list-ec (: x 1 (+ n 1)) (: y 1 (+ n 1)) (list x y (* x y))))
(values)))
|
常識のない人間の解答
1 2 3 4 5 6 7 8 9 10 11 12 | (use srfi-42)
(for-each (lambda (line i)
(cond
((memq i '(0 1 2 61 62 63 64 65 66 79 80))
(print line))
((memq i '(3 67))
(print "(略)"))
(else
#f)))
(list-ec (: a 1 10) (: b 1 10) (format "~a * ~a = ~2@a" a b (* a b)))
(iota 100))
|
空気読んでないかも
1 2 | (use srfi-42)
(do-ec (: i 1 10) (: j 1 10) (format #t "~d * ~d = ~2d\n" i j (* i j)))
|
nobsun関数型脳に侵されていますね :-) lazy脳というべきか。 do-ecを使うとループの中で直接副作用を起こすことができます。 Haskellerにとってはcomposableでないのが気持ち悪いでしょうが… あと、formatは直接幅指定ができます。 ~2d で2桁。 ~vd と書くと幅自体を引数で渡すこともできます (displayNN参照)
1 2 3 4 5 6 7 8 9 10 11 12 | (use srfi-42)
(define (display99 n)
(do-ec (: x 1 (+ n 1)) (: y 1 (+ n 1))
(format #t "~d * ~d = ~2d~%" x y (* x y))))
;; n >= 10 にも対応
(define (displayNN n)
(let ((w0 (string-length (number->string n)))
(w1 (string-length (number->string (* n n)))))
(do-ec (: x 1 (+ n 1)) (: y 1 (+ n 1))
(format #t "~vd * ~vd = ~vd~%" w0 x w0 y w1 (* x y)))))
|
1 | (begin (map (lambda (y) (map (lambda (x) (print (format #f "~2d * ~2d = ~2d" y x (* x y)))) (iota 9 1))) (iota 9 1)) #t)
|






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