Teraz, gdy inni użytkownicy pomogli Trumpowi zbudować ścianę , czas wspiąć się na nią.
Jest to wyzwanie w stylu ascii, w którym musisz wykonać ścianę wspinaczkową z losowo umieszczonymi uchwytami.
Ściana wspinaczkowa składa się z paneli, z których każdy ma od 3 do 10 uchwytów i ma 5 paneli wysokości. Każdy panel ma 4 znaki i 10 znaków
Używamy |
do reprezentowania boku ściany (arête) i a -
do reprezentowania krawędzi paneli. Narożniki paneli są oznaczone symbolem, +
a uchwyty są oznaczone jako o
.
Wreszcie, ściana musi mieć America!
na górze i Mexico
na dole.
Twój program nie powinien pobierać danych wejściowych, chyba że jest wymagany do uruchomienia i powinien wypisać coś, co wygląda podobnie do poniższego
To jest przykładowy wynik:
America!
+----------+
| o |
| o o |
| o o |
| o o |
+----------+
| o |
| o o |
| o o |
| o o |
+----------+
| o |
| o o |
| o o |
| o o |
+----------+
| o |
| o o |
| o o |
| o o |
+----------+
| o |
| o o |
| o o |
| o o |
+----------+
Mexico
Może to być myląco przedstawione, więc jego struktura jest bardziej przejrzysta poniżej
Wejście
Zilcho. Nie powinieneś brać absolutnie danych wejściowych.
Wynik
Ascii-art ścianka wspinaczkowa złożona z 5 paneli, każda z 6 liniami po 12 kolumn z America!
wyśrodkowanym u góry i Mexico
wyśrodkowanym u dołu. Każdy panel ma identyczny wzór, który jest generowany losowo przez program. Wzór panelu składa się z losowo rozmieszczonej losowej liczby chwytów, od 3 do 10.
Zasady
- Brak danych wejściowych
- Powiedziałbym „brak wbudowanych”, ale jeśli twój język ma wbudowane do tego, automatycznie zaakceptuję go jako zwycięzcę.
- To jest golf golfowy, więc wygrywa najkrótszy kod (w bajtach).
- Wyjście bez blokad musi być dokładnie takie samo jak powyżej, ponownie bez blokad.
- Losowy jest tu zdefiniowanym losowym
Odpowiedzi:
Galaretka ,
6557 bajtówPierwsze użycie literałowego ciągu liczb całkowitych
⁽
o dwóch liczbach całkowitych (⁽¥0
= 2049)Pełny program nie wymaga wprowadzania danych i drukowania ściany.
Wypróbuj online!
W jaki sposób?
źródło
)o <-- a space
. Naprawdę mnie rozśmieszył!PHP, 138 bajtów
Wypróbuj online!
Rozszerzony
źródło
JavaScript (ES6),
194160 bajtówSpróbuj
Wzór bloków będzie się zmieniać co 2 sekundy we fragmencie poniżej.
Wyjaśnienie
h
, któremu podano wartość początkową0
; spowoduje to zliczenie liczby blokad w panelu, gdy przejdziemy do ich dodania.g
, która jest funkcją rekurencyjną, której użyjemy do utworzenia losowego wzoru blokad na panelu. Wrócimy do tego za chwilę.America!\n
.+----------+\n
) i przypisujemy go do zmiennejt
, dodając go do wyniku w procesie.| |\n
), powtarzamy go 4 razy i dołączamyt
.g
, przekazując ciąg z powyższego kroku jako argument, poprzez parametrp
.g
:h>2
(tj. Czy mamy 3 lub więcej blokad).p
.g
ponownie, tym razem przekazując zmodyfikowaną kopięp
argumentu.p
ma zastosowanąreplace
metodę, zastępując wszystkie<space>
znaki a<space>
lub ao
, odwołując się do indeksu znaków (0 lub 1) ciągu<space>o
.Math.random()
, które zwraca liczbę dziesiętną od 0 do 1, wyłączne..8
. Mając 40 pól w panelu i maksymalnie 10 chwytów, poprawia to rozkład chwytów w panelu (.75
byłoby bardziej dokładne, ale mam nadzieję, że pozwolisz mi na ustępstwo ze względu na zapisywanie bajtu!).s
.s
jest przymuszany do liczby całkowitej (0 lub 1) i dodawany doh
.h
jest teraz mniej niż 11 (tj. Czy obecnie mamy mniej niż 10 blokad) i czys
było to prawdą.g
5 razy.Mexico
na końcu łańcucha, aby zakończyć. Uff!Alternatywny
I po prostu dlatego, że myślałem, że byłoby to miłym dodatkiem do wyzwania: dla zaledwie 12 dodatkowych bajtów możemy mieć unikalny wzór blokad na każdym panelu, zamiast wszystkich identycznych.
Spróbuj
Ponownie wzory bloków będą się zmieniać co 2 sekundy.
Pokaż fragment kodu
źródło
Pyth -
5857 bajtów, ewentualnie 47Spróbuj
Wyjaśnienie starego rozwiązania (zaktualizuję, kiedy będę miał czas):
Myślę, że mogę zdobyć 47, jednocześnie technicznie przestrzegając zasad:
Tutaj liczba otworów jest nadal losowo wybierana (ze zbioru {4,8}), a konfiguracja tych otworów jest losowo wybierana (ze zbioru konfiguracji, w których każdy rząd jest identyczny)
Spróbuj
źródło
Mathematica, 201 bajtów
źródło
PowerShell (255 bajtów)
źródło
Python 2 ,
259224221218 bajtówWypróbuj w repl.it
-35 w tym kilka wskazówek od @ Satan'sSon - dzięki!
-3 dzięki dzięki @Wondercricket
źródło
t
zamiast zapisywać w zmiennej i jeśli usuniesz spacje poAmerica!
iMexico
?print" America!" <NEWLINE> d,a,b,c=[" Mexico"],["+"+"-"*10+"+"],[" "]*40,0
?from random import*
i usuwającr.
z funkcjiPython 2, 197 bajtów
źródło