No videogame Minecraft, você pode obter beacons e colocá-los em estruturas semelhantes a pirâmides para fornecer efeitos especiais, como aumento de velocidade ou salto.
Sua tarefa é, com efeito, construir a pirâmide de farol necessária para isso.
Existem vários tamanhos de pirâmides de farol, necessários para diferentes efeitos. O maior tem uma 9
base de tamanho e o menor tem uma 3
base de tamanho .
Estes são os efeitos que você pode obter e a pirâmide necessária para eles (conforme especificado no wiki oficial do 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
Os faróis são construídos com a base na parte inferior e, em seguida, aumentam, diminuindo o tamanho em 2. Quando atingimos 1, deve haver um farol +
no topo.
Um farol é definido como um +
, mas precisa de uma pirâmide de suporte para funcionar.
Você pode assumir que a entrada é válida (ou seja, é um dos efeitos especificados aqui) e, opcionalmente, você pode assumir que a entrada está toda em minúscula. O #
personagem deve ser usado na pirâmide e+
como farol.
Exemplos:
Haste I
+
###
Resistance I
+
###
#####
Strength I
+
###
#####
#######
Regeneration I
+
###
#####
#######
#########
Speed II
+
###
#####
#######
#########
Você também deve ter vários efeitos, pois as pirâmides de beacon podem compartilhar blocos - no entanto, um beacon não pode fazer mais de um efeito. Você deve usar blocos mínimos.
Ao realizar vários efeitos, você pode usar qualquer formato de entrada razoável, como uma lista, uma nova linha separada etc. Além disso, você pode usar uma lista de singleton para beacons únicos, se estiver usando listas.
Para esses exemplos, listo apenas uma solução possível, mas existem várias soluções aceitáveis.
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
++
####
######
########
(não coloque coisas entre parênteses, se isso não for óbvio o suficiente)
Respostas:
Python 2 ,
216195 bytesExperimente online!
A função para imprimir a string com a estrutura da pirâmide é
b
, chamada com uma lista dos efeitos como seu argumento único.Isso acabou por mais tempo do que eu esperava, mas pelo menos fiquei feliz por encontrar o tamanho do farol com base na magia negra.
Edit: conseguiu reduzir significativamente a contagem de bytes combinando a função de redução em um
lambda
agradecimento àcmp
função do Python 2 .fonte
Carvão ,
7571605448 bytesExperimente online!
A resposta Python também é minha, mas eu queria tentar minha primeira finalização de golfe em Charcoal!
Eu também queria ter certeza de que posso segurar essa recompensa;)
Todos os nomes de beacon do mesmo comprimento compartilham um nível de beacon. Assim, podemos determinar o nível de sinal de um efeito, mapeando o comprimento (menos 7 para basear em zero) para os números na sequência "14034244" (existe um 0 para maior clareza, porque o comprimento 9 não corresponde a um efeito ) Essa mesma idéia é usada na minha resposta em Python, mas com deslocamento de bits para produzir os números de 0 a 3.
fonte
-a
bandeira para imprimir a AST se você quiser um tipo de explicação na ligação TIO bemWS⊞υI§14034244⁻Lι⁷F▷sυ«G→→↖⁺ι¹#¦+Mι↙
será válido, portanto, lembre-se dissoυ
e▷s
será novoGeléia , 68 bytes
Experimente online!
Eu acho que a razão pela qual isso é mais longo que a resposta do carvão vegetal (embora eu tenha sido capaz de fazer minha 'magia negra' em 10 bytes) é porque o carvão vegetal foi construído para o desenho bidimensional. Eu terminei dependendo de um autômato celular 2D para encontrar as posições de
#
s dadas as posições de+
s para criar triângulos.Como funciona (link principal dividido para facilitar a leitura)
fonte