Gravity Guy é um jogo em que a única entrada do usuário é uma única tecla que muda a direção da gravidade. Dado um nível artístico ASCII, determine se é possível que o Gravity Guy chegue ao fim.
Regras
- A direção inicial da gravidade está baixa .
- A primeira coluna da entrada sempre conterá apenas uma
#
, na qual o Gravity Guy inicia . - Cada iteração, ele se move para o personagem diretamente à sua direita .
- Se o caminho dele estiver bloqueado e ele entrar em um
#
, o jogador perde . - Depois de se mover, o jogador pode opcionalmente mudar a gravidade de baixo para cima ou de cima para baixo.
- O Gravity Guy então cai para o próximo
#
(na direção atual da gravidade). - Se não houver
#
alguém para cair e ele cair fora da grade , o jogador perde . - Se o Gravity Guy se mover do lado direito da grade de entrada, o jogador vence .
Exemplo
Se essa era a grade de entrada:
###
# # #
###
O Gravity Guy começaria nas x
posições e estar nessas posições após cada iteração. ^
= alternar a gravidade para cima e v
= alternar a gravidade para baixo.
v ^ v
-------------------------------------------------------------
### | ### | ### | ### | ### | ###
x | | x | x | x |
# # | #x # | # # | # # | # # | # # x
### # | ### # | ### # | ### # | ### # | ### #
Como você pode ver, alternando a gravidade nesses momentos, o Gravity Guy chega ao fim, para que essa entrada retorne um valor verdadeiro.
Especificações
- A grade de entrada pode estar em qualquer formato de "grade" apropriado (cadeia de linhas múltiplas preenchida com espaços, matriz de cadeias de linhas, matriz de matriz de caracteres, etc.).
- Se for possível ao jogador vencer o nível, produza um
truthy
valor. Caso contrário, imprima umfalsey
valor. - A largura e a altura da grade terão
50
no máximo caracteres. - Este é o código-golfe , que o código mais curto em bytes vença!
Casos de teste
(cada caso separado por ----------
, qualquer linha em branco também deve ser preenchida com espaços)
Verdade
######### ######## ###### ######
# # # # # # #
### # # # # # # # # #
# ## # # ## # # # # # ##
# # # # # # # # # #######
# # # # # ### # #
# ## # ## # # # #
# # # # # #
# #################################### #
# #
#############################################
----------
###
----------
#####
####
----------
#####
# # #
# # #
#####
----------
############
###### ######
############
----------
### ###
# #
#### # ####
# #
# #
#
----------
######
#
##
#######
### #
# #
#####
----------
#####
# #
## #
#######
###
#
######
----------
###
# # #
###
----------
### ###
### ##
# #
#####
----------
#
# #
#
# # #
#
#
#
#
----------
##### ####
# # #
# # # ## #
# #
##### #### #
#
#########
----------
###########################
# # # # # # #
# # # # # # # # # #
# # # ######### ###########
# # # # # # # #
# # # ## ##### ### #
## # # # ## ###
# ##### #### ########### #
# # # # # ## #
# # ##### ### # # # # # #
# # # # ##
###########################
Falso
###
#
####
----------
### ###
----------
#
### ###
#### ###
#
----------
### ###
# # #
#### # # ####
# #
# #
# #
#
----------
#######
# #
## #####
### ######
# #
#######
----------
###########################
# # # # # # # #
# # # # # # # # # #
# # # ######### ###########
# # # # # # # #
# # # ## ##### ### #
## # # # ## ###
# ##### #### ########### #
# # # # # ## #
# # ##### ### # # # # # #
# # # # ##
###########################
column
tipo especial , seria bom usá-lo, eu acho.
#
primeira coluna esteja na primeira linha?