Im Videospiel Minecraft können Sie Leuchtfeuer erhalten und auf pyramidenähnlichen Strukturen platzieren, um Spezialeffekte wie Geschwindigkeit oder Sprungschub zu erzielen.
Ihre Aufgabe ist es, bei einem bestimmten Effekt die dafür erforderliche Leuchtfeuerpyramide zu konstruieren.
Es gibt mehrere Größen von Leuchtfeuerpyramiden, die für verschiedene Effekte erforderlich sind. Der größte hat eine Größenbasis 9
und der kleinste hat eine 3
Größenbasis.
Dies sind die Effekte, die Sie erzielen können, und die dafür erforderliche Pyramide (wie im offiziellen Minecraft-Wiki angegeben:
3:
Speed I
Haste I
5:
Resistance I
Jump Boost I
7:
Strength I
9:
Regeneration I
Resistance II
Jump Boost II
Speed II
Haste II
Strength II
Beacons werden mit der Basis unten konstruiert, dann geht es nach oben und verringert die Größe um 2. Sobald wir 1 treffen, sollte sich oben ein Beacon befinden +
.
Ein Leuchtfeuer ist als definiert +
, benötigt jedoch eine tragende Pyramide, um zu funktionieren.
Sie können davon ausgehen, dass die Eingabe gültig ist (dh es handelt sich um einen der hier angegebenen Effekte), und optional können Sie davon ausgehen, dass die Eingabe nur in Kleinbuchstaben geschrieben ist. Der #
Charakter sollte in der Pyramide und +
als Leuchtfeuer verwendet werden.
Beispiele:
Haste I
+
###
Resistance I
+
###
#####
Strength I
+
###
#####
#######
Regeneration I
+
###
#####
#######
#########
Speed II
+
###
#####
#######
#########
Sie müssen auch mehrere Effekte ausführen, da Beacon-Pyramiden Blöcke gemeinsam nutzen können. Ein Beacon kann jedoch nicht mehr als einen Effekt ausführen. Sie müssen minimale Blöcke verwenden.
Wenn Sie mehrere Effekte verwenden, können Sie jedes vernünftige Eingabeformat verwenden, z. B. eine Liste, eine durch Zeilenumbrüche getrennte Zeile usw. Außerdem können Sie eine Singleton-Liste für einzelne Beacons erstellen, wenn Sie Listen verwenden.
Für diese Beispiele liste ich nur eine mögliche Lösung auf, aber es gibt mehrere akzeptable Lösungen.
Speed I, Haste II
++
####
#####
#######
#########
(another acceptable solution is the following,
these are both valid as they use the same amount of blocks)
+
###
#####
#######+
##########
(the following is not valid for the same input; it doesn't use minimal blocks)
+
###
##### +
####### ###
#########
Strength I, Strength I
++
####
######
########
(Geben Sie keine Dinge in Klammern aus, wenn dies nicht offensichtlich genug ist.)
Antworten:
Python 2 ,
216195 BytesProbieren Sie es online aus!
Die Funktion zum Drucken der Zeichenfolge mit der Pyramidenstruktur lautet
b
: Diese wird mit einer Liste der Effekte als einzelnes Argument aufgerufen.Dies stellte sich länger als erwartet heraus, aber ich war zumindest froh, dass ich die Leuchtfeuergröße basierend auf schwarzer Magie finden konnte.
Bearbeiten: konnte die Anzahl der Bytes erheblich reduzieren, indem die Reduzierungsfunktion
lambda
dank dercmp
Funktion von Python 2 zu einer Funktion kombiniert wurde .quelle
Holzkohle ,
7571605448 BytesProbieren Sie es online aus!
Die Python-Antwort ist auch meine, aber ich wollte meine erste Golf-Einreichung in Charcoal versuchen!
Ich wollte auch sicherstellen, dass ich dieses Kopfgeld halten kann;)
Alle Beacon-Namen derselben Länge teilen sich eine Beacon-Ebene. Als solches können wir den Beacon-Pegel eines Effekts bestimmen, indem wir die Länge (minus 7, um sie auf Null zu setzen) den Zahlen in der Zeichenfolge "14034244" zuordnen (aus Gründen der Klarheit gibt es eine 0, da die Länge 9 keinem Effekt entspricht ). Dieselbe Idee wird in meiner Python-Antwort verwendet, jedoch mit Bitverschiebung, um die Zahlen 0-3 zu erzeugen.
quelle
-a
Flag zum Drucken des AST hinzuzufügen, wenn Sie auch eine Art Erklärung im TIO-Link wünschenWS⊞υI§14034244⁻Lι⁷F▷sυ«G→→↖⁺ι¹#¦+Mι↙
wird gültig , so denken Sie daran , dassυ
und▷s
wird neuGelee , 68 Bytes
Probieren Sie es online aus!
Ich denke, der Grund, warum dies länger ist als die Antwort von Charcoal (obwohl ich meine 'schwarze Magie' in 10 Bytes ausführen konnte), ist, dass Charcoal für zweidimensionales Zeichnen gebaut wurde. Ich endete abhängig von einem 2D-Zellularautomaten, um die Positionen von
#
s zu finden, wobei die Positionen von s gegeben wurden+
, um Dreiecke zu erzeugen.Wie es funktioniert (Hauptlink zur besseren Lesbarkeit aufgeteilt)
quelle