Der Frühling ist vor kurzem gekommen und es ist fast die Zeit, in der Blumen zu sprießen beginnen. Ich möchte, dass du ihnen beim Wachsen hilfst.
Deine Aufgabe:
Bei zwei Zahlen m
und n
werden die m
Blumen zufällig in einem n*n
Raster platziert.
Eine einzelne Blume sieht so aus:
&
|
Die Position einer Blume wird dadurch definiert, wo sie sich &
befindet. Wenn zwei Blumen zufällig platziert werden, können sich keine zwei an derselben Stelle befinden. Wenn sich eine Blume &
mit der einer anderen Blume überschneidet |
, zeigen Sie die &
. Die untere Blumenreihe darf keine enthalten &
.
Die Eingabe kann über eine der Standardmethoden als Zahl oder Zeichenfolge erfolgen.
Die Ausgabe kann eine Liste von Zeichenfolgen sein, wobei jede Zeichenfolge eine Zeile des Rasters darstellt, oder eine begrenzte Zeichenfolge, die derselben Richtlinie wie die Liste folgt. Standardausgabemethoden. Nachlaufende Whatevers sind erlaubt, und Sie können Tabs verwenden, um Ihre Blumen zu trennen. Beachten Sie, dass jedes Raster vollständig mit Leerzeichen oder Ähnlichem gefüllt sein muss.
Beachten Sie, dass die Eingabe immer gültig ist. Sie können die m
Blumen immer legal in das n
By- n
Raster einpassen.
Testfälle:
Da aufgrund des gesamten "Random Placement" -Bits nur sehr enge Testfälle garantiert werden können, ist dies die einzige Art von Testfall mit einer Antwort. Ich werde jedoch alle Einsendungen online testen, um sicherzustellen, dass sie auch in einigen Testfällen gültig sind.
Die Eingabe für die Testfälle erfolgt im Formular m, n
.
Input: 2, 2
Output:
&&
||
--------------
Input: 6, 3
Output:
&&&
&&&
|||
Beachten Sie, dass der Zeilenumbruch nach dem Wort Output:
in den Testfällen optional ist.
Andere Testfälle:
- 1, 10
- 0, 100
- 5, 8
- 6, 3
Code Golf so kürzester Code gewinnt!
Vielen Dank an ComradeSparklePony, dass Sie diese Herausforderung angenommen und in der Geschenkbox des geheimen Weihnachtsmanns veröffentlicht haben!. Sandkastenpfosten
Antworten:
Gelee , 33 Bytes
Probieren Sie es online aus!
Wie?
quelle
m
undn
oder warumsquare m
? wth ist ein nilad ?rotate
. Gut gemacht; ausgezeichnete Aufteilung!PHP (> = 7,1),
135 131 128 116 110109 BytesNimmt Eingaben von Befehlszeilenargumenten entgegen. Laufen Sie mit
-nr
oder testen Sie es online .Nervenzusammenbruch
quelle
-r
ist kostenlos ; Es weist PHP an, Code über das Befehlszeilenargument auszuführen.-n
Setzt PHP auf die Standardeinstellungen zurück.Python 2 , 150 Bytes
Probieren Sie es online aus!
Wie?
Nimmt
input()
STDIN und entpackt das bereitgestellte Tupel (eine durch Kommas getrennte Folge von Dezimalzahlen wie3,6
) inn
undm
.Erstellt ein geordnetes, eindimensionales
n*(n-1)
langes "Blumenbeet"b
durch Verketten von:- einer Liste, die
[1]
wiederholt eine "Blume" enthältm
; und- eine Liste mit einem "Leerzeichen", das
[0]
mehrmals wiederholtn*~-n-m
wird *.* Der Kaulquappenoperator
~
(~x=-1-x
) speichert 2 Bytesn*~-n-m
anstelle des normal aussehendenn*(n-1)-m
.Mischt (mit
random
dershuffle
Funktion) dieses Blumenbeet, um die Blumen und Zwischenräume zufällig zwischen denn*(n-1)
Positionen zu platzieren.Durchläuft die 0-indizierten Zeilen
r
und erstelltprints
nacheinander ein zweidimensionales Blumenbeet aus dem eindimensionalen ...Das letzte zweidimensionale (
n*n
) Blumenbeet hat Stiele,s
eine Reihe unter den Blütenköpfenf
, genau dann, wenn kein Blütenkopf zu zeigen ist. Dies wird erreicht, indem XORing (^
)f
mit-s
wof
unds
sind die1
s und0
s von vor und das Ergebnis verwendet, um in die Zeichenfolge der Länge 3 zu indizieren' &|'
:Zu erhalten
f
unds
diezip
Funktion wird mit zwei Kopien des eindimensionalen Blumenbeets verwendet, eine mitn
nachlaufenden Leerzeichen (die Blütenköpfe) und eine mitn
führenden Leerzeichen (die Stiele). Das Ganze wird für jede Zeile erstellt (um Bytes zu sparen), und die erforderliche Zeile wird mit herausgeschnitten[r*n:r*n+n]
.quelle
Python 2 ,
184179 BytesProbieren Sie es online aus!
quelle
Python 2 , 129 Bytes
Probieren Sie es online aus!
Erzeugt die Ausgabezeichenfolge zeichenweise. Wählt zufällig aus, ob die aktuelle Zelle eine Blume ist, deren Wahrscheinlichkeit der Anzahl
m
der verbleibenden Blumen geteilt durch die Anzahl der verbleibenden Leerzeichen entspricht. Fügt allenn
Zeichen eine neue Zeile hinzu . Eine leere Zelle wird mit einem Stamm gefüllt,|
wenn das Symboln
am Ende a ist&
.quelle
PHP, 111 Bytes
Online Version
-1 Byte für eine physische Newline
eine Lösung 115 Bytes mit max
Auf diese Weise wird mit 137 Bytes der erste Teil der Zeichenfolge gemischt
quelle
JavaScript (ES6), 157 Byte
Erläuterung: Erstellt ein Array, das das Raster aus Blumen und Zeilenumbrüchen darstellt. Sucht rekursiv zufällig nach leeren Quadraten, in denen Blumen platziert werden sollen, bis die gewünschte Anzahl von Blumen erreicht ist. Schließlich werden die Stängel der Blumen dort erzeugt, wo Platz für sie ist.
quelle
Holzkohle , 27 Bytes
Probieren Sie es online aus! Der Link führt zur ausführlichen Version des Codes. Erläuterung:
Eingabe
n
.Ändern Sie die Standarddruckrichtung nach unten.
So
m
oft eingeben und schleifen.Springe zu einer zufälligen Stelle im Raster.
Wenn bereits eine Blume vorhanden ist, springen Sie weiter zu zufälligen Stellen, bis eine geeignete Stelle gefunden wurde.
Drucken Sie den Blumenkopf.
Drucken Sie den Stiel aus, wenn sich darunter noch kein Blütenkopf befindet.
quelle