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