3

Function that takes a positive number and creates a list of all numbers between 0 (included) and the number passed as an argument (excluded). By default, it's 100

(defun list-numbers (&optional (n 100))
  (mapcar #'abs (make-list n :initial-element (- n 1))))

if you want to see the result https://ideone.com/Jbz5u3

(99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99)

but my goal is create a simple list that initial-element are started with values ​​from 99 to 0

(99 98 97 96 95 94 93 92 91 90 89 88 87 86.... 9 8 7 6 5 4 3 2 1 0)

Rainer Joswig
  • 136,269
  • 10
  • 221
  • 346
Renata P Souza
  • 255
  • 3
  • 20
  • `make-list` is an ordinary function; the `(- n 1)` expression is an ordinary argument expression which gets reduced to a single value that is passed into `make-list`; in this case `99`. `make-list` creates a list filled with repetitions of this initial value. Probably it's most often used for filling a list with zeros, `nil` or perhaps `t`. – Kaz Nov 26 '19 at 00:30
  • you right, thanks again – Renata P Souza Nov 26 '19 at 00:36

1 Answers1

5
CL-USER 160 > (loop for i from 99 downto 0 collect i)
(99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0)

or

CL-USER 167 > (do* ((i      0        (+ i 1))
                    (result (list i) (cons i result)))
                   ((= i 99) result))
(99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0)
Rainer Joswig
  • 136,269
  • 10
  • 221
  • 346
  • Thanks @Rainer, in fact, I don´t need to use make-list, your answer is that I need and maybe you can help me in other question like [find "T" position](https://stackoverflow.com/questions/59040384/find-the-position-of-an-atom-in-list) and this [swap this list](https://stackoverflow.com/questions/59022738/shuffle-list-without-duplicate-number-in-lisp) – Renata P Souza Nov 25 '19 at 23:19
  • see the result that all implementation with your answer [see the result](https://ideone.com/ATJNj5) and I need to swap or shuffle with no repetition, [see the question](https://stackoverflow.com/questions/59022738/shuffle-list-without-duplicate-number-in-lisp) – Renata P Souza Nov 25 '19 at 23:39