Você é funcionário da nova mercearia Half Foods, e é um dia antes do Natal do Dia de Ação de Graças . Como a loja estará lotada de clientes correndo para comprar seus alimentos, a loja precisa de um gerente de tráfego para enviar todos para as linhas apropriadas. Sendo preguiçoso, você gostaria de automatizar isso para poder ir até a delicatessen antes que todos tomem todo o presunto de peru . No entanto, tudo o que você tem com você é seu telefone, e codificar programas longos é uma verdadeira dor - então você precisa aprimorar suas habilidades de ninja código-golfe .
Desafio
Vamos visualizar o supermercado em uma grade bidimensional. Aqui está uma amostra de grade para dissecar:
e
s
s
s
Y
# # #s #
#s # #s #
#s # #s #
#s #s #s #
#3 #1 #4 #
x x x x
A grade começa com um e
, que representa uma "saída" para o restante da loja. A cada geração, todas as saídas na grade geram um comprador ( s
) diretamente abaixo. Os compradores descem a cada geração até chegarem a você ( Y
). Quando um comprador atinge a mesma linha que você, você deve teleportar o comprador para o início da linha com a menor quantidade de compradores. Um comprador passa imediatamente para a linha quando entraria na linha com o Y
, não há geração entre eles. As linhas são representadas pelo #
s - a coluna após o #
s é uma linha. Os compradores descem até o final da linha (representada por uma saída x
) e depois se transformam em um número aleatório entre 1
e5
. A cada geração, você deve diminuir o número de compradores 1
- quando um cliente chega 0
, eles terminam de fazer check-out e saem da loja.
Dada a entrada de uma grade como essa, produza a próxima geração da mercearia (mova todos os compradores para baixo simultaneamente, redirecione os compradores e deixe-os sair se tiverem terminado).
Amostras
Entrada:
e
Y
# # # #
# # # #
# # # #
# # # #
# # # #
x x x x
Resultado:
e
s
Y
# # # #
# # # #
# # # #
# # # #
# # # #
x x x x
Entrada:
e
s
Y
# # # #
# # # #
# # # #
# # # #
# # # #
x x x x
Resultado
e
s
Y
#s # # #
# # # #
# # # #
# # # #
# # # #
x x x x
Entrada:
e
Y
# # # #
# # # #
# # # #
#s # # #
# # # #
x x x x
(Possível) Saída:
e
s
Y
# # # #
# # # #
# # # #
# # # #
#3 # # #
x x x x
Entrada:
e
s
Y
# # # #
# # # #
# # # #
# # # #
#3 # # #
x x x x
Resultado:
e
s
Y
# #s # #
# # # #
# # # #
# # # #
#2 # # #
x x x x
Entrada:
e
Y
# # # #
# # # #
# # # #
# # # #
#1 # # #
x x x x
Resultado:
e
s
Y
# # # #
# # # #
# # # #
# # # #
# # # #
x x x x
Isso é código-golfe , então o código mais curto vence.