Задача про сгибание листка

Программирование - Практика программирования

Часто при приеме на работу встречается задача про сгибание листка

Есть полоска бумаги, мы ее сворачиваем пополам (оговорка сворачиваем всегда в одну сторону), и получается изгиб на бумаге, изгиб углом он вас (или выпуклый), обозначаем его за 0, теперь опять сворачиваем уже свернутую полоску 2 раз, на полоске теперь появляются новые изгибы, углом к нам обозначаем 1, углом от нас опять 0. в итоге у нас строка 1 0 0 (3 изгиба.) 
Задание заключается в том чтобы написать функцию возвращавшую бы нам строчку в зависимости от начального заданного числа изгибов полоски.

Скачать файлы

Наименование Файл Версия Размер
СверткаЛиста
.ert 41,50Kb
26.02.13
11
.ert 41,50Kb 11 Скачать

См. также

Комментарии
1. v_id (v_id) 88 26.02.13 14:16 Сейчас в теме
Я через описание так и не пробился, все слова понимаю смысл нет
myr4ik07; orenair; BigB; Steelvan; delete; pm74; kapustinag; wolfsoft; hulio; +9 Ответить 1
2. Сергей Ожерельев (Поручик) 3558 26.02.13 15:16 Сейчас в теме
(0) Какой упоротый дебил из руководятлов даёт такие задания и к чему это в торговой шарашке?
DarkUser; myr4ik07; shard; palsergeich; uri1978; Evil Beaver; delete; krv2k; kapustinag; wolfsoft; iov; hulio; wowik; Ibrogim; +14 1 Ответить 1
3. Иван Титов (Ibrogim) 613 26.02.13 15:54 Сейчас в теме
Задача на 15 минут.
+ за вечернее разминание мозгов
4. Светлана Иванова (Cvetic) 303 27.02.13 08:47 Сейчас в теме
5. Евгений Иванов (superman) 27.02.13 11:02 Сейчас в теме
(2) При приеме на работу в рарус=)
6. Александр Зубцов (iov) 361 27.02.13 11:14 Сейчас в теме
(5) теперь понятно почему у них в программах при перерасчете налогов - считает количество углов в процентах.
7. Сергей Ожерельев (Поручик) 3558 27.02.13 11:52 Сейчас в теме
(5)(6) Теперь понятно, почему в их поделиях .овнокода чуть больше чем полностью и работает через ту самую.
8. Иван Титов (Ibrogim) 613 27.02.13 12:23 Сейчас в теме
(5)теперь понятно почему у них такие бумажки все мятые...
p.s. может они туалетную бумагу таким образом производят )
9. Ruslan Odessa (rus128) 2 27.02.13 12:58 Сейчас в теме
"изгиб углом он вас" - это как?
10. Александр Венгер (venger) 2044 27.02.13 13:15 Сейчас в теме
(0) Вы в курсе что больше семи раз не сложишь в реальности?)))) Любой размер любой бумаги)))
11. evgeny belov (Sbelyi78) 9 27.02.13 13:39 Сейчас в теме
Ну в реале скорее всего трудно
12. Александр Зубцов (iov) 361 27.02.13 13:59 Сейчас в теме
(7) через ту самую - это .онокод-Style компании.. Имидж такой...
13. Иван Титов (Ibrogim) 613 27.02.13 14:10 Сейчас в теме
(10) venger,
Вы в курсе что больше семи раз не сложишь
Для этого и нужна обработка )
14. Александр Венгер (venger) 2044 27.02.13 14:23 Сейчас в теме
(13) Значит я не понял суть обработки, как она может это показать? Если в двух словах? я так понял она может до бесконечности строку формировать, плоскость то в математике толщины не имеет))))
15. Александр Венгер (venger) 2044 27.02.13 14:24 Сейчас в теме
+14, точку можно по идее математически до бесконечности пополам складывать)))
16. Александр Капустин (kapustinag) 27.02.13 14:35 Сейчас в теме
Я тоже из описания публикации мало что понял. Если в Рарусе на собеседовании такими же словами ставят задачу, то у них просто бешеный отсев должен быть. Наверно, смысл этой задачи на собеседовании не в том, чтобы кандидат ее решил, а чтобы он ее хотя бы понял. Если проблеск понимания в глазах появился - наш человек, берем!
А я, получается, "не наш".
17. Александр Зубцов (iov) 361 27.02.13 14:39 Сейчас в теме
(16) Есть рациональное зерно в тесте тогда. Развитие телепатических навыков у программистов - основная проф обязанность.
Manoshkin; Steelvan; +2 Ответить
18. Сергей (ildarovich) 5079 27.02.13 15:58 Сейчас в теме
Вот самое короткое(?) решение этой задачи в виде функции на 1С
function W(k,a=0,b=0)return?(k<1,"",W(k-1,a+b)+a%2+W(k-1,a+1+b,1))endfunction
Функция возвращает строку, в которой 0 - сгиб от нас, 1 - к нам. Первый параметр - необходимое число сложений, второй и третий параметры служебные. Всего в записи функции 77 символов. Не по-русски потому, что так короче.
19. Сергей (ildarovich) 5079 27.02.13 16:06 Сейчас в теме
(10) Видел телепередачу, где устанавливали рекорд числа сложений очень длинного рулона бумаги. Речь шла о 10-ти или 11-ти сложениях.
20. Александр Венгер (venger) 2044 27.02.13 16:09 Сейчас в теме
(19) А плотность/толщина бумаги? Вот если взять полиграфию, то любой формат A6, A4, A3 десять раз не сложишь даже прессом)))
21. Александр Венгер (venger) 2044 27.02.13 16:18 Сейчас в теме
Господа, пошарьте у себя в офисах бумагу, поскладывайте, тогда сразу все вопросы отпадут))))
22. Александр Венгер (venger) 2044 27.02.13 16:23 Сейчас в теме
(0) Я думаю, что смысл теста тогда такой: построить математическую модель, показать что она не состоятельна в реальности, предложить физическую модель, с учетом того, что сгиб и бумага имеет толщину и жесткость, а бумага при определенной толщине (при складывании толщина увеличивается) приобретает жесткость такой степени, что нельзя уже продолжать сгибать, предложить коэффициенты и таблицы жесткости в зависимости от толщины/плотности, провести эксперименты, и доказать состоятельность физической модели. Итог: ищем программистов которые в состоянии двигать отечественную науку вперед))))) Кодить им не обязательно, физики-теоретики тоже нужны))))
23. Валерий Завалко (ValeryZ) 29 27.02.13 17:38 Сейчас в теме
(1) Я, тоже чой-то представить не могу, как это всё дело загибать надо. Пробовал на живой бумажке даже...
7 изгибов выходит. Или я не теми словами загибаю... фихзнает.
24. Александр Венгер (venger) 2044 27.02.13 17:40 Сейчас в теме
(23) Главное все время пополам
25. Сергей (ildarovich) 5079 27.02.13 23:38 Сейчас в теме
(18) Если предположить, что число сгибов не может быть отрицательным, то можно сэкономить еще 2 символа. Итого 75 символов. Можно ли короче?
function W(k,a=0,b=0)return?(k,W(k-1,a+b)+a%2+W(k-1,a+b+1,1),"")endfunction
26. Иван Титов (Ibrogim) 613 28.02.13 13:30 Сейчас в теме
(25) Тут не все понимают условие... а вы
Можно ли короче?

p.s. моё (первое пришедшее в голову) решение с двумя циклами и списком значений не только длиннее вашего, но и работает в 4 раза медленнее(на 10 сгибах)
27. Федор (tdr1225) 36 28.02.13 17:22 Сейчас в теме
(0) Что-то было такое у Гарднера типа "Любознательная математика"
Если сложенную полоску бумаги развернуть так, чтобы углы всех изгибов были 90 градусов, то получится ломаная линия, называемая "линия дракона" N-го порядка, N = число изгибов. Если повернуть линию вокруг крайней точки на 90, 180 и 270 градусов, то исходная линия плюс три повернутых заполнять плоскость без пробелов.
28. Сергей LV (Slon1c) 04.03.13 17:09 Сейчас в теме
(27) tdr1225, ага, это самое задание и есть.Только в рарусе еще и графически сейчас нужно нарисовать ....
29. mikhailovaew (mikhailovaew) 127 18.03.13 14:03 Сейчас в теме
(25) ildarovich, снимаю шляпу! у меня получился алгоритм с двумя функциями, наподобие топикстартеровского.
Кстати, Sbelyi78, в выкладываемых творениях код все же лучше "причесывать", а то неаккуратно как-то...
30. Маргарита Михайлова (margo_m09) 28.03.13 07:10 Сейчас в теме
хорошая идея, сразу понравилась обработка, даже если и есть какие недочеты пока при использовании, не заметили))))
31. Soltan - (SOLTAN) 10 08.05.13 11:44 Сейчас в теме
Начало - 0
1 сгиб - 00
2 сгиб - 001
3 сгиб - 0010011
4 сгиб - 001001110011011
5.....
Т.е то, что было, к ниму добавляется поочередно 0/1, затем то, что было на предыдущем шаге переписывается зеркально и инвертируется....а зная механику в цикле организовать заполнение массива 0 проблем))
32. Александр Топольский (AlexanderKai) 06.11.14 16:52 Сейчас в теме
(19) ildarovich,
Насколько я помню, речь шла о попеременных сгибах (как мы обычно складываем бумагу). А рулон, естественно, можно сложить побольше раз.
33. Алексей Рожнятовский (spetzpozh) 16.11.14 03:11 Сейчас в теме
Это задачу давали на собеседовании в Рарусе в проектном отделе.
34. Neman Entorin (ne_en) 49 23.06.15 00:25 Сейчас в теме
(25) ildarovich, Не вникая и не пробуя, подумалось:
function W(k,a,b=0)return?(k,W(k-1,a+b)+a%2+W(k-1,a+b+1,1),"")endfunction

На два символа короче, ввиду того, что второй параметр нигде при вызове функции не передаётся пустым. Если считать вместе с самим первым вызовом функции (W(k,0), вместо W(k)), то та же длина.
А если подумать, то вызов W(k,0) некрасивый :)
35. Сергей (ildarovich) 5079 23.06.15 13:16 Сейчас в теме
(34) ne_en, в комментарии /13/ к статье Минимализмы приведено еще более короткое решение от AWA. Вот оно
функция г(ё,н=0)return?(ё,г(ё-1)+н+г(ё-1,1),"")endfunction
Оставьте свое сообщение