gifts2017

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

Опубликовал evgeny belov (Sbelyi78) в раздел Программирование - Практика программирования

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

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

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

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

См. также

Подписаться Добавить вознаграждение

Комментарии

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

p.s. моё (первое пришедшее в голову) решение с двумя циклами и списком значений не только длиннее вашего, но и работает в 4 раза медленнее(на 10 сгибах)
27. Федор (tdr1225) 28.02.13 17:22
(0) Что-то было такое у Гарднера типа "Любознательная математика"
Если сложенную полоску бумаги развернуть так, чтобы углы всех изгибов были 90 градусов, то получится ломаная линия, называемая "линия дракона" N-го порядка, N = число изгибов. Если повернуть линию вокруг крайней точки на 90, 180 и 270 градусов, то исходная линия плюс три повернутых заполнять плоскость без пробелов.
28. Сергей Лещин (Slon1c) 04.03.13 17:09
(27) tdr1225, ага, это самое задание и есть.Только в рарусе еще и графически сейчас нужно нарисовать ....
29. mikhailovaew (mikhailovaew) 18.03.13 14:03
(25) ildarovich, снимаю шляпу! у меня получился алгоритм с двумя функциями, наподобие топикстартеровского.
Кстати, Sbelyi78, в выкладываемых творениях код все же лучше "причесывать", а то неаккуратно как-то...
30. Маргарита Михайлова (margo_m09) 28.03.13 07:10
хорошая идея, сразу понравилась обработка, даже если и есть какие недочеты пока при использовании, не заметили))))
31. Soltan - (SOLTAN) 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) 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) 23.06.15 13:16
(34) ne_en, в комментарии /13/ к статье Минимализмы приведено еще более короткое решение от AWA. Вот оно
функция г(ё,н=0)return?(ё,г(ё-1)+н+г(ё-1,1),"")endfunction
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа