Eu estava apenas jogando o jogo de tabuleiro Desculpe! com algumas pessoas, e percebi que poderia basear alguns desafios interessantes. Este é bastante simples.
Sua tarefa é simplesmente produzir uma versão artística de um quadro de desculpas, colocando peças onde eu digo.
Especificações
Primeiro, aqui está uma imagem de um real Desculpe! placa para referência:
O tabuleiro vazio se parece com:
# > - - o # # # # > - - - o # #
# # S v
o # H # # # # # |
| # |
| # S o
| # #
^ H #
# #
# #
# H v
# # |
o S # |
| # |
| # # # # # H # o
^ S # #
# # o - - - < # # # # o - - < #
Observe alguns recursos.
- Os
#
quadrados são vazios. - Os
S
'eH
' são Start e Home, respectivamente. - O
>v<^
início dos slides depende da direção que eles estão voltados. - Os
|
's' e-
's são os meios de slides, dependendo se eles são horizontais ou verticais. - Os
o
são os finais dos slides. - Cada coluna é separada por uma coluna de espaços para torná-la mais quadrada.
Agora, aqui está o que você deve fazer:
- Sua entrada é uma lista de coordenadas de várias peças que foram colocadas no quadro.
- As coordenadas começam no
0
quadrado fora do início da cor inferior (amarelo na figura) e aumentam em uma por quadrado no sentido horário. - Após esses 60 quadrados, as zonas seguras têm as próximas e as últimas 20 coordenadas, começando pela inferior (que fica entre 60 e 64) e depois no sentido horário.
- Você terá que colocar as estrelas
*
na coordenada correta, substituindo o personagem abaixo de todos os jogadores. - Além disso, se algum dos jogadores estiver no quadrado inicial de um controle deslizante, mova-os para o final do controle deslizante antes de colocá-los.
- Você pode assumir que não haverá colisões, antes ou depois de resolver os controles deslizantes.
- Você não precisa se preocupar com o Lar ou o Lar.
- Você pode ser indexado 1 se quiser, mas os casos de teste são indexados 0.
Casos de teste
[0, 20] ->
# > - - o # # # # > - - - o # #
# # S v
* # H # # # # # |
| # |
| # S o
| # #
^ H #
# #
# #
# H v
# # |
o S # |
| # |
| # # # # # H # o
^ S # #
# # o - - - < # # # # * - - < #
[2, 7, 66] ->
# > - - o # # # # > - - - o # #
# # S v
o # H # # # # # |
| # |
| # S o
| # #
^ H #
# #
# #
# H v
# # |
o S # |
| # |
| # * # # # H # o
^ S # #
# # o - * - < # # * # o - - < #
0, 5
e o segundo pode ser2, 60, 37
).Respostas:
Python 2, 476 bytes
Solução curta de 3 linhas ( Experimente online )
Uma linha em 534 ( Experimente online ):
Eu assumo índices de zona segura desta maneira:
Explicação (as linhas são um pouco separadas para melhor compreensão):
fonte