Страницы

Поиск по вопросам

вторник, 9 октября 2018 г.

Олимпиадная задача с повышенной сложностью

Салют всем чайникам и гуру, девелоперам и фрилансерам, прогерам и кодерам! Но речь не о классификации и иерархии нашего брата. Речь о олимпиадной задачи, которую я уже неделю не могу решить. Я точно знаю: решение что-то простое и гениальное - но вот под каким камнем оно спряталось? Так что, суровые хэшкод-юзеры, прошу у вас помощь в решение этой задачи! Задача: Язык программирования: С++. В программе должна быть 1 единственная функция вывода информации, которая может только писать, т.е. не может удалять текст, а только вставлять новый. При этом она работает следующий образом Исполняемый код: func( "1" ); Вывод: (1) [1] Исполняемый код: func( "1" ); func( "2" ); Вывод (1) (2) [2] [1] Испоняемый код: func( "1" ); func( "2" ); func( "qwer" ); Вывод (1) (2) (qwer) [qwer] [2] [1] Я уверен, что задача решается легко, но у меня нет других вариантов, кроме как все же буферизовать хвост, изменять его, и заменять старый хвост на новый. Но тогда приходится использовать удаление символов. P.S. задача не совсем олимпиадная, эта задачка была давно в какой-то мощной статье по альтернативному программирование где рассматривалось несколько примеров, но вот код реализации такой задачи не помню. И статью ту тоже не могу найти. У самого без удаление символов написать не получается.


Ответ

Испоняемый код: func( "1" ); func( "2" ); func( "qwer" ); Вывод (1) (2) (qwer) [qwer] [2] [1] то есть нужно напечатать в обычном и обратном порядке ???? как я понял можно только вызывать одну и ту же функцию... (если да то решение ниже) делаем класс func и в нём храним std::vector делаем конструктор func(string) с записью дубля в вектор и выводом на экран в деструкторе выводим вектор в обратном порядке UPD:: ну ещё будет "красиво" перегрузить "operator()" дабы не портить конструкторы

Комментариев нет:

Отправить комментарий