En el videojuego Minecraft, puedes obtener balizas y colocarlas en estructuras piramidales para obtener efectos especiales, como la velocidad o el impulso de salto.
Su tarea es, dado un efecto, construir la pirámide de baliza requerida para ello.
Hay múltiples tamaños de pirámides de baliza, necesarios para diferentes efectos. El más grande tiene una 9
base de tamaño y el más pequeño tiene una 3
base de tamaño .
Estos son los efectos que puede obtener y la pirámide requerida para ellos (como lo especifica la wiki oficial de Minecraft:
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
Las balizas se construyen con la base en la parte inferior, luego sube, disminuyendo el tamaño en 2. Una vez que golpeamos 1, debería haber una baliza +
en la parte superior.
Una baliza se define como a +
, pero necesita una pirámide de soporte para funcionar.
Puede suponer que la entrada es válida (es decir, es uno de los efectos especificados aquí) y, opcionalmente, puede suponer que la entrada está en minúsculas. El #
personaje debe usarse en la pirámide y +
como el faro.
Ejemplos:
Haste I
+
###
Resistance I
+
###
#####
Strength I
+
###
#####
#######
Regeneration I
+
###
#####
#######
#########
Speed II
+
###
#####
#######
#########
También debe tomar múltiples efectos ya que las pirámides de baliza pueden compartir bloques; sin embargo, una baliza no puede hacer más de un efecto. Debes usar bloques mínimos.
Al tomar múltiples efectos, puede usar cualquier formato de entrada razonable, como una lista, nueva línea separada, etc. Además, puede tomar una lista singleton para balizas individuales si está usando listas.
Para estos ejemplos, solo enumero una solución posible, pero hay varias soluciones aceptables.
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
++
####
######
########
(no muestre las cosas entre paréntesis, si eso no es lo suficientemente obvio)
Respuestas:
Python 2 ,
216195 bytesPruébalo en línea!
La función para imprimir la cadena con la estructura piramidal es
b
, que se llama con una lista de los efectos como argumento único.Esto resultó más tiempo de lo que esperaba, pero al menos estaba feliz de haber podido encontrar el tamaño del faro basado en la magia negra.
Editar: fue capaz de reducir el recuento de bytes significativamente combinando la función de reducción en un
lambda
gracias a lacmp
función de Python 2 .fuente
Carbón ,
7571605448 bytesPruébalo en línea!
La respuesta de Python también es mía, ¡pero quería probar mi primera presentación de golf en Charcoal!
También quería asegurarme de poder mantener esa recompensa;)
Todos los nombres de baliza de la misma longitud comparten un nivel de baliza. Como tal, podemos determinar el nivel de baliza de un efecto al mapear la longitud (menos 7 para basarlo en cero) a los números en la cadena "14034244" (hay un 0 para mayor claridad porque la longitud 9 no corresponde a un efecto ) Esta misma idea se usa en mi respuesta de Python, pero con un poco de desplazamiento para producir los números 0-3.
fuente
-a
bandera para imprimir el AST si desea una especie de explicación en el enlace TIO tambiénWS⊞υI§14034244⁻Lι⁷F▷sυ«G→→↖⁺ι¹#¦+Mι↙
será válida para que tenga en cuenta queυ
y▷s
será nuevoJalea , 68 bytes
Pruébalo en línea!
Creo que la razón por la que esto es más largo que la respuesta de Carboncillo (aunque pude hacer mi 'magia negra' en 10 bytes) es porque el Carboncillo se construyó para el dibujo bidimensional. Terminé dependiendo de un autómata celular 2D para encontrar las posiciones de
#
s dadas las posiciones de+
s para crear triángulos.Cómo funciona (enlace principal dividido para facilitar la lectura)
fuente