#include <stdio.h>
int ft_putchar(char c);
void print_door(int *i, int *width_door, int space, int door_size)
{
int key_pos;
key_pos = door_size / 2;
if ((door_size > 3) && (space == key_pos)
&& (*width_door == (door_size / 2) - 1))
ft_putchar('$');
else
ft_putchar('|');
*i += 1;
*width_door += 1;
}
int print_line(int line_nb, int space, int door_size)
{
int i;
int width_door;
width_door = -(door_size / 2);
i = 0;
while (i < space)
{
ft_putchar(' ');
i++;
}
ft_putchar('/');
i = 0;
while (i <= line_nb * 2)
{
while ((i == line_nb + width_door) && (space < door_size)
&& (width_door <= door_size / 2))
print_door(&i, &width_door, space, door_size);
ft_putchar('*');
i++;
}
ft_putchar('\\');
ft_putchar('\n');
return (space - 1);
}
void pyramid_def(int space, int nb_jumps, int line_jump, int door_size)
{
int i;
int j;
int jump;
i = 0;
j = 1;
jump = 4;
while (space + 1)
{
if (i == line_jump)
{
i += nb_jumps;
space -= nb_jumps;
line_jump = i + jump;
jump++;
if (j == 2)
{
nb_jumps++;
j = 0;
}
j++;
}
space = print_line(i, space, door_size);
i++;
}
}
void sastantua(int size)
{
int space;
int i;
int j;
i = 1;
j = 0;
space = 0;
if (size > 0)
{
while (i <= size)
{
space = space + 6 + j;
if (i > 1)
j++;
if ((i > 1) && (i % 2))
j++;
i++;
}
if (!(size % 2))
size--;
pyramid_def(space - 4, 2, 3, size);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgICAgIGZ0X3B1dGNoYXIoY2hhciBjKTsKIAp2b2lkICAgIHByaW50X2Rvb3IoaW50ICppLCBpbnQgKndpZHRoX2Rvb3IsIGludCBzcGFjZSwgaW50IGRvb3Jfc2l6ZSkKewogICAgaW50IGtleV9wb3M7CiAKICAgIGtleV9wb3MgPSBkb29yX3NpemUgLyAyOwogICAgaWYgKChkb29yX3NpemUgPiAzKSAmJiAoc3BhY2UgPT0ga2V5X3BvcykKICAgICAgICAmJiAoKndpZHRoX2Rvb3IgPT0gKGRvb3Jfc2l6ZSAvIDIpIC0gMSkpCiAgICAgICAgZnRfcHV0Y2hhcignJCcpOwogICAgZWxzZQogICAgICAgIGZ0X3B1dGNoYXIoJ3wnKTsKICAgICppICs9IDE7CiAgICAqd2lkdGhfZG9vciArPSAxOwp9CiAKaW50ICAgICBwcmludF9saW5lKGludCBsaW5lX25iLCBpbnQgc3BhY2UsIGludCBkb29yX3NpemUpCnsKICAgIGludCBpOwogICAgaW50IHdpZHRoX2Rvb3I7CiAKICAgIHdpZHRoX2Rvb3IgPSAtKGRvb3Jfc2l6ZSAvIDIpOwogICAgaSA9IDA7CiAgICB3aGlsZSAoaSA8IHNwYWNlKQogICAgewogICAgICAgIGZ0X3B1dGNoYXIoJyAnKTsKICAgICAgICBpKys7CiAgICB9CiAgICBmdF9wdXRjaGFyKCcvJyk7CiAgICBpID0gMDsKICAgIHdoaWxlIChpIDw9IGxpbmVfbmIgKiAyKQogICAgewogICAgICAgIHdoaWxlICgoaSA9PSBsaW5lX25iICsgd2lkdGhfZG9vcikgJiYgKHNwYWNlIDwgZG9vcl9zaXplKQogICAgICAgICAgICAmJiAod2lkdGhfZG9vciA8PSBkb29yX3NpemUgLyAyKSkKICAgICAgICAgICAgcHJpbnRfZG9vcigmaSwgJndpZHRoX2Rvb3IsIHNwYWNlLCBkb29yX3NpemUpOwogICAgICAgIGZ0X3B1dGNoYXIoJyonKTsKICAgICAgICBpKys7CiAgICB9CiAgICBmdF9wdXRjaGFyKCdcXCcpOwogICAgZnRfcHV0Y2hhcignXG4nKTsKICAgIHJldHVybiAoc3BhY2UgLSAxKTsKfQogCnZvaWQgICAgcHlyYW1pZF9kZWYoaW50IHNwYWNlLCBpbnQgbmJfanVtcHMsIGludCBsaW5lX2p1bXAsIGludCBkb29yX3NpemUpCnsKICAgIGludCBpOwogICAgaW50IGo7CiAgICBpbnQganVtcDsKIAogICAgaSA9IDA7CiAgICBqID0gMTsKICAgIGp1bXAgPSA0OwogICAgd2hpbGUgKHNwYWNlICsgMSkKICAgIHsKICAgICAgICBpZiAoaSA9PSBsaW5lX2p1bXApCiAgICAgICAgewogICAgICAgICAgICBpICs9IG5iX2p1bXBzOwogICAgICAgICAgICBzcGFjZSAtPSBuYl9qdW1wczsKICAgICAgICAgICAgbGluZV9qdW1wID0gaSArIGp1bXA7CiAgICAgICAgICAgIGp1bXArKzsKICAgICAgICAgICAgaWYgKGogPT0gMikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmJfanVtcHMrKzsKICAgICAgICAgICAgICAgIGogPSAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGorKzsKICAgICAgICB9CiAgICAgICAgc3BhY2UgPSBwcmludF9saW5lKGksIHNwYWNlLCBkb29yX3NpemUpOwogICAgICAgIGkrKzsKICAgIH0KfQogCnZvaWQgICAgc2FzdGFudHVhKGludCBzaXplKQp7CiAgICBpbnQgc3BhY2U7CiAgICBpbnQgaTsKICAgIGludCBqOwogCiAgICBpID0gMTsKICAgIGogPSAwOwogICAgc3BhY2UgPSAwOwogICAgaWYgKHNpemUgPiAwKQogICAgewogICAgICAgIHdoaWxlIChpIDw9IHNpemUpCiAgICAgICAgewogICAgICAgICAgICBzcGFjZSA9IHNwYWNlICsgNiArIGo7CiAgICAgICAgICAgIGlmIChpID4gMSkKICAgICAgICAgICAgICAgIGorKzsKICAgICAgICAgICAgaWYgKChpID4gMSkgJiYgKGkgJSAyKSkKICAgICAgICAgICAgICAgIGorKzsKICAgICAgICAgICAgaSsrOwogICAgICAgIH0KICAgICAgICBpZiAoIShzaXplICUgMikpCiAgICAgICAgICAgIHNpemUtLTsKICAgICAgICBweXJhbWlkX2RlZihzcGFjZSAtIDQsIDIsIDMsIHNpemUpOwogICAgfQo=