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

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

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

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

Файлы

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

См. также

Лучшие комментарии

2. Поручик 26.02.2013 15:16
(0) Какой упоротый дебил из руководятлов даёт такие задания и к чему это в торговой шарашке?
Ответили: (5)
# Ответить
1. v_id 26.02.2013 14:16
Я через описание так и не пробился, все слова понимаю смысл нет
Ответили: (23)
# Ответить
17. iov 27.02.2013 14:39
(16) Есть рациональное зерно в тесте тогда. Развитие телепатических навыков у программистов - основная проф обязанность.
+ 2 [ Manoshkin; Steelvan; ]
# Ответить

Комментарии

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

p.s. моё (первое пришедшее в голову) решение с двумя циклами и списком значений не только длиннее вашего, но и работает в 4 раза медленнее(на 10 сгибах)
# Ответить
27. tdr1225 28.02.2013 17:22
(0) Что-то было такое у Гарднера типа "Любознательная математика"
Если сложенную полоску бумаги развернуть так, чтобы углы всех изгибов были 90 градусов, то получится ломаная линия, называемая "линия дракона" N-го порядка, N = число изгибов. Если повернуть линию вокруг крайней точки на 90, 180 и 270 градусов, то исходная линия плюс три повернутых заполнять плоскость без пробелов.
Ответили: (28)
# Ответить
28. Slon1c 04.03.2013 17:09
(27) tdr1225, ага, это самое задание и есть.Только в рарусе еще и графически сейчас нужно нарисовать ....
# Ответить
29. mikhailovaew (файл скачал) 18.03.2013 14:03
(25) ildarovich, снимаю шляпу! у меня получился алгоритм с двумя функциями, наподобие топикстартеровского.
Кстати, Sbelyi78, в выкладываемых творениях код все же лучше "причесывать", а то неаккуратно как-то...
# Ответить
30. margo_m09 28.03.2013 07:10
хорошая идея, сразу понравилась обработка, даже если и есть какие недочеты пока при использовании, не заметили))))
# Ответить
31. SOLTAN 08.05.2013 11:44
Начало - 0
1 сгиб - 00
2 сгиб - 001
3 сгиб - 0010011
4 сгиб - 001001110011011
5.....
Т.е то, что было, к ниму добавляется поочередно 0/1, затем то, что было на предыдущем шаге переписывается зеркально и инвертируется....а зная механику в цикле организовать заполнение массива 0 проблем))
# Ответить
32. AlexanderKai 06.11.2014 16:52
(19) ildarovich,
Насколько я помню, речь шла о попеременных сгибах (как мы обычно складываем бумагу). А рулон, естественно, можно сложить побольше раз.
# Ответить
33. spetzpozh 16.11.2014 03:11
Это задачу давали на собеседовании в Рарусе в проектном отделе.
# Ответить
34. ne_en 23.06.2015 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)
# Ответить
35. ildarovich 23.06.2015 13:16
(34) ne_en, в комментарии /13/ к статье Минимализмы приведено еще более короткое решение от AWA. Вот оно
функция г(ё,н=0)return?(ё,г(ё-1)+н+г(ё-1,1),"")endfunction
# Ответить
Внимание! За постинг в данном форуме $m не начисляются.
Внимание! Для написания сообщения необходимо авторизоваться
Текст сообщения*
Прикрепить файл






IE 2016