Mash Up Zeit!
Dies ist Teil 5 sowohl meiner Zufallsgolf- Serie als auch der ASCII- Serie Art of the Day des Optimizers . Ihre Einsendungen in dieser Challenge werden für beide Bestenlisten gezählt (die verknüpften Posts finden Sie). Natürlich können Sie dies wie jede andere Code-Golf-Herausforderung behandeln und beantworten, ohne sich Gedanken über eine der beiden Serien zu machen.
Loch 5: Diamantkacheln
Ein normales Sechseck kann immer mit Diamanten wie folgt gekachelt werden:
Wir werden eine ASCII-Kunstdarstellung dieser Fliesen verwenden. Für ein Sechseck der Seitenlänge 2 gibt es 20 solcher Fliesen:
____ ____ ____ ____ ____ ____ ____ ____ ____ ____
/\_\_\ /\_\_\ /\_\_\ /\_\_\ /_/\_\ /_/\_\ /\_\_\ /_/\_\ /_/\_\ /_/\_\
/\/\_\_\ /\/_/\_\ /\/_/_/\ /\/_/\_\ /\_\/\_\ /\_\/_/\ /\/_/_/\ /\_\/\_\ /\_\/_/\ /_/\/\_\
\/\/_/_/ \/\_\/_/ \/\_\_\/ \/_/\/_/ \/\_\/_/ \/\_\_\/ \/_/\_\/ \/_/\/_/ \/_/\_\/ \_\/\/_/
\/_/_/ \/_/_/ \/_/_/ \_\/_/ \/_/_/ \/_/_/ \_\/_/ \_\/_/ \_\/_/ \_\/_/
____ ____ ____ ____ ____ ____ ____ ____ ____ ____
/_/_/\ /\_\_\ /_/\_\ /_/_/\ /_/\_\ /_/\_\ /_/_/\ /_/_/\ /_/_/\ /_/_/\
/\_\_\/\ /\/_/_/\ /_/\/_/\ /\_\_\/\ /\_\/_/\ /_/\/_/\ /_/\_\/\ /\_\_\/\ /_/\_\/\ /_/_/\/\
\/\_\_\/ \/_/_/\/ \_\/\_\/ \/_/\_\/ \/_/_/\/ \_\/_/\/ \_\/\_\/ \/_/_/\/ \_\/_/\/ \_\_\/\/
\/_/_/ \_\_\/ \_\/_/ \_\/_/ \_\_\/ \_\_\/ \_\/_/ \_\_\/ \_\_\/ \_\_\/
Bei gegebener Seitenlänge N
sollten Sie eine solche Kachelung für ein Sechseck N
mit zufälliger Seitenlänge generieren . Die genaue Verteilung spielt keine Rolle, aber jede Kachel muss mit einer Wahrscheinlichkeit ungleich Null zurückgegeben werden.
Denn N ≤ 4
Ihre Einreichung muss innerhalb von 1 Minute mindestens 80% der Zeit eine Kachel erzeugen und mindestens 80% der Kacheln müssen möglicherweise innerhalb von 1 Minute erzeugt werden. Die meisten Ansätze müssen sich nicht um diese Regel kümmern (sie ist sehr nachgiebig) - dies ist nur, um sehr naive abweisungsbasierte Algorithmen auszuschließen, die beliebige Zeichenfolgen generieren, bis zufällig eine Kachelung vorliegt.
Vielleicht möchten Sie wissen, dass die Gesamtzahl der möglichen Kacheln für gegebenes N in OEIS A008793 zu finden ist .
Sie können ein vollständiges Programm oder eine Funktion schreiben und Eingaben über STDIN (oder die nächstgelegene Alternative), ein Befehlszeilenargument oder ein Funktionsargument vornehmen und Ausgaben über STDOUT (oder die nächstgelegene Alternative), einen Funktionsrückgabewert oder einen Funktionsparameter (out) erzeugen.
Sie dürfen nicht mehr führende Leerzeichen als erforderlich ausgeben, um das Sechseck auszurichten (dh die linke Ecke des Sechsecks sollte keine Leerzeichen vor sich haben). Jede Zeile kann bis zu N
abschließende Leerzeichen enthalten (nicht unbedingt konsistent, sodass Sie z. B. eine rechteckige Ausgabe haben können, in der der Begrenzungsrahmen des Sechsecks gedruckt wird).
Dies ist Codegolf, daher gewinnt die kürzeste Übermittlung (in Bytes). Und natürlich wird die kürzeste Einsendung pro Benutzer auch in die Gesamt-Bestenliste der Serie aufgenommen.
Bestenlisten
Der erste Beitrag jeder Serie generiert eine Rangliste.
Um sicherzustellen, dass Ihre Antworten angezeigt werden, beginnen Sie jede Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:
# Language Name, N bytes
Wo N
ist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(Die Sprache wird derzeit nicht angezeigt, das Snippet erfordert sie jedoch und analysiert sie. Ich füge möglicherweise in Zukunft eine Bestenliste nach Sprachen hinzu.)
For N ≤ 4, your submission must produce a tiling within 1 minute at least 80% of the time.
zu einfach: 80% der Zeit die gleichen, grundlegende Kacheln, sonst finde ich eine andere Kacheln in der Zeit, die ich will