Недавно я столкнулся с одной приятной проблемой, которая оказалась так же просто понять, как трудно найти какой-либо способ решения. Проблема заключается в следующем:
Напишите программу, которая считывает текст с ввода и печатает некоторые другие программа на выходе. Если мы скомпилируем и запустим печатную программу, она должна выводить исходный текст.
Входной текст должен быть довольно большим (более 10000 символов).
Единственное (и очень сильное) требование состоит в том, что размер архива (т.е. напечатанная программа) должен быть строго меньше, чем размер исходного текста. Это делает невозможными очевидные решения, такие как
std::string s;
/* read the text into s */
std::cout << "#include<iostream> int main () { std::cout<<\"" << s << "\"; }";
Я считаю, что здесь нужно использовать некоторые методы архивирования.