Небольшое тестовое задание в финской компании.15.09.2011, 17:51. Показов 8537. Ответов 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 Тестовое задание для трудоустройства |
|
|
|
| 15.09.2011, 21:05 | |
|
silent_1991, а если читать переменную в обработчике простейших (у меня это lexema), и там же заменять на значение? Только lexema изменить и всё. Хотя, подводные грабли - это штука великая. Сейчас узнаем наверняка.
![]() Добавлено через 13 секунд Да, рекурсией
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 15.09.2011, 21:06 | |
|
talis, тоже буду рекурсией делать.
Сейчас только начну))
0
|
|
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
| 15.09.2011, 21:33 | |
|
0
|
|
|
|
|
| 15.09.2011, 23:55 | |
|
Блин, всё работает, проблема только с этим выражением:
$(space){$(width)} Не хочет подставлять значение переменной перед циклом, если оно не в кваратных скобках. Вот так: [$(space)]{$(width)} работает отлично. Причём если в первом варианте вместо переменной поставить просто символ, то работает без проблем...
0
|
|
|
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
|
|
| 16.09.2011, 01:14 | |
|
ребята тут строиться дерево LL(1) (ну или LR(1), непомню точно) контекстно независимой грамматики а уж потом на его основе собирается результат. сейчас решать задачу влом если будет делать нечего дня через 2-3 постараюсь выложить решение
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 16.09.2011, 14:25 | |
|
агерон, можно, конечно, и в эту степь углубиться, но язык тут настолько простой, что можно обойтись и без грамматик и специальных парсеров, а воспользоваться обычным рекурсивным спуском.
Добавлено через 55 минут Кстати говоря, такой вопрос: можно ли использовать sprintf для более простого формирования строк?
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 16.09.2011, 14:29 | |
|
villu, скажем, для формирования из var_name строки &(var_name).
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||||||
| 16.09.2011, 14:34 | ||||||
|
villu, не, я имею ввиду при парсинге. Т.е. переменная лежит в таблице переменных в виде пары имя-значение. Я при предварительном проходе заменяю все имена переменных их значениями (из таблицы), так вот, чтобы заменить в коде подстроку "$(var_name)" на значение из таблицы, мне надо из имени из той же ячейки таблицы сформировать соответствующую строку, т.е. в её начало дописать символы "$(", а в конец - ")". Можно ли для этого воспользоваться функцией sprintf в виде
0
|
||||||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 16.09.2011, 14:39 | |
|
villu, речь не о таблице, а о запрете в задании на всё то, что помогает программисту и лишает его удовольствия изобретать велосипеды. Меня смущает запрет на использование элементарной strlen (аналог которой пишется в 30 секунд) и в то же время разрешение использовать такую мощную вещь, как sprintf (которая, по сути, представляет собой форматированный вывод не в поток, а в буфер).
0
|
|
| 16.09.2011, 14:47 [ТС] | |
|
я не понимаю тогда.
есть парсер, который заменяет одно на другое. чтоб это было возможно нужно это "другое" предоставить. в этом случае - это таблица. А как таблица сформирована не имеет значения. Коллега, который делал через таблицу (лист структур), вообще заполнял руками прям в main().
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
||
| 16.09.2011, 14:51 | ||
|
villu, забудьте о таблице))) Речь о рутинной работе формирования строки и о запретах на использование всего, что облегчает жизнь. При использовании sprintf формирование строки (которая является просто образцом для замены одного на другое) занимает одну строку, а если же sprintf нельзя использовать наряду с
0
|
||
| 16.09.2011, 14:55 [ТС] | |
|
а, в этом смысле. Не, "велосипеды и только велосипеды".
Хотя я тоже не вижу особого смысла извращаться. я без этого делал. Но у меня не таблица, а колбек, который принимает строку (char*) и строку возвращает (char*).
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 16.09.2011, 14:56 | |
|
fasked, да говорю же, просто сформировать строку замены. Т.е. в таблице имеется var_name, а в исходном коде брэйнфака надо заменить подстроку вида $(var_name) на значение. Вот и надо сформировать из var_name из таблицы строку $(var_name), чтобы в функцию замены (самописный велосипед) передать эту сформированную строку.
0
|
|
| 16.09.2011, 14:56 | |
|
Тестовое задание на Junior C++ dev
Тестовое задание от работадателя. Хотелось бы услышать критику. Написать ответы на тестовое задание при приёме на работу (исключения, sizeof, mutex) Тестовое задание Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|