Niedawno nadeszła wiosna i jest to prawie czas, kiedy kwiaty zaczynają kiełkować. Więc chcę, żebyś pomógł im się rozwijać.
Twoje zadanie:
Biorąc pod uwagę dwie liczby m
i kwiaty n
wyjściowe m
losowo umieszczone na n*n
siatce.
Pojedynczy kwiat wygląda następująco:
&
|
Pozycja kwiatu jest określona przez jego położenie &
. Podczas losowego umieszczania dwóch kwiatów żadne dwa nie mogą znajdować się w tym samym miejscu. Jeśli jeden kwiat &
nakłada się na inny kwiat |
, wyświetl &
. Dolny rząd kwiatów może nie zawierać żadnych &
.
Dane wejściowe mogą być liczbą lub ciągiem znaków za pomocą dowolnej standardowej metody.
Wyjściem może być lista ciągów, każdy ciąg reprezentujący jeden wiersz siatki lub ciąg rozdzielany według tych samych wytycznych co lista. Standardowe metody produkcji. Dozwolone są końcowe wieloryby, a do rozdzielania kwiatów można używać zakładek. Pamiętaj, że każda siatka musi być całkowicie wypełniona spacjami lub czymś podobnym.
Pamiętaj, że dane wejściowe będą zawsze prawidłowe, zawsze będziesz mógł legalnie dopasować m
kwiaty do siatki n
według n
.
Przypadki testowe:
Ponieważ ze względu na cały bit „losowego umieszczenia” można zagwarantować tylko bardzo wąskie przypadki testowe, będzie to jedyny rodzaj przypadku testowego z udzieloną odpowiedzią. Spróbuję jednak przesłać wszystkie zgłoszenia online, aby upewnić się, że są one prawidłowe, korzystając z niektórych przypadków testowych.
Dane wejściowe dla przypadków testowych podano w formularzu m, n
.
Input: 2, 2
Output:
&&
||
--------------
Input: 6, 3
Output:
&&&
&&&
|||
Zauważ, że nowa linia po słowie Output:
w przypadkach testowych jest opcjonalna.
Inne przypadki testowe:
- 1, 10
- 0, 100
- 5, 8
- 6, 3
Code golf, więc najkrótszy kod wygrywa!
Dziękujemy ComradeSparklePony za podjęcie tego wyzwania i umieszczenie go w pudełku prezentowym Sekretnego Świętego Mikołaja! Post w piaskownicy
Odpowiedzi:
Galaretka , 33 bajty
Wypróbuj online!
W jaki sposób?
źródło
m
in
dlaczegosquare m
? wth jest niladem ?rotate
. Dobra robota; świetny podział!PHP (> = 7,1),
135 131 128 116 110109 bajtówpobiera dane wejściowe z argumentów wiersza poleceń; uruchom go
-nr
lub przetestuj online .awaria
źródło
-r
jest bezpłatny ; nakazuje PHP uruchomienie kodu z argumentu wiersza poleceń.-n
resetuje PHP do ustawień domyślnych.Python 2 , 150 bajtów
Wypróbuj online!
W jaki sposób?
Pobiera
input()
ze STDIN i rozpakowuje dostarczoną krotkę (ciąg liczb dziesiętnych oddzielonych przecinkami jak3,6
) don
im
.Tworzy uporządkowany, jednowymiarowy
n*(n-1)
długi „kwietnik”,b
łącząc:- listę zawierającą „kwiat”
[1]
powtarzanem
razy; oraz- listę zawierającą „spację”
[0]
powtarzającą sięn*~-n-m
razy *.* Operator kijanki
~
(~x=-1-x
) oszczędza 2 bajtyn*~-n-m
zamiast bardziej normalnego wyglądun*(n-1)-m
.Shuffle (używając
random
„sshuffle
funkcję) ten kwietnik umieścić kwiaty i przestrzenie losowo pomiędzyn*(n-1)
pozycjami.Przechodzi przez rzędy 0-indeksowane
r
iprints
każdy z kolei tworzy dwuwymiarowy kwietnik z jednowymiarowego ...Ostatni dwuwymiarowy (
n*n
) kwietnik ma łodygi,s
jeden rząd poniżej główek kwiatówf
, jeśli i tylko wtedy, gdy nie ma głowy do pokazania. Osiąga się to przez XORing (^
)f
z-s
gdzief
is
są1
si0
si przed i wykorzystując wynik do indeksowania do łańcucha długości 3' &|'
:Aby uzyskać
f
i funkcja jest używana z dwoma kopiami jednego kwietnik wymiarowej, po jednym z pomieszczeń tylną (szefów kwiat) i jednym z czołowych miejsc (łodygi). Cała rzecz jest tworzona dla każdego wiersza (w celu zapisania bajtów), a wymagany wiersz jest wycinany za pomocą .s
zip
n
n
[r*n:r*n+n]
źródło
Python 2 ,
184179 bajtówWypróbuj online!
źródło
Python 2 , 129 bajtów
Wypróbuj online!
Generuje ciąg wyjściowy po jednym znaku na raz. Losowo wybiera, czy bieżąca komórka jest kwiatem z prawdopodobieństwem równym liczbie
m
pozostałych kwiatów podzielonej przez liczbę pozostałych spacji. Dodaje nową linię do każdegon
znaku. Pusta komórka jest wypełniona trzonem,|
jeśli symbolemn
od końca jest a&
.źródło
PHP, 111 bajtów
Wersja online
-1 bajt dla fizycznej nowej linii
rozwiązanie 115 bajtów przy użyciu max
W ten sposób 137 bajtów tasuje pierwszą część łańcucha
źródło
JavaScript (ES6), 157 bajtów
Objaśnienie: Tworzy tablicę reprezentującą siatkę kwiatów plus nowe linie. Rekurencyjnie losowo wyszukuje puste kwadraty, w których należy umieścić kwiaty, aż do osiągnięcia żądanej liczby kwiatów. Wreszcie łodygi kwiatów są generowane tam, gdzie jest dla nich miejsce.
źródło
Węgiel drzewny , 27 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Wejście
n
.Zmień domyślny kierunek drukowania na w dół.
Wejdź
m
i zapętl to tyle razy.Przejdź do losowej lokalizacji na siatce.
Jeśli jest już kwiatek, skacz w losowe miejsca, aż znajdziesz odpowiednie miejsce.
Wydrukuj główkę kwiatu.
Wydrukuj łodygę, jeśli poniżej nie ma jeszcze główki kwiatowej.
źródło