Die Bäume, die wir anbauen, haben einige Regeln, die definieren, wie sie wachsen:
Wachstumsregeln:
- Bäume bestehen nur aus Zweigen.
- Branchen setzen sich aus einer Kombination der folgenden Symbole:
_
,\
,|
,/
, &_
Ein Baum beginnt als einzelner vertikaler Ast / Stamm (
|
) auf dem Boden (_
):__________________|___________________
Die Nahrung für das Wachstum der Zweige stammt aus Licht.
- Licht beginnt an jedem Punkt des Himmels mit einer Intensität von 2 und breitet sich direkt nach unten aus.
- Jeder Zweig kann die Hälfte des ihm zur Verfügung stehenden Lichts verzehren und der Rest gelangt zu niedrigeren Zweigen.
- Ein Zweig, über dem sich keine anderen Zweige befinden, erhält also 1 Einheit Lightfood pro Saison, ein Zweig, über dem sich 1 Zweig befindet, erhält 0,5 Einheiten Food pro Saison, und im Allgemeinen ein Zweig, über dem sich n Zweige befinden 1 / (2 ^ n) Einheiten Essen pro Saison.
- Am Ende jeder Saison werden die Lebensmittel beginnend mit dem Stamm zusammengerechnet und in neue Zweige und Früchte umgewandelt (wenden Sie die folgenden Regeln an, bis der Zweig Früchte werden oder weniger als 1 Lebensmitteleinheit übrig bleibt):
- Wenn eine Filiale am Ende einer Saison weniger als 1 Lebensmitteleinheit hat, werden alle Lebensmittel für diese Filiale bis zur nächsten Saison in dieser Filiale gelagert.
- Wenn ein Zweig mehr als oder gleich 1 Einheit Futter hat und Platz zum Wachsen hat, baut er nach dem Zufallsprinzip einen neuen Zweig mit den verfügbaren Wachstumsmustern an (siehe unten) und speichert die restlichen Futter für die nächste Saison.
- Wenn ein Zweig> = 1 Einheit Nahrung hat, nirgends wachsen kann und Abzweigungen hat, verteilt er die Nahrung gleichmäßig auf seine Abzweigungen
- Wenn ein Zweig> = 1 Einheit Nahrung hat, nirgends wachsen kann und keine Ablegerzweige, wird er Frucht (dargestellt durch
O
).
- Hier sind die möglichen Wachstumskonfigurationen
Wachstumskonfigurationen:
_ \ | / _ _ \ | / \ | / _
| | | | | \ \ \ \ / / / / __ \_ |_ _| _/ __
--- Vertical Branches --- --- Diagonal Branches --- --- Horizontal Branches ---
Beispiel potentieller Baum:
\
/ /
\/O |___//
\_/ \//O\_/
\__/|\|_/
\|/
__________________|__________________
Eingang:
Ihr Programm sollte in der Lage sein, eine Liste der Schnappschüsse des Baums, die Sie sehen möchten, als Eingabe zu verwenden. Zum Beispiel [10,20,50] würde bedeuten, dass Sie den Baum nach 10, 20 und 50 Jahreszeiten sehen möchten.
Ausgabe:
Für jede eingegebene Jahreszeit sollte Ihr Programm die Jahreszeit und dann ein Bild des Baums in dieser Jahreszeit ausgeben. Wenn dies hilft, können Sie ein maximales Alter für den Baum festlegen, z. B. 60, sodass die maximale Höhe für einen Baum 61 und die maximale Breite 121 beträgt, und dann den Baum immer in dieser Skala anzeigen. Ansonsten können Sie Ihr Bild auf einen Baum beliebiger Größe skalieren. Wenn die Eingabe beispielsweise [0,1,2,3] war, könnte Ihre Ausgabe folgendermaßen aussehen:
Season 0:
_|_
Season 1:
\
__|__
Season 2:
_
\|
___|___
Season 3:
|_/ _
\|
____|___
Gewinner
Jede Lösung muss die Ausgabe des bevorzugten Programmlaufs des Codierers mit der Eingabe von [10,40]
zusammen mit dem Quellcode veröffentlichen. Außerdem müssen ALLE oben genannten Kriterien erfüllt sein, um sich zu qualifizieren.
Der Gewinner ist das Qualifikationsspiel mit der höchsten Stimmenzahl.
Viel Glück und fröhliches Pflanzen !!!
quelle
Antworten:
Python
Ich habe mir damit ein wenig Freiheit genommen:
Beispielausgabe, 2 Bäume
Quelle
Ich bin gespannt auf eine golferische Lösung.
quelle
Python, 673 Zeichen
Hier ist eine Golfversion:
sample @ 10 (abgeschnitten auf den interessanten Teil):
sample @ 40:
quelle
Javascript
UPD: Einige neue Regeln hinzugefügt:
Hier ist nicht der schönste Code auf Javascript. Könnte später noch ein paar Verbesserungen geben. Code auf JSFiddle
Einige Beispiele (10.40.100):
quelle