初めてQuine書いてみた

難しい。あと、全然スマートじゃないような。そして改めてid:rofiたんすごいと思った。*1

#include <iostream>
#include <string>
int main() {
char c = 44, d = 34; 
std::string s[] = { 
"#include <iostream>",
"#include <string>",
"int main() {",
"char c = 44, d = 34;",
"std::string s[] = {",
"for(size_t i = 0; i < 5; ++i) { std::cout << s[i] << std::endl; }",
"for(size_t i = 0; i < sizeof(s) / sizeof(s[0]) - 1; ++i) { std::cout << d << s[i] << d << c << std::endl; }",
"std::cout << d << s[sizeof(s)/sizeof(s[0])-1] << d << std::endl;",
"std::cout << s[sizeof(s)/sizeof(s[0])-1] << std::endl;",
"for(size_t i = 5; i < sizeof(s) / sizeof(s[0]) - 1; ++i) { std::cout << s[i] << std::endl; }",
"}",
"};"
};
for(size_t i = 0; i < 5; ++i) { std::cout << s[i] << std::endl; }
for(size_t i = 0; i < sizeof(s) / sizeof(s[0]) - 1; ++i) { std::cout << d << s[i] << d << c << std::endl; }
std::cout << d << s[sizeof(s)/sizeof(s[0])-1] << d << std::endl;
std::cout << s[sizeof(s)/sizeof(s[0])-1] << std::endl;
for(size_t i = 5; i < sizeof(s) / sizeof(s[0]) - 1; ++i) { std::cout << s[i] << std::endl; }
}

*1:某新年のあれ参照