challenge 与えられた数字のケタ数

与えられた数字のケタ数と、最大桁の位を求めてください。
数字が2469なら4桁で最大桁は1000の位です。
600なら3と100、1なら1と1です。

このお題はsusuさんの投稿です。ご投稿ありがとうございます。

Posted feedbacks - Emacs Lisp

今度は数値計算でやってみた。そのままCommon Lispでも通る。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
(require 'cl)
(defun keta (n)
  (cond ((zerop n) (values 1 1))
        ((< n 0) (keta (- n)))
        (t (loop
              with d = 1
              with len = 0
              while (>= (/ n d) 1) do
                (incf len)
                (setf d (* d 10))
              finally (return (values len (/ d 10)))))))

(keta 2469)                             ; => (4 1000)
(keta 600)                              ; => (3 100)
(keta 1)                                ; => (1 1)
(keta 0)                                ; => (1 1)
(keta -2469)                            ; => (4 1000)

Index

Feed

Other

Link

Pathtraq

loading...