Напишите программу, которая принимает текст в качестве входных данных и создает программу, воспроизводящую этот текст

Недавно я столкнулся с одной интересной проблемой, которая оказалась настолько простой для понимания, насколько трудно найти какой-либо способ решения. Проблема в следующем:

Напишите программу, которая считывает текст из ввода и печатает другой программа на выходе. Если мы скомпилируем и запустим напечатанную программу, она должна вывести исходный текст.

Вводимый текст должен быть довольно большим (более 10000 символов).

Единственное (и очень строгое) требование - размер архива (т. е. напечатанной программы) должен быть строго меньше размера исходного текста. Это делает невозможными очевидные решения вроде

std::string s;
/* read the text into s */
std::cout << "#include<iostream> int main () { std::cout<<\"" << s << "\"; }";

Я считаю, что здесь следует использовать некоторые методы архивирования.

35
задан templatetypedef 23 October 2013 в 00:46
поделиться