Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.97
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
#1

Небольшое тестовое задание в финской компании. - C++

15.09.2011, 17:51. Просмотров 4673. Ответов 64
Метки нет (Все метки)

Привествую всех жителей форума.
Сразу отмечу, что решения просить не хочу, а просто хочу показать задание, которая давала компания суунто (Suunto, Finland) на должность программиста (кто не в курсе, компания занимается производством компьютеров для спортсменов, дайверов ... ) в далеком 2005 году.

Тема перенесена от сюда:
Удалить комментарии из строки

(кстати там же картинка - не могу опять ее же прицепить)

http://www.cyberforum.ru/attachment....p;d=1316092021

-----

кстати когда проходил там собеседование на программера задание было в написании парсера следующего (до сих пор храню)

(К сожалению оригинал задания не сохранился, да и толку от него нет -- он на финском.)

C++
1
2
3
4
"\n[[+-{$(width)}]{$(rows)}+"
"[\\n|[$(space){$(width)}|]"
"{$(rows)}]{$(height)}\\n]"
"{$(lines)}[+-{$(width)}]{$(rows)}+\\n"
Это строка
в строке:
[] - цикл
{число} количество повторений цикла []{10}, либо единичного сивола !{10}
пример: 1{5} = 11111
[12]{5} = 1212121212
[!] = !
[!]{0} = пусто
\x0000 - символ по хекс коду (\x0F0)
\x - экранированный символ (n, t, \, итд по списку + [] {} $)
$(переменная) переменная, получаемая ран-тайм. переменные могут передаваться в [] и {}
например count = 10
sym = !
[$(sym)]{$(count)} = !!!!!!!!!!
парсер должен из всего этого безобразия собрать строку
(результат в аттаче) принимая, что
"height" = 2;
"width" = 13;
"rows" = 10;
"lines" = 5;
"space" = пробел или что другое

Но! запрещены регулярные выражения, запрещен С++, запрещены функции типа strXXX. Только голый С, допускаются функции памяти (выделить/освободить) (статические буферы так же допускаются), указатели. На решение неделя.
----------------
Вдруг кому тоже интересно будет

Что будет не ясно, спрашивайте.

Тут сразу стоит отметить, что из 4 человек, которые, все ж, принесли задание на проверку никто не решил ее в полном объеме.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2011, 17:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Небольшое тестовое задание в финской компании. (C++):

Тестовое задание - C++
private class Connect (){ public Device dev1 = new Device(); public Device dev2 = new Device(); puclic void Connect (){ for...

ООП. Тестовое задание собеседования. - C++
Это тестовое задание для устройста на работу. Я не совсем понимаю что от меня хотят. Не могли бы вы мне далее составить набросок плана...

Тестовое задание для трудоустройства - C++
Решил попробовать устроиться в компанию и узнать что вообще и как. Отправил в компанию резюме, дали тестовое задание: Страуструп. Глава...

Тестовое задание на Junior C++ dev - C++
Доброго времени суток. Неделю назад ради интереса отправил свое резюме в одну компанию, куда требуются с++ юниоры. Получил от них...

Написать ответы на тестовое задание при приёме на работу (исключения, sizeof, mutex) - C++
Добрый день! Ходил недавно на собеседование. Имеется список вопросов, на некоторые ответил правильно на какие-то - нет. Хотелось бы...

Тестовое задание от работадателя. Хотелось бы услышать критику. - C++
Пробую устроиться программистом. Вот одна из компаний выслала мне тестовое задание следующего содержания: Немного поломав голову,...

64
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
15.09.2011, 19:14  [ТС] #16
Ну это само собой :-) я б по другомуи не осилил бы.

Добавлено через 2 минуты
Ууф, давай до дома доеду. Про кавычки ничего не было сказано. Как часть строки они.
0
talis
793 / 545 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
15.09.2011, 20:55 #17
villu, без переменных готово... Ваш пример с табличкой и все тестовые работают. Сейчас буду чесать репу над переменными... Но мне это сложным не представляется.
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
15.09.2011, 21:00  [ТС] #18
круто! я с этим больше всего парился переменные, напротив - первое, что сделал.
0
talis
793 / 545 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
15.09.2011, 21:02 #19
villu, похоже, silent_1991 тоже о них сначала подумал. Я что, один такой дурак? А почему вы с переменных начали? Я ими заканчиваю, так как они легче всего парсятся. Их можно воспринимать, как примитивное выражение.
0
silent_1991
Эксперт С++
4997 / 3055 / 149
Регистрация: 11.11.2009
Сообщений: 7,040
Завершенные тесты: 1
15.09.2011, 21:04 #20
talis, потому что если сразу реализовать переменные, не придётся в нескольких местах потом менять код))

Добавлено через 1 минуту
Хотя это ещё от структуры кода изначальной зависит)) Но мне об этом в первую очередь подумалось.

Не по теме:

talis, кстати, интерпретацию всё-таки рекурсией сделали?

0
talis
793 / 545 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
15.09.2011, 21:05 #21
silent_1991, а если читать переменную в обработчике простейших (у меня это lexema), и там же заменять на значение? Только lexema изменить и всё. Хотя, подводные грабли - это штука великая. Сейчас узнаем наверняка.

Добавлено через 13 секунд
Да, рекурсией
0
silent_1991
Эксперт С++
4997 / 3055 / 149
Регистрация: 11.11.2009
Сообщений: 7,040
Завершенные тесты: 1
15.09.2011, 21:06 #22
talis, тоже буду рекурсией делать.
Сейчас только начну))
0
ValeryLaptev
Эксперт С++
1046 / 825 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
15.09.2011, 21:33 #23
Цитата Сообщение от Deviaphan Посмотреть сообщение
На брэйнфак немного похоже.) И такой же фак для брэйна.)))

А что значит strXXX? Я таких функций не знаю.)
strlen(), strchr(), strtok() ... и т.д.
0
talis
793 / 545 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
15.09.2011, 23:55 #24
Блин, всё работает, проблема только с этим выражением:

$(space){$(width)}

Не хочет подставлять значение переменной перед циклом, если оно не в кваратных скобках. Вот так:

[$(space)]{$(width)}

работает отлично. Причём если в первом варианте вместо переменной поставить просто символ, то работает без проблем...
0
talis
793 / 545 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
16.09.2011, 00:22 #25
Не знаю я, что не так. Вот как есть проект, потом ещё поковыряю.
1
Вложения
Тип файла: zip test_c.zip (4.9 Кб, 24 просмотров)
агерон
271 / 272 / 33
Регистрация: 12.10.2009
Сообщений: 1,078
16.09.2011, 01:14 #26
ребята тут строиться дерево LL(1) (ну или LR(1), непомню точно) контекстно независимой грамматики а уж потом на его основе собирается результат. сейчас решать задачу влом если будет делать нечего дня через 2-3 постараюсь выложить решение
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
16.09.2011, 10:17  [ТС] #27
Не знаю я, что не так.
ну, а я говорил, что справишься.

Могу свой вариант выложить, если кому интересно.
0
silent_1991
Эксперт С++
4997 / 3055 / 149
Регистрация: 11.11.2009
Сообщений: 7,040
Завершенные тесты: 1
16.09.2011, 14:25 #28
агерон, можно, конечно, и в эту степь углубиться, но язык тут настолько простой, что можно обойтись и без грамматик и специальных парсеров, а воспользоваться обычным рекурсивным спуском.

Добавлено через 55 минут
Кстати говоря, такой вопрос: можно ли использовать sprintf для более простого формирования строк?
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
16.09.2011, 14:29  [ТС] #29
sprintf для более простого формирования строк?
в каком случае?
0
silent_1991
Эксперт С++
4997 / 3055 / 149
Регистрация: 11.11.2009
Сообщений: 7,040
Завершенные тесты: 1
16.09.2011, 14:29 #30
villu, скажем, для формирования из var_name строки &(var_name).
0
16.09.2011, 14:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2011, 14:29
Привет! Вот еще темы с ответами:

Небольшое затруднение - C++
Доброго времени суток, форумчане. Почему этот код при введении значения yourword допустим "a b" выводит на экран не "a ba ba b", а "a...

Небольшое уточнение - C++
Дан массив. в нем выполняется поиск элемента последовательным или бинарным методами (в зависимости от заданных параметров). вот код полной...

Небольшое исправление (2) - C++
Собственно нужно при нажатии кнопки " ' " нужно вывести на экран содержимое первого окна в новом окне с кнопкой ОК. Сама кнопка работает,...

Небольшое исправление - C++
Собственно нужно при нажатии кнопки " ' " нужно вывести на экран содержимое первого окна в новом окне с кнопкой ОК. Сама кнопка работает,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru