|
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
|
|
Clojure Найти наибольшую последовательность чисел в списке26.10.2015, 20:31. Показов 6195. Ответов 84
Метки нет (Все метки)
Нужно найти в списке самую длинную убывающую или растущую последовательность чисел
Например Вводим список 8 4 2 3 2 Получаем две последовательности 8 4 2 и 3 2, нам нужен 8 4 2 так как он длиннее.
0
|
|
| 26.10.2015, 20:31 | |
|
Ответы с готовыми решениями:
84
В одномерном массиве найти наибольшую последовательность из отрицательных чисел и вывести ее В одномерном масстве найти наибольшую последовательность из отрицаельных чисел и перенести ее в конец массива Вводится последовательность из N целых чисел. Найти наибольшую по значению четную цифру в каждом числе. |
|
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
|
|
| 27.10.2015, 00:30 [ТС] | |
|
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 27.10.2015, 00:31 | |
|
Откуда у вас внутренние циклы берутся, я понять не могу.
Если вы за один проход хотите считать и такие, и сякие, как вы хотите обойтись одной переменной temp? Может же получиться, что вы сначала складываете туда возрастающую подпоследовательность, а потом — туда же — убывающую. А потом снова возрастающую. А потом... Вообще, самый простой вариант — не париться с двумя сравнениями сразу, а написать функцию, которая ищет самую длинную возрастающую подпоследовательность или самую длинную убывающую. Найти обе и вернуть ту, которая длиннее. Получается в два прохода, но имеет ли смысл городить огород?
0
|
|
|
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
|
||||||
| 27.10.2015, 00:37 [ТС] | ||||||
|
helter, А как насчет сделать отдельно найти самую длинную убывающую а потом самую длинную возрастающую и сравнить в конце?
Добавлено через 3 минуты helter, Как то так я полагаю?
0
|
||||||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|||
| 27.10.2015, 00:42 | |||
|
Добавлено через 4 минуты Кроме того, при нарушении монотонности надо и temp менять. Ведь temp — это текущая монотонная последовательность. Если монотонность нарушается, temp присваивается список, состоящий из нарушевшего монотонность элемента, а temp-len выставляется 1. В частности, список temp никогда не будет пустым. Условие (not (first temp)) не нужно.
0
|
|||
|
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
|
||||||
| 27.10.2015, 00:44 [ТС] | ||||||
|
helter,
0
|
||||||
| 27.10.2015, 00:45 | ||||||
|
Я тут не мешаю процессу, для сравнения только выложу свой вариант
2
|
||||||
|
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
|
|
| 27.10.2015, 00:47 [ТС] | |
|
_Ivana, Что это за лисп?
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|||||||
| 27.10.2015, 00:49 | |||||||
|
Вы в REPL-е-то тестируйте, тестируйте.
Сразу бы увидели, что на строки 4 и 5 ругается. А так — я буду ругаться. При обычном вычислении списка на первом месте должно стоять имя функции или лямбда-выражение. А у вас — (push el temp). Это же не имя функции и не лямбда-выражение.Вы хотите в одно выражение засунуть два. Операторные скобки, так сказать. (Вы си или паскаль знаете?) Операторные скобки — это progn. Поэтому ветка «да» будет
0
|
|||||||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 27.10.2015, 00:52 | |
|
0
|
|
| 27.10.2015, 00:55 | ||||||
|
foldr применяется к списку, образованному конкатенацией двух списков, каждый из которых получен разбиением исходного списка на подсписки, удовлетворяющие бинарному предикату - в данном случае < и >. И ищет элемент максимальной длины.
1
|
||||||
|
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
|
||||||
| 27.10.2015, 01:02 [ТС] | ||||||
|
helter,
![]() ![]() Вот так вроде бы работает
0
|
||||||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 27.10.2015, 01:06 | |
|
Ну вот, по-моему, неплохо.
Теперь в конец приделать такую же проверку, и почти готово. Есть такая хитрость. Если при выполнении условия вы хотите сделать одно ли несколько действий, а при невыполнении — ничего, лучше использовать when вместо if. Во-первых, люди сразу поймут, что вы хотите. Во-вторых, внутри when не надо писать progn. Поэтому в ответ «как делать тест», я где-то выше написал вам с when.
0
|
|
|
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
|
|||||||||||
| 27.10.2015, 01:31 [ТС] | |||||||||||
|
helter,
Вы это имели ввиду? Добавлено через 6 минут helter, Вот только почему обычная смена знака не подходит для убывающих??
а что если просто развернуть all и еще раз пройтись той же функцией? Добавлено через 2 минуты Единственная проблема, что в all чисел может быть от 0 до 10в7
0
|
|||||||||||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
||||||||
| 27.10.2015, 01:36 | ||||||||
|
У вас REPL под рукой. Ладно, я сделаю за вас:
Вы собираете максимальные монотонные подпоследовательности в переменную temp, и когда такая последовательность сформирована, сравниваете её с longest. Однако когда вы заканчиваете цикл, у вас в переменной temp тоже одна из максимальных последовательностей, которую вы с longest не сравнивали. Надо сравнить. Добавлено через 1 минуту
0
|
||||||||
|
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
|
||
| 27.10.2015, 01:43 [ТС] | ||
|
Добавлено через 56 секунд Ага, и если последовательность была одна то возвращает пустой список
0
|
||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|||||||
| 27.10.2015, 01:47 | |||||||
|
Вот ещё для размышления
0
|
|||||||
|
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
|
||||||
| 27.10.2015, 01:58 [ТС] | ||||||
|
У меня компилится, без ошибок, но если дам много чисел то умирает
helter,
* (find-longest '(1 2 1 2 3 4 1 2 1 2 3 4 5)) debugger invoked on a TYPE-ERROR in thread #<THREAD "main thread" RUNNING {1002C6BC53}>: The value 1 is not of type LIST. Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL. restarts (invokable by number or by possibly-abbreviated name): 0: [ABORT] Exit debugger, returning to top level. 0 (FIND-LONGEST (1 2 1 2 3 4 1 2 1 2 3 4 ...)) 0] 0 *
0
|
||||||
| 27.10.2015, 01:59 | ||||||
|
Навскидку, с одним реверсом в конце. Хотя и его по-хорошему надо исключить.
0
|
||||||
| 27.10.2015, 01:59 | |
|
Найти наибольшую неубывающую последовательность
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|