#include <iostream>
#include <vector>
#include <string>
using namespace std;
// Funkcja rekurencyjna do generowania zbioru Cantora
void cantor(vector<string>& canvas, int x, int y, int length, int level) {
if (level == 0) {
for (int i = 0; i < length; i++) {
canvas[y][x + i] = '#';
}
return;
}
int segment = length / 3;
// Lewa część
cantor(canvas, x, y, segment, level - 1);
// Prawa część
cantor(canvas, x + 2 * segment, y, segment, level - 1);
}
int main() {
int level;
cout << "Podaj stopień zbioru Cantora (np. 3 lub 6): ";
cin >> level;
int width = 1;
for (int i = 0; i < level; i++) width *= 3;
vector<string> canvas(level, string(width, ' '));
for (int i = 0; i < level; i++) {
cantor(canvas, 0, i, width, i);
}
// Wyświetlenie
for (const auto& row : canvas) {
cout << row << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIEZ1bmtjamEgcmVrdXJlbmN5am5hIGRvIGdlbmVyb3dhbmlhIHpiaW9ydSBDYW50b3JhCnZvaWQgY2FudG9yKHZlY3RvcjxzdHJpbmc+JiBjYW52YXMsIGludCB4LCBpbnQgeSwgaW50IGxlbmd0aCwgaW50IGxldmVsKSB7CiAgICBpZiAobGV2ZWwgPT0gMCkgewogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgY2FudmFzW3ldW3ggKyBpXSA9ICcjJzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGludCBzZWdtZW50ID0gbGVuZ3RoIC8gMzsKCiAgICAvLyBMZXdhIGN6xJnFm8SHCiAgICBjYW50b3IoY2FudmFzLCB4LCB5LCBzZWdtZW50LCBsZXZlbCAtIDEpOwoKICAgIC8vIFByYXdhIGN6xJnFm8SHCiAgICBjYW50b3IoY2FudmFzLCB4ICsgMiAqIHNlZ21lbnQsIHksIHNlZ21lbnQsIGxldmVsIC0gMSk7Cn0KCmludCBtYWluKCkgewogICAgaW50IGxldmVsOwogICAgY291dCA8PCAiUG9kYWogc3RvcGllxYQgemJpb3J1IENhbnRvcmEgKG5wLiAzIGx1YiA2KTogIjsKICAgIGNpbiA+PiBsZXZlbDsKCiAgICBpbnQgd2lkdGggPSAxOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZXZlbDsgaSsrKSB3aWR0aCAqPSAzOwoKICAgIHZlY3RvcjxzdHJpbmc+IGNhbnZhcyhsZXZlbCwgc3RyaW5nKHdpZHRoLCAnICcpKTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IGxldmVsOyBpKyspIHsKICAgICAgICBjYW50b3IoY2FudmFzLCAwLCBpLCB3aWR0aCwgaSk7CiAgICB9CgogICAgLy8gV3nFm3dpZXRsZW5pZQogICAgZm9yIChjb25zdCBhdXRvJiByb3cgOiBjYW52YXMpIHsKICAgICAgICBjb3V0IDw8IHJvdyA8PCBlbmRsOwogICAgfQoKICAgIHJldHVybiAwOwp9