Piramidy Majów były (i są) ważną częścią starożytnej architektury, które były na ogół wykorzystywane do celów religijnych.
Były to zazwyczaj piramidy schodkowe, ale stopnie na każdej z nich były zbyt strome, aby się wspinać. Kapłani wspinali się na ich szczyt przez alternatywne schody, aby odprawiać ceremonie. Piramidy były również używane jako punkty orientacyjne ze względu na ich wysokość, a czasem nawet jako miejsca pochówku dla wysokich rangą urzędników.
Wyzwanie
Napisz program, który może wydrukować schemat piramidy na podstawie specyfikacji użytkownika (patrz poniżej).
Wymagania
Weź dwie zmienne rozdzielone spacjami.
Dane wejściowe muszą zostać zaakceptowane przez STDIN (lub najbliższą alternatywę).
Dane wyjściowe muszą być przesyłane przez STDOUT (lub najbliższą alternatywę).
Wejście
Wysokość jak każda dodatnia liczba całkowita. Jest to używane jako szerokość poziomu podstawowego (w blokach). Każdy kolejny poziom piramidy ma szerokość,
n - 1
gdzien
jest szerokość poprzedniej podłogi (w blokach).Rozmiar bloku, który będzie wynosił 1 lub dowolna nieparzysta, dodatnia liczba całkowita ≤ (mniejsza niż) 10.
Bloki
Podany rozmiar bloku określa szerokość (i wysokość) każdego pojedynczego elementu. Zasadniczo i^2
w widocznym polu znajdują się spacje, w których i
jest rozmiar bloku.
Blok 1x1 wyglądałby tak:
+++
| |
+++
Podczas gdy blok 5x5 wyglądałby tak:
+++++++
| |
| |
| |
| |
| |
+++++++
Bloki przylegające poziomo
Poziomo obok siebie bloki muszą mieć połączone środkowe ściany w jedną.
Państwo musi mieć w ten sposób:
+++++
| | |
+++++
Zamiast czegoś takiego:
++++++
| || |
++++++
Bloki przylegające pionowo (bonus -5%)
Bloki ustawione pionowo obok siebie mają specjalny wyjątek: środkową ścianę można połączyć w jedną.
Zamiast bloków 1x1 wygląda to tak:
+++
| |
+++
+++++
| | |
+++++
Oni mógłby wyglądać następująco:
+++
| |
+++++
| | |
+++++
Przykłady
Input: 3 1
Output:
+++
| |
+++
+++++
| | |
+++++
+++++++
| | | |
+++++++
OR
+++
| |
+++++
| | |
+++++++
| | | |
+++++++
Input: 2 3
Output:
+++++
| |
| |
| |
+++++
+++++++++
| | |
| | |
| | |
+++++++++
OR
+++++
| |
| |
| |
+++++++++
| | |
| | |
| | |
+++++++++
Tablica wyników
Aby znaleźć się na liście wyników, umieść odpowiedź w tym formacie:
# Language, Score
Lub jeśli otrzymasz bonus -5%:
# Language, Score (Bytes - 5%)
Twój wynik to tylko liczba całkowita. Jeśli twój wynik jest dziesiętny, zaokrąglij w górę do liczby całkowitej.
1 1
?3 2
wytworzy wkład ?2 3
, to wyjść, kiedyn - 1 = 0
, gdzien
jest szerokość poprzedniego piętrze w blokach.Odpowiedzi:
Pyth, 45 (47 bajtów - 5%)
Wypróbuj tutaj .
źródło
JavaScript (ES6), 161 (169-5%)
166 (174-5%)Za pomocą ciągów szablonów 2 nowe znaki są znaczące i zliczane.
Przetestuj poniższy fragment kodu w przeglądarce EcmaScript 6. Firefox ok, nie Chrome, ponieważ nie obsługuje przypisania do destrukcji .
Kod wyjaśniony po fragmencie.
Mniej golfa
źródło
Rubin, 124 (130 - 5%)
Z komentarzami
źródło
Python 2, 117 (123 bajty)
Chodzi o to, aby zbudować górę cegieł
p
tak jak+++++++++
i bokv
jako| | |
. Góra zaczyna się od+
i jest powiększana on+1
+
każdą warstwę. Strona zaczyna się|
i jest powiększona on
spacje i a|
. Każdą warstwę powiększamy blaty i boki, a następnie drukujemy jeden blat in
boki.Aby je wyśrodkować, najpierw drukujemy wcięcie
l
. Składa się z wielu spacji, które skalują się z bieżącą wysokościąh
. Aby go zaktualizować, zmniejszamy zmienną wysokości,h
aż uderzy0
, po czym bieżąca warstwa przylega do lewej krawędzi ekranu. Ponownie drukujemy górę, aby utworzyć dolną warstwę, i gotowe.źródło
Python 2, 200 (210 - 5%)
Użyłem mnożenia ciągów i usunąłem dodatkowe spacje.
źródło