$ su
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
1

Улитка

08.06.2018, 13:38. Показов 1286. Ответов 8
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[][] function snail(int n)
 
int n = 3
 
3333333
3222223
3211123
3210123
3211123
3222223
3333333
 
n = 1
111
101
111
Порешаем?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2018, 13:38
Ответы с готовыми решениями:

улитка 5*5
как создать улитку по часовой срелке от верхнего правого угла? Добавлено через 26 минут есть...

улитка
Каждый солнечный день улитка, сидящая на дереве, поднимается вверх на 2 см, а каждый пасмурный день...

Улитка)
Улитка ползёт по вертикальному шесту высотой h метров, поднимаясь за день на a метров, а за ночь...

Улитка паскаля

8
4505 / 3499 / 356
Регистрация: 12.03.2013
Сообщений: 6,021
08.06.2018, 17:21 2
А если n = 10?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
33212 / 18530 / 3904
Регистрация: 12.02.2012
Сообщений: 31,125
Записей в блоге: 12
08.06.2018, 21:24 3
HomeLisp:

Lisp
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
(defun snail (n)
  (labels ((snl (lst &optional (c (length lst)) (p 0) (res nil)) 
             (cond  ((< (- c p p 1) 0)(dolist (a res 'ok) (printline a)))
                    (t (printline lst) 
                       (if (> (- c p 1) (+ p 1))
                           (let ((left  (subseq lst 0 (+ p 1)))
                                 (mid   (subseq lst (+ p 1) (- c p 1)))
                                 (right (subseq lst (- c p 1))))
                                 (snl (append left (mapcar 'sub1 mid) right) c (+ p 1)(cons lst res)))
                                 (snl nil c (+ p 1) res))))))
           (snl (replicate n (+ n n 1)))))
 
==> SNAIL
 
(snail 3)
 
(3 3 3 3 3 3 3)
(3 2 2 2 2 2 3)
(3 2 1 1 1 2 3)
(3 2 1 0 1 2 3)
(3 2 1 1 1 2 3)
(3 2 2 2 2 2 3)
(3 3 3 3 3 3 3)
 
==> OK
 
(snail 5)
 
(5 5 5 5 5 5 5 5 5 5 5)
(5 4 4 4 4 4 4 4 4 4 5)
(5 4 3 3 3 3 3 3 3 4 5)
(5 4 3 2 2 2 2 2 3 4 5)
(5 4 3 2 1 1 1 2 3 4 5)
(5 4 3 2 1 0 1 2 3 4 5)
(5 4 3 2 1 1 1 2 3 4 5)
(5 4 3 2 2 2 2 2 3 4 5)
(5 4 3 3 3 3 3 3 3 4 5)
(5 4 4 4 4 4 4 4 4 4 5)
(5 5 5 5 5 5 5 5 5 5 5)
 
==> OK
2
606 / 839 / 142
Регистрация: 10.08.2015
Сообщений: 4,240
09.06.2018, 16:08 4
а как же бессмертный (apply 'mapcar (cons 'list ... ?

4 раза повернули, нанизали откатились вглубь
1
4664 / 4360 / 377
Регистрация: 12.05.2012
Сообщений: 3,076
10.06.2018, 13:53 5
Lisp
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
27
28
29
30
31
32
33
34
35
36
37
38
39
(defun 101-row (n &aux (v (loop for a from 0 to n collect a)))
  (append (reverse (cdr v)) v))
 
(defun down-rows (w n &optional  (m 1) (a n) (b (1+ n)) (v (copy-list w)))
  (when (<= m n) (cons (fill v m :start a :end b)
                      (down-rows w n (1+ m) (1- a) (1+ b)))))
 
(defun digits-number (w &optional (ac 0))
  (if w (digits-number (cdr w) (+ (car w) (* ac 10))) ac))
 
(defun sna (n &aux (z (101-row n)) (v (down-rows z n)))
  (mapcar #'print
          (mapcar #'digits-number (append (reverse v) (list z) v))) nil)
 
(defun snail (n)
  (when (< 0 n 10) (sna n)))
 
> (snail 9)
 
9999999999999999999 
9888888888888888889 
9877777777777777789 
9876666666666666789 
9876555555555556789 
9876544444444456789 
9876543333333456789 
9876543222223456789 
9876543211123456789 
9876543210123456789 
9876543211123456789 
9876543222223456789 
9876543333333456789 
9876544444444456789 
9876555555555556789 
9876666666666666789 
9877777777777777789 
9888888888888888889 
9999999999999999999 
NIL
2
4664 / 4360 / 377
Регистрация: 12.05.2012
Сообщений: 3,076
11.06.2018, 15:05 6
Lisp
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
(defun 101-row (n &aux (v (loop for a upto n collect a)))
  (nconc (reverse (cdr v)) v))
 
(defun down-rows (w
                  n
                  &optional
                  (m 1)
                  (a n)
                  (b (1+ n))
                  (v (copy-list w)))
  (when (<= m n) (cons (digits-number (fill v m :start a :end b))
                      (down-rows w n (1+ m) (1- a) (1+ b)))))
 
(defun digits-number (w &optional (ac 0))
  (if w (digits-number (cdr w) (+ (car w) (* ac 10))) ac))
 
(defun sna (n &aux (z (101-row n)) (v (down-rows z n)))
  (mapcar #'print (nconc (reverse v)
                         `(,(digits-number z))
                         v))
  nil)
 
(defun snail (n)
  (when (< 0 n 10) (sna n)))
 
> (snail 9)
 
9999999999999999999 
9888888888888888889 
9877777777777777789 
9876666666666666789 
9876555555555556789 
9876544444444456789 
9876543333333456789 
9876543222223456789 
9876543211123456789 
9876543210123456789 
9876543211123456789 
9876543222223456789 
9876543333333456789 
9876544444444456789 
9876555555555556789 
9876666666666666789 
9877777777777777789 
9888888888888888889 
9999999999999999999 
NIL
Lisp
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
(defun 101-row (n &aux (v (loop for a upto n collect a)))
  (nconc (reverse (cdr v)) v))
 
(defun down-rows (w
                  n
                  &optional
                  (m 1)
                  (a n)
                  (b (1+ n))
                  (v (copy-list w)))
  (when (<= m n) (cons (fill v m :start a :end b)
                       (down-rows w n (1+ m) (1- a) (1+ b)))))
 
(defun sna (n &aux (z (101-row n)) (v (down-rows z n)))
  (mapcar #'print (nconc (reverse v)`(,z) v)) nil)
 
(defun snail (n)
  (when (< 0 n 10) (sna n)))
 
> (snail 9)
 
(9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9) 
(9 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9) 
(9 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 9) 
(9 8 7 6 6 6 6 6 6 6 6 6 6 6 6 6 7 8 9) 
(9 8 7 6 5 5 5 5 5 5 5 5 5 5 5 6 7 8 9) 
(9 8 7 6 5 4 4 4 4 4 4 4 4 4 5 6 7 8 9) 
(9 8 7 6 5 4 3 3 3 3 3 3 3 4 5 6 7 8 9) 
(9 8 7 6 5 4 3 2 2 2 2 2 3 4 5 6 7 8 9) 
(9 8 7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 8 9) 
(9 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9) 
(9 8 7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 8 9) 
(9 8 7 6 5 4 3 2 2 2 2 2 3 4 5 6 7 8 9) 
(9 8 7 6 5 4 3 3 3 3 3 3 3 4 5 6 7 8 9) 
(9 8 7 6 5 4 4 4 4 4 4 4 4 4 5 6 7 8 9) 
(9 8 7 6 5 5 5 5 5 5 5 5 5 5 5 6 7 8 9) 
(9 8 7 6 6 6 6 6 6 6 6 6 6 6 6 6 7 8 9) 
(9 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 9) 
(9 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9) 
(9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9) 
NIL
1
4664 / 4360 / 377
Регистрация: 12.05.2012
Сообщений: 3,076
14.06.2018, 06:38 7
Lisp
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
27
28
29
30
31
32
(defun 101-row (n &aux (v (loop for a upto n collect a)))
  (nconc (reverse (cdr v)) v))
 
(defun down-rows (w n &optional (m 1) (a n) (b (1+ a))
                  (v (copy-list w)))
  (when (<= m n) (cons (fill v m :start a :end b)
                       (down-rows w n (1+ m) (1- a) (1+ b)))))
 
(defun snail (n &aux (z (101-row n)) (v (down-rows z n)))
  (when (< 0 n 10)
    (mapcar #'print (nconc (reverse v)(cons z v))) nil))
 
> (snail 8)
 
(8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8) 
(8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8) 
(8 7 6 6 6 6 6 6 6 6 6 6 6 6 6 7 8) 
(8 7 6 5 5 5 5 5 5 5 5 5 5 5 6 7 8) 
(8 7 6 5 4 4 4 4 4 4 4 4 4 5 6 7 8) 
(8 7 6 5 4 3 3 3 3 3 3 3 4 5 6 7 8) 
(8 7 6 5 4 3 2 2 2 2 2 3 4 5 6 7 8) 
(8 7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 8) 
(8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8) 
(8 7 6 5 4 3 2 1 1 1 2 3 4 5 6 7 8) 
(8 7 6 5 4 3 2 2 2 2 2 3 4 5 6 7 8) 
(8 7 6 5 4 3 3 3 3 3 3 3 4 5 6 7 8) 
(8 7 6 5 4 4 4 4 4 4 4 4 4 5 6 7 8) 
(8 7 6 5 5 5 5 5 5 5 5 5 5 5 6 7 8) 
(8 7 6 6 6 6 6 6 6 6 6 6 6 6 6 7 8) 
(8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8) 
(8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8) 
NIL
2
4664 / 4360 / 377
Регистрация: 12.05.2012
Сообщений: 3,076
23.05.2019, 06:49 8
Цитата Сообщение от helter Посмотреть сообщение
А если n = 10?
как вариант:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(defun snail-pretty
    (n &aux (z (concatenate 'string "~{~" 
                            (write-to-string
                             (length (write-to-string n)))
                            "d~^ ~}~%")))
  (loop for a in (snail n) do
        (format t z a)))
 
(defun snail (n &aux (z (101-row n)) (v (down-rows z n)))
    (nconc (reverse v) (cons z v)))
 
(defun 101-row (n &aux (v (loop for a upto n collect a)))
  (nconc (reverse (cdr v)) v))
 
(defun down-rows (w n &optional (m 1) (a n) (b (1+ a))
                  (v (copy-list w)))
  (when (<= m n) (cons (fill v m :start a :end b)
                       (down-rows w n (1+ m) (1- a) (1+ b)))))
0
4664 / 4360 / 377
Регистрация: 12.05.2012
Сообщений: 3,076
23.05.2019, 06:57 9
как вариант:
Миниатюры
Улитка  
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2019, 06:57
Помогаю со студенческими работами здесь

Улитка на столбе
улитка за день заползает на столб на 6 метров за ночь сползает(спит наверное) на 5 метров т.е...

Массив и улитка
В каждый солнечный день улитка, сидящая на дереве, поднимается вверх на 2 см, а в каждый пасмурный...

Улитка паскаля
Написать программу построения улитки Паскаля. Улитка Паскаля, задана параметрически

Улитка Паскаля
Помогите пожалуйста с кодом с++ или с Вычислить значения в зависимости от значения аргумента для ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru