![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
мисс_граффити |
![]()
Сообщение
#1
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Доброго времени суток.
Задание такое: дан список (целых чисел. сколько элементов - не известно) Надо разделить его на 2 списка (пополам. куда отнести средний элемент, если количество нечетное - не принципиально). Считать (и определять другими способами) кол-во элементов запрещено. Поскольку речь идет про функцию, допустим, что она будет возвращать одну из половин (пусть первую - для определенности). Как этого можно добиться? У меня идея такая (весьма неоптимальная). 1) Терминальные случаи. Если список пуст или состоит из 1 эл-та - все просто и понятно. 2) Иначе результатом будет первый элемент, соединенный с поделенным пополам остатком списка после откидывания последнего элемента. Ну на примере: на входе имеем '(1 2 3 4 5) выделяем 1 отбрасываем 5 теперь так же ищем половину от нового списка - (2 3 4) выделяем 2 отбрасываем 4 получаем терминальный случай. на выходе (1 2 3) для выделения первого элемента есть CAR, для получения остатка - CDR. Для отбрасывания последнего придется писать что-то свое. и ничего умнее, чем рекурсивно перебирать элементы, пока остаток не будет равен NIL, я придумать не могу ![]() Работать такой алгоритм, возможно, и способен - но уж больно много лишних операций. Буду благодарна за идеи по оптимизации. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
![]() ![]() |
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
ну а если так (алгоритм остается тот-же):
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 3:20 |