Wkrótce są urodziny mojego przyjaciela, a ponieważ jest programistą i miłośnikiem sztuki ASCII, pomyślałem, że zrobię mu ciasto ASCII!
Niestety, ciągle zapominam o jego obecnym wieku, dlatego chciałbym mieć program dla mojego piekarnika ASCII, który piecze ciasto z określoną liczbą świec, więc nie muszę tego robić sam, jeśli się mylę wiek.
Piece ASCII mają tylko ograniczoną pamięć i pojemność, więc powinny wykorzystywać jak najmniej bajtów .
Twoje zadanie:
Napisz program, który wysyła na konsolę tort urodzinowy z tyloma świecami, ile określa wejście.
Wymagania dotyczące ciasta to:
- Musi mieć granicę zbudowaną z poziomych
-
i pionowych|
linii oraz wierzchołków+
. - Co najmniej 5 znaków (w tym obramowanie ciasta
|
) - Co najmniej 5 znaków (w tym obramowanie ciasta
-
) - Po
każdej stronie musi znajdować się biała spacja między ramką ciasta a pierwszą podstawą świecy (nie płomieniem), chyba że w tej przestrzeni znajduje się płomień. Płomień lub podstawa świecy nie powinny nakładać się na brzegi ciasta.
- Maksymalna szerokość ciasta wynosi 9 znaków, więc w rzędzie jest maksymalnie 5 świec.
- Ponieważ nie chcemy, aby nasze ciasto było dwuwymiarowe, musi mieć dodatkowe 2 rzędy wysokości, aby nadać mu trochę objętości. Dodaj kolejną ramkę na dole i połącz wierzchołki z tymi nad nimi, ponownie używając znaków ASCII z góry (
-
,|
i+
).
Wymagania dotyczące świec:
- Składa się z podstawy
|
i płomienia*
, z płomieniem ułożonym na górze podstawy. - Świece nie mogą bezpośrednio przylegać do siebie, z wyjątkiem ukośnych.
- Świece umieszcza się od lewej do prawej, a następnie od góry do dołu, maksymalnie 5 w jednej linii.
(Uwaga: Gdyby w poprzednim rzędzie było 5 świec, następny rząd nie mógłby mieć również 5 świec, ponieważ odtąd byłyby przyległe).
Dodatkowe uwagi:
- Szerokość ciasta zależy od liczby świec w pierwszym rzędzie, ale musi mieć co najmniej 5 znaków i maksymalnie 9 znaków szerokości.
- Świece są napełniane, zaczynając od najwyższego rzędu, od lewej do prawej. Raz jeden wiersz, jeśli jest pełny, następny powinien zacząć się w rzędzie poniżej pierwszego.
Wejście:
Możesz zaakceptować dowolną liczbę w (rozsądnym) formacie.
W przypadku tego wyzwania możesz założyć, że liczba zawiera się w przedziale od 0 do 2 31 (bez 0), nawet jeśli nie potwierdzam, że ktoś jest tak stary.
Wynik:
Możesz albo zwrócić ciąg, albo bezpośrednio zapisać wynikowy tort w konsoli wyjściowej.
Zasady:
- Standardowe luki są zabronione.
- To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach, w dowolnym języku.
Przykłady:
Wejście: 8
+-----------+
| * * * * * |
| |*|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
Wejście: 2
+-----+
| * * |
| | | |
| |
+-----+
| |
+-----+
Wejście: 12
+-----------+
| * * * * * |
| |*|*|*|*| |
| *|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
Powodzenia!
Odpowiedzi:
Węgiel drzewny ,
767170 6646 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Edycja: Zapisano 1 bajt dzięki @ASCII_Only. Zaoszczędź masę 20 bajtów, odkrywając zgrabny sposób rysowania świec. Wyjaśnienie:
Oblicz rozmiar zarówno całego ciasta, w tym dodatkowej objętości, jak i samej wierzchu ciasta, aby można je było narysować. ((
=
= ASCII 61) = (+
= ASCII 43) + 9 * 2 dla dodatkowego woluminu.)Przesuń kursor do pierwszego rzędu 5 świec. Pętlę przez każdą świecę.
Wydrukuj świecę i przesuń dwie postacie w prawo o następną świecę.
Jednak po (zerowanym) 4, 8, 13, 17, 22 itd. Świecach (które są na końcu rzędu),
przesuń kursor do pierwszej świecy w następnym rzędzie. Działa to zarówno na nieparzystych, jak i parzystych wierszach!
źródło
A
na początku nie potrzebujesz : P (btw dzięki za znalezienie innego przypadku golfisty (nie tak bardzo) edge)Galaretka , 67 bajtów
Monadyczny link pobierający liczbę i zwracający listę znaków lub pełny program wypisujący wynik.
Wypróbuj online!
W jaki sposób?
źródło
Japt , 94 bajty
Wypróbuj online!
źródło