Мультиквайн питон-С++, ужасно многословный из-за "чистого" подхода.
Константы захардкожены, — лень было заниматься их программной подстановкой.
Питон...
c = [
'#include <iostream>',
'using namespace std;',
'const char* const c[14] = {',
'};',
'const char* const p[9] = {',
'};',
'int main()',
'{',
' for(int i=0; i!= 1; ++i) cout << p[i] << endl;',
' for(int i=0; i!=14; ++i) cout << char(9) << char(39) << c[i] << char(39) << char(44) << endl;',
' for(int i=1; i!= 3; ++i) cout << p[i] << endl;',
' for(int i=0; i!= 9; ++i) cout << char(9) << char(39) << p[i] << char(39) << char(44) << endl;',
' for(int i=3; i!= 9; ++i) cout << p[i] << endl;',
'}',
]
p = [
'c = [',
' ]',
'p = [',
' ]',
'for i in range(0, 3) : print c[i]',
'for i in range(0,14) : print chr(9)+chr(34)+c[i]+chr(34)+chr(44)',
'for i in range(3, 5) : print c[i]',
'for i in range(0, 9) : print chr(9)+chr(34)+p[i]+chr(34)+chr(44)',
'for i in range(5,14) : print c[i]',
]
for i in range(0, 3) : print c[i]
for i in range(0,14) : print chr(9)+chr(34)+c[i]+chr(34)+chr(44)
for i in range(3, 5) : print c[i]
for i in range(0, 9) : print chr(9)+chr(34)+p[i]+chr(34)+chr(44)
for i in range(5,14) : print c[i] |
...который превращается в С++...
#include <iostream>
using namespace std;
const char* const c[14] = {
"#include <iostream>",
"using namespace std;",
"const char* const c[14] = {",
"};",
"const char* const p[9] = {",
"};",
"int main()",
"{",
" for(int i=0; i!= 1; ++i) cout << p[i] << endl;",
" for(int i=0; i!=14; ++i) cout << char(9) << char(39) << c[i] << char(39) << char(44) << endl;",
" for(int i=1; i!= 3; ++i) cout << p[i] << endl;",
" for(int i=0; i!= 9; ++i) cout << char(9) << char(39) << p[i] << char(39) << char(44) << endl;",
" for(int i=3; i!= 9; ++i) cout << p[i] << endl;",
"}",
};
const char* const p[9] = {
"c = [",
" ]",
"p = [",
" ]",
"for i in range(0, 3) : print c[i]",
"for i in range(0,14) : print chr(9)+chr(34)+c[i]+chr(34)+chr(44)",
"for i in range(3, 5) : print c[i]",
"for i in range(0, 9) : print chr(9)+chr(34)+p[i]+chr(34)+chr(44)",
"for i in range(5,14) : print c[i]",
};
int main()
{
for(int i=0; i!= 1; ++i) cout << p[i] << endl;
for(int i=0; i!=14; ++i) cout << char(9) << char(39) << c[i] << char(39) << char(44) << endl;
for(int i=1; i!= 3; ++i) cout << p[i] << endl;
for(int i=0; i!= 9; ++i) cout << char(9) << char(39) << p[i] << char(39) << char(44) << endl;
for(int i=3; i!= 9; ++i) cout << p[i] << endl;
} |
Как видите, ничего сложного нет.
Кавычки специально взял разные (" = 34 и ' = 39), чтобы показать, что нас это не волнует 
А если вместо нескольких разных массивов использовать один (многомерный либо просто последовательный — склеить массивы c[] и p[], и брать правильные индексы) — то всё будет ещё короче!
На эзотерических языках, таких, как батфайлы или брейнфак, будет, конечно, мучительнее.
Например, у батфайлов будет много возни с экранированием процентов.
А у брейнфака структура программы, в силу исходной бедности языка, станет кудрявой (с множеством циклов). Перекуём баги на фичи! | |