1 | ||||||
Небольшое тестовое задание в финской компании.15.09.2011, 17:51. Показов 7214. Ответов 64
Метки нет (Все метки)
Привествую всех жителей форума.
Сразу отмечу, что решения просить не хочу, а просто хочу показать задание, которая давала компания суунто (Suunto, Finland) на должность программиста (кто не в курсе, компания занимается производством компьютеров для спортсменов, дайверов ... ) в далеком 2005 году. Тема перенесена от сюда: Удалить комментарии из строки (кстати там же картинка - не могу опять ее же прицепить) https://www.cyberforum.ru/atta... 1316092021 ----- кстати когда проходил там собеседование на программера задание было в написании парсера следующего (до сих пор храню) (К сожалению оригинал задания не сохранился, да и толку от него нет -- он на финском.)
в строке: (результат в аттаче) принимая, что "height" = 2; "width" = 13; "rows" = 10; "lines" = 5; "space" = пробел или что другое Но! запрещены регулярные выражения, запрещен С++, запрещены функции типа strXXX. Только голый С, допускаются функции памяти (выделить/освободить) (статические буферы так же допускаются), указатели. На решение неделя. ---------------- Вдруг кому тоже интересно будет Что будет не ясно, спрашивайте. Тут сразу стоит отметить, что из 4 человек, которые, все ж, принесли задание на проверку никто не решил ее в полном объеме.
2
|
15.09.2011, 17:51 | |
Ответы с готовыми решениями:
64
Тестовое задание Тестовое задание от компании Exness Тестовое задание для трудоустройства Тестовое задание на Junior C++ dev |
16.09.2011, 14:57 [ТС] | 41 |
нам там предстояло с девайсами работать у которых 1 мег памяти всего (вместе с системой) + такой куций сдк, что просто жуть. я к тому, что " а почемуб и не использовать, если и так понятно, что имелось ввиду?"
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
16.09.2011, 14:59 | 42 |
villu, ну это получается "ни то, ни сё". Либо писать нормально, на плюсых, с использованием всех прелестей стл, либо уж голый си, так голый си.
Добавлено через 11 секунд Так что убираем sprintf))
0
|
16.09.2011, 15:03 | 44 |
silent_1991, да напишите вы функцию конкатенации, которая принимает конечный буфер и строку, которую туда нужно дописать, и дописывайте после нуль-терминатора
Добавлено через 42 секунды вам ведь другого не надо. у вас будет sprintf( "$(%s)", value ); - это и без него решить можно. Сделайте аналог strcat
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
16.09.2011, 15:04 | 45 |
talis, не вижу смысла из-за одного-единственного места писать подобную функцию)) Если в процессе написания вылезут ещё такие места - оформлю в виде функции.
Добавлено через 1 минуту
0
|
16.09.2011, 15:05 | 46 |
Так чтобы делать подстановку (замену) надо предварительно обнаружить символ $. Собственно, поэтому я и не понимаю, как ты хочешь этого добиться. Сначала нашел, а потом подставил вот и все дела. А ты как-то в одном действии хочешь и найти и заменить
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
16.09.2011, 15:07 | 47 |
fasked, нене, я хотел использовать sprintf только для формирования строки, замена происходит после этого в отдельной функции, поиск до этого тоже в отдельной.
Стоило бы не париться и просто хранить в таблице переменных не чистое имя, а целиком, вместе с "$(" и ")". Наверное, я так и сделаю
0
|
16.09.2011, 15:07 | 48 |
я вообще слабо представляю себе, зачем код вида $(var_name) менять на $(var_value). А если будет переменная с именем var_value и значением var_name? Программа с ума сойдёт :-) Не проще убрать уже $() и подставить просто значение, без этих символов?
0
|
16.09.2011, 15:07 | 49 |
В боевой обстановке все равно пришлось бы убрать Функция гигантская и не очень быстрая, если бы очень нужна была, то я думаю, имело бы смысл реализовать демо-версию sprintf, то есть повикидывать оттуда все ненужное.
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
16.09.2011, 15:09 | 50 |
talis, нет, я хочу заменить "$(var_name)" на "var_value". Если бы я хотел поменять только значение в скобках, не пришлось бы париться с добавлением к var_name долларов и скобок.
0
|
16.09.2011, 15:09 | 51 |
Да вот я о том же, собственно, и хотел сказать. Если переменная без символа $ - это уже не переменная. Из минусов разве, что три байта лишних на каждую переменную в таблице. А если переменных штук 100, то уже 300 байт
А вообще после пятницы, когда отойду, можно будет позаниматься этой задачкой. Потом сравним реализации
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
16.09.2011, 15:11 | 52 |
talis, короче, суть в том, что я не стал париться с разбиением кода на лексемы, а работаю целиком со строкой. На предварительном проходе все имена переменных меняю на значение, а второй проход уже работает с кодом, в котором полностью отсутствуют переменные, как будто мы при написании кода сразу подставляли значения.
Добавлено через 47 секунд fasked, я все равно имя и значение храню в статическом буфере размером 32 байта))
0
|
silent_1991
|
16.09.2011, 15:12
#54
|
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
16.09.2011, 15:13 | 57 |
talis, ужос)) Тут уже простой подстановкой не отделаться, благо в задании такого условия нет, все переменные "объявляются статически"
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
16.09.2011, 15:15 | 59 |
villu, я сначала хотел всё по фэншую написать, список лексем, каждая лексема имеет тип (зарезервированное слово, символ и т.д.), но как подумал, что в очередной раз придётся писать связный список вручную и все вытекающие отсюда функции - так меня сразу передёрнуло. Думаю "ну его нафиг, буду парсить строку сходу"...
0
|
16.09.2011, 15:18 | 60 |
Ну никто же не запрещал. Дополнительная возможность. Майкрософт вон сколько всякой гадости влили в свой VC++, чего в стандарте нет - и ничего Мой код так умеет
Добавлено через 2 минуты Зачем О_о? Список - зачем? Сделайте что-то вроде std::vector, который расширяется realloc. Тип лексемы - тоже зачем? Зарезервированных слов тут нет, одни символы. Переменная явно обозначение - $(var_name), так что определять, что это переменная, можно и без всяких типов
0
|
16.09.2011, 15:18 | |
16.09.2011, 15:18 | |
Помогаю со студенческими работами здесь
60
ООП. Тестовое задание собеседования. Тестовое задание от работадателя. Хотелось бы услышать критику. Написать ответы на тестовое задание при приёме на работу (исключения, sizeof, mutex) Тестовое задание Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |