Форум программистов, компьютерный форум, киберфорум
Языки JVM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 02.06.2014
Сообщений: 6
1

Clojure Разработка программы, выводящей список чисел

02.06.2014, 11:14. Показов 856. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, уважаемые. Нужно разработать программу, которая выводит список чисел, а затем, используя рекурсию, выводит четные числа. Заранее благодарен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2014, 11:14
Ответы с готовыми решениями:

Разработка программы, выводящей в консоли список запущенных процессов в ОС семейства Windows
Народ помогите в создании Разработка программы, выводящей в консоли список запущенных процессов в...

Разработка программы, выводящей в консоли список модулей процесса explorer.exe в ОС семейства Windows
Помогите пожалуйста сделать программу на с++ Разработка программы, выводящей в консоли список...

Пример программы, выводящей на экран строку символов в ‘ ‘
Прошу написать программу, выводящей на экран строку символов в ‘ ‘. Очень нужно для здачи...

Написание программы читающей два иррациональных числа и выводящей их произведение
Нужно написать программу, которая читает два иррациональных числа и выводит их произведение. Числа...

6
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
02.06.2014, 11:49 2
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun rand (r n)
  (loop for i from 1 to n
        collect (random r)))
 
(defun even (w &aux (a (car w)))
  (cond ((null w) nil)
        ((evenp a) (cons a (even (cdr w))))
        (t (even (cdr w)))))
 
(defun rand-even (r n)
  (even (rand r n)))
 
> (rand-even 10 20)
(6 0 0 2 8 8 0 0 2 2)
Добавлено через 1 минуту
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(defun rand (r n)
  (loop for i from 1 to n
        collect (random r)))
 
(defun even (w &aux (a (car w)))
  (cond ((null w) nil)
        ((evenp a) (cons a (even (cdr w))))
        (t (even (cdr w)))))
 
(defun rand-even (r n &aux (v (rand r n)))
  (values v (even v)))
 
> (rand-even 10 20)
(8 3 5 2 8 6 5 3 4 8 0 2 7 6 7 5 4 7 5 9)
(8 2 8 6 4 8 0 2 6 4)
Добавлено через 7 минут
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun rand (r n)
  (loop repeat n collect (random r)))
 
(defun even (w &aux (a (car w)))
  (cond ((null w) nil)
        ((evenp a) (cons a (even (cdr w))))
        (t (even (cdr w)))))
 
(defun rand-even (r n &aux (v (rand r n)))
  (values v (even v)))
 
> (rand-even 10 20)
(1 4 7 7 5 9 6 6 4 5 8 0 5 2 0 5 0 2 3 4)
(4 6 6 4 8 0 2 0 0 2 4)
Добавлено через 1 минуту
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(defun rand (r n)
  (loop repeat n collect (random r)))
 
(defun even (w &aux (a (car w)))
  (when w (if (evenp a)
              (cons a (even (cdr w)))
              (even (cdr w)))))
 
(defun rand-even (r n &aux (v (rand r n)))
  (values v (even v)))
 
> (rand-even 10 20)
(5 1 2 3 4 1 2 4 8 1 1 0 1 9 0 9 7 0 9 5)
(2 4 2 4 8 0 0 0)
Добавлено через 6 минут
Lisp
1
2
3
4
5
6
7
8
9
10
(defun rand-even (r n &aux (v (loop repeat n collect (random r))))
  (values v (labels ((even (v)
                       (when v (if (evenp (car v))
                                   (cons (car v) (even (cdr v)))
                                   (even (cdr v))))))
              (even v))))
 
> (rand-even 10 20)
(1 7 8 8 4 8 4 9 7 8 1 6 4 3 0 6 1 4 1 4)
(8 8 4 8 4 8 6 4 0 6 4 4)
Добавлено через 1 минуту
Lisp
1
2
3
4
5
6
7
8
9
10
(defun rand-even (r n &aux (v (loop repeat n collect (random r))))
  (values v (labels ((even (v &aux (a (car v)))
                       (when v (if (evenp a)
                                   (cons a (even (cdr v)))
                                   (even (cdr v))))))
              (even v))))
 
> (rand-even 10 20)
(3 3 6 2 1 6 4 8 9 0 3 3 7 8 7 1 3 6 1 9)
(6 2 6 4 8 0 8 6)
2
0 / 0 / 0
Регистрация: 02.06.2014
Сообщений: 6
02.06.2014, 11:50  [ТС] 3
спасибо за оперативность)
возникли 2 вопроса: что такое &aux? и 2 входные переменные - для чего?
0
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
02.06.2014, 11:59 4
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(defun rand-even (r
                  n
                  &aux
                  (v (loop repeat n
                           collect
                           (random r))))
  (values v
          (labels ((even (v
                          &aux
                          (a (car v))
                          (d (cdr v)))
                     (when v
                       (if (evenp a)
                           (cons a (even d))
                           (even d)))))
            (even v))))
 
> (rand-even 10 20)
(0 9 5 8 1 8 8 4 8 5 8 2 1 3 3 9 5 4 8 4)
(0 8 8 8 4 8 8 2 4 8 4)
Добавлено через 5 минут
&aux предваряет вспомогательные параметры v, a, d
n - длина рэндомно генерируемого списка
r - предел
3
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
02.06.2014, 15:28 5
Lisp
1
2
3
4
5
6
7
8
9
10
;racket
(define (my-filter pr lst (acc null))
  (if (null? lst) acc
      (my-filter pr (cdr lst) (if (pr (car lst)) (append acc (list (car lst))) acc))))
 
(define (foo lst) (printf ";~a~n;~a~n" lst (my-filter even? lst)))
 
(foo (range 10))
;(0 1 2 3 4 5 6 7 8 9)
;(0 2 4 6 8)
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36595 / 20325 / 4218
Регистрация: 12.02.2012
Сообщений: 33,625
Записей в блоге: 13
02.06.2014, 21:42 6
В HomeLisp есть функция генерации списка случайных целых. Так что:

Lisp
1
2
3
4
5
6
7
8
9
10
(defun get-even (lst)
  (cond ((null lst) nil)
        ((evenp (car lst)) (cons (car lst) (get-even (cdr lst))))
        (t (get-even (cdr lst)))))
 
==> get-even
 
(get-even (mkrnd-list 20 100))
 
==> (88 40 4 48 78 12 30 86 62)
1
505 / 511 / 42
Регистрация: 12.12.2013
Сообщений: 484
02.06.2014, 22:28 7
Clojure:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(defn task [r n]
  (letfn [(rand-lazyseq [r n]
            (repeatedly r (partial rand-int n)))
          (result [coll]
            (loop [[x & xs :as all] coll
                   acc nil]
              (cond (empty? all) (reverse acc)
                    (even? x) (recur xs (cons x acc))
                    :else (recur xs acc))))]
    (result (rand-lazyseq r n))))
;; => #'user/task
 
(task 10 1000)
;; => (800 48 204 672 318)
(task 10 Integer/MAX_VALUE)
;; => (573780814 768963368 2014271068 912692104 594393574 2048837792)
2
02.06.2014, 22:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.06.2014, 22:28
Помогаю со студенческими работами здесь

Нужен код программы выводящей в tkinter, Label шахматную задачу
На форуме есть пример кода вывода шахматной доски без фигур. Хотел использовать код решения...

Разработка программы в С++ для поиска указанных чисел из указанного диапазона
Разработка программы в С++ для поиска указанных чисел из указанного диапазона. Листинг программы.

Ввести с клавиатуры список целых чисел. Найти сумму чисел, которые входят в список по одному разу
Прошу помочь с заданием по Турбо Прологу. Мне кажется, что для людей которые понимают и...

Дан произвольный список чисел. Построить список чисел, в два раза больших
Дан произвольный список чисел. Построить список чисел, в два раза больших


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru