Declaração
Você recebe uma imagem estática de uma série de bolas caindo em uma grade 2D. Essa grade é cercada por paredes imutáveis e inquebráveis, para que toda a ação contida nelas. Sua tarefa é determinar qual será o estado do cenário depois que a gravidade fizer todo o trabalho.
Elementos dentro da grade
-
Chão, não altera a direção das bolas caindo.\
Deslize para a direita, altera o caminho da bola uma (1) posição para a direita./
O slide esquerdo altera o caminho da bola uma (1) posição esquerda.o
Uma bola.
Regras
- Bolas caem.
- Pisos e slides não caem .
- Se a bola bater em um escorregador que o faria atravessar uma parede (
\#
ou#/
) ou atravessar um piso, o escorregador atuará como um piso. - Quando uma bola bate em outra bola, ela se torna uma bola, mas aumenta seu poder na soma das duas bolas.
- Novas bolas (unidas) continuarão a se comportar como de costume.
- Quando uma bola não pode mais se mover, ela é substituída por seu poder.
- O poder de uma bola sempre será no máximo 9.
Entrada
A grade será fornecida em uma variável de string com o nome mais curto no seu idioma de escolha. Por padrão, usaremos a
como entrada. Uma amostra de uma entrada, exatamente como recebida:
##########\n# \ #\n#o #\n# - -\o #\n#/- \ #\n# \oo-/\#\n#-/ \ /#\n# \ \ #\n# /#\n##########
Para grades aleatórias geradas, use https://repl.it/B1j3/2 . Use minha página gerada (sem anúncios, porcaria, apenas a entrada e a saída)
Observe quebras de linha são \n
. Imprimir a entrada na tela (não necessária para o desafio) mostraria coisas assim. Embora eu tenha colocado quatro quebra-cabeças ao lado para um espaço seguro.
########## ########## ########## ##########
# \ # # o -/# # o# #-o / #
#o # # \ # # o -# #-- \ /\ #
# - -\o # #- \ # # - \o# # - -- o-#
#/- \ # # # #o /\ # #/ \ #
# \oo-/\# #o -o- # # / -o# #/ /o oo/#
#-/ \ /# # -/- # # - o -# #o/ #
# \ \ # # \\ # # \o /# #o-o o#
# /# # \o\ /\# # \o # # -\o o /#
########## ########## ########## ##########
Saída
A mesma grade, impressa na tela com o resultado final da força da bola. Uma resposta válida seria um (1) dos seguintes quebra-cabeças, cada um corresponde à entrada na mesma posição, é claro que se a entrada for diferente, você deve ajustar a saída. Não o limite àqueles quatro!
########## ########## ########## ##########
# \ # # -/# # 1# #-1 / #
# # # \ # # -# #-- \ /\ #
#1 - -\ # #- \ # # - \ # # - -- -#
#/- \1# # # # /\ # #/ \ #
# \ -/\# # -1- # # / -2# #/ / /#
#-/ \ /# # -/- # # - -# # / #
# \ \ # # \\ # # \ /# # - #
# 2 /# #1\2\ /\# #2 2\1 # #2-\3 23/#
########## ########## ########## ##########
Ponto
Os idiomas competirão entre si, portanto, sinta-se livre para usar idiomas não-lobos. Para validar uma solução, devo poder testá-la em algum lugar para ver se funciona !.
Pontuação é o número de bytes. Em caso de empate, a primeira resposta para alcançar a pontuação empatada vence.
Advertências
- Se não tiver certeza de como uma bola deve reagir, pergunte-me e esclarecerei. Fui o mais claro possível, mas tenho certeza de que há casos confusos.
- Os slides são montados apenas se você puder sair deles ; pense nisso como um slide real. Há um cara no topo que não deixa você passar pela bola, a menos que ela saia pelo outro lado.
Esclarecendo exemplos do movimento da bola
###### ######
#-o- # BALL WOULD GO RD #- - #
# \ # # \o #
###### ######
###### ######
#-o- # BALL WOULD STAY #-o- #
# \\ # # \\ #
###### ######
###### ######
# -o# BALL WOULD STAY # -o#
# \# # \#
###### ######
###### ######
# o # BALL WOULD STAY # o #
# \/# # \/#
###### ######
###### ######
#-o- # BALL WOULD GO LD #- - #
# /\ # #o/\ #
###### ######
ATUALIZAÇÕES
Como posso testar se minha resposta é válida?
Configurei uma página simples em um dos meus sites que fornecerá um quebra-cabeça aleatório e sua resposta. Pegue a entrada e verifique com a saída. Minha solução, sem se preocupar muito com o golfe, está em python (gerador e página também python)389b
355b
Entre os melhores
fonte
Respostas:
JavaScript (ES6),
157196Edite char por char em vez de linha por linha, resultado muito melhor
Nota: não lida com valores de bola> 9. Mas poderia, com um custo de 18 bytes. Veja o código básico abaixo.
Snippet de teste (melhor página inteira)
fonte
v>9?9:v
?Javascript (ES6),
453426409306290286 bytesA primeira e mais óbvia solução que me veio à mente é aquela que olha em volta dos slides e depois se funde ou substitui.
Ungolfed:
Teste como:
Graças a: @ edc65
fonte
b.replace(/o/g,'1').split``
pode ser encurtado para[...b.replace(/o/g,1)]
Java,
Muitos1102987 bytesPorque Java.
\ o / Está abaixo de 1000!
A meta lado estava sendo capaz de imprimir cada iteração do conselho: basta remover o meio
;
emwhile(g.i())
;
System.out.print(g.s());
(Embora isto faz desativar a última impressão que tem a 0-> conversão de energia). Infelizmente, nesta versão, a gravidade funciona estranhamente. A cada passe, pego a primeira bola não presa e a movo. Curto-circuito,iterate()
há menos bytes do que passar por toda a placa e retornar se alguma coisa mudar.Esta é uma classe principal completa, compila e executa na linha de comando com o argumento:
Versão "legível":
fonte
Python3, 355b
Teste aqui
fonte
PHP,
228 204 197194 bytesgera avisos no PHP 7.1. Insira
(int)
antes$a[$t]+$c
para corrigir.Corra com
php -nr '$a="<string>";<code>'
ou experimente online .demolir
fonte