Eu não gosto de digitar, então eu desenho meus labirintos em um formato muito simples:
# #####
# #
# ### #
# # # #
# # #
##### #
Não é labirinto ? Obviamente, acho que todos os labirintos devem parecer 3D, semelhantes, mas não iguais a esse desafio , para obter o máximo de labirinto , então eu (de má vontade) atualizei manualmente o labirinto para ficar assim:
+-----+ +-----------------------------+
|\ \ |\ \
+ \ \ + \ \
\ \ \ \ +-----------------------+ \
\ \ \ \| |\ \
\ \ \ +-----------------------+ \ \
\ \ \ +-----------------+ \ \ \
\ \ \ |\ \ \ \ \
\ \ \ + \ \ \ \ \
\ \ \ \ \ +-----+ \ \ \ \
\ \ \ \ \ \ |\ \ \ \ \
\ \ \ \ \ \---+ \ \ \ \ \
\ \ \ \ +-----+ \ \ \ \ \ \
\ \ \ \| | \ \ \ \ \ \
\ \ \ +-----+ \ \ \ \ \ \
\ \ +-----------------+ \ \ \ \
\ \ \ \ \ \
\ \ \ \ \ \
\ +-----------------------------+ \ +-----+
\| | \| |
+-----------------------------+ +-----+
Infelizmente, é difícil trabalhar com labirintos nesse formato e, depois de toda a digitação manual, não quero digitar novamente o original, então preciso que você escreva um programa para fazer a reversão para mim.
Regras
- Entrada será uma matriz de strings ou personagem de várias linhas consistindo apenas de
" "
,"|"
,"\"
,"+"
,"-"
, e novas linhas. - A saída consiste em
" "
e"#"
, no padrão descrito pelo labirinto. - Devido às minhas habilidades incríveis de design de labirinto, você não pode assumir nada sobre a estrutura do labirinto, além de ter uma desconstrução válida.
- Na 3dificação, (o processo que você deve desfazer agora), cada um
#
foi convertido nesse bloco de caracteres 3x4x7:+-----+ |\ \ + \ \ \ +-----+ \| | +-----+
- Blocos adjacentes foram unidos, assim:
mas sem unir linhas, fica assim:+-----+-----+ |\ \ \ + \ \ \ \ +-----+-----+ \|\ \ \ + \ \ \ \ +-----+-----+ \| | | +-----+-----+
+-----------+ |\ \ + \ \ \ \ \ \ \ \ \ \ \ \ +-----------+ \| | +-----------+
- Espaços côncavos às vezes bloqueiam partes de outras paredes.
+-----------+ |\ \ + \ \ \ \ +-----+ \ \ \ | \ \ \---+ \ +-----+ \| | +-----+
- O espaço em branco à direita na entrada ou saída é aceitável. (Você deve especificar se sua resposta requer espaço em branco à direita na entrada.)
- Os espaços em branco à esquerda devem corresponder aos espaços vazios na entrada.
- Eu ainda não gosto de digitar, então o código mais curto ganha
Casos de teste:
Input:
+-----+ +-----------------------------+
|\ \ |\ \
+ \ \ + \ \
\ \ \ \ +-----------------------+ \
\ \ \ \| |\ \
\ \ \ +-----------------------+ \ \
\ \ \ +-----------------+ \ \ \
\ \ \ |\ \ \ \ \
\ \ \ + \ \ \ \ \
\ \ \ \ \ +-----+ \ \ \ \
\ \ \ \ \ \ |\ \ \ \ \
\ \ \ \ \ \---+ \ \ \ \ \
\ \ \ \ +-----+ \ \ \ \ \ \
\ \ \ \| | \ \ \ \ \ \
\ \ \ +-----+ \ \ \ \ \ \
\ \ +-----------------+ \ \ \ \
\ \ \ \ \ \
\ \ \ \ \ \
\ +-----------------------------+ \ +-----+
\| | \| |
+-----------------------------+ +-----+
Output:
# #####
# #
# ### #
# # # #
# # #
##### #
Input:
+-----+
|\ \
+ \ \
\ +-----+
\| |
+-----+
Output:
#
Input:
+-----------------+
|\ \
+ \ \
+-----+ +-----+ +-----+
|\ \ |\ \
+ \ \---+ \ \
\ \ +-----+ \ +-----+ \
\ \ \ | \| |\ \
\ \ \---+ +-----+ \ \
\ \ +-----+ +-----+ \
\ \ \ |\ \
\ \ \ + \ \
\ +-----+ +-----+ +-----+
\| |\ \ |
+-----+ \ \---+
\ +-----------------+
\| |
+-----------------+
Output:
###
## ##
# #
## ##
###
Input:
+-----------------------------------------------------------------------------------------------------+
|\ \
+ \ \
\ +-----------------------------------------------+ +-----------------------------------------+ \
\| |\ \ |\ \
+-----------------------------------------------+ \ \---------------------------------------+ \ \
+-----+ +-----------------------------+ \ \ \ +-----------------------------+ \ \ \
|\ \ |\ \ \ \ \ |\ \ \ \ \
+ \ \ + \ \ \ \ \ + \ \ \ \ \
\ \ \ \ +-----------+ +-----+ \ \ \ \ \ +-----------------------+ \ \ \ \
\ \ \ \| |\ \ |\ \ \ \ \ \| |\ \ \ \ \
\ \ \ +-----------+ \ \---+ \ \ \ \ \ +-----------------------+ \ \ \ \ \
\ \ \ +-----+ \ \ \ \ \ \ \ \ +-----------------------+ \ \ \ \ \ \
\ \ \ |\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
\ \ \ + \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \
\ \ \ \ +-----+ \ \ \ \ \ \ \ +-----------------------------+ \ \ \ \ \ \
\ \ \ \| | \ \ \ \ \ \ \| | \ \ \ \ \ \
\ \ \ +-----+ \ \ \ \ \ \ +-----------------------------+ \ \ \ \ \ \
\ \ +-----------+ \ \ \ \ \ +-----------------------------------+ \ \ \ \ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \
\ \ +-----------+ \ \ \ \ \ +-----------------------+ +-----+ \ \ \ \ \ \
\ \ \ | \ \ \ \ \ \ |\ \ | \ \ \ \ \ \
\ \ \---------+ \ \ \ \ \ \---------------------+ \ \---+ \ \ \ \ \ \
\ \ \ +-----------+ \ \ \ \ +-----------+ \ \ \ +-----+ \ \ +-----+
\ \ \ |\ \ \ \ \ |\ \ \ \ \ |\ \ \| |
\ \ \ + \ \ \ \ \ + \ \ \ \ \ + \ \ +-----+
\ \ \ \ +-----------------+ \ \ \ \ \ \ \ +-----+ \ +-----+ \
\ \ \ \| | \ \ \ \ \ \ \| | \| |\ \
\ \ \ +-----------------+ \ \ \ \ \ \ +-----+ +-----+ \ \
\ \ +-----------------------------+ +-----+ +-----------------------+ +-----------+
\ \ \
\ \ \
\ +-----------------------------------------------------------------------------------------------------+
\| |
+-----------------------------------------------------------------------------------------------------+
Output:
#################
# #
# ##### # ##### #
# # # # # #
# # # # ##### # #
# # # # #
### # ####### # #
# # # # # #
# ### # ## # ##
# # ## #
#################
Input:
+-----------------+
|\ \
+ \ \
\ \ \
\ \ \
\ \ \
\ \ \
\ \ \
\ \ \
\ +-----------------+
\| |
+-----------------+
Output:
###
###
###
Input: (Note leading whitespace)
+-----+ +-----+
|\ \ |\ \
+ \ \ + \ \
+-----+-----+-----+-----+
|\ \ |\ \ |
+ \ \---+ \ \---+
\ +-----+-----+-----+-----+
\| |\ \ |\ \
+-----+ \ \---+ \ \
+-----+-----+-----+-----+
|\ \ |\ \ |
+ \ \---+ \ \---+
\ +-----+ \ +-----+
\| | \| |
+-----+ +-----+
Output:
# #
# #
# #
# #
Respostas:
Python 2 , 81 bytes
Experimente online!
Recebe a entrada como uma lista de seqüências de caracteres (ou uma lista de listas de caracteres). Imprime a saída, terminando com erro.
A ideia é semelhante à do tsh . Observamos os caracteres marcados
?
abaixo para ver quais são os espaços e quais são\
:Dentro de cada linha com
?
's, a\
marca uma crista vertical entre uma célula preenchida e uma célula vazia do labirinto. Como esses cumes estão na camada superior do labirinto, seus\
personagens nunca são obscurecidos por outro elemento do labirinto.Para examinar as
?
posições, o código percorre as linhask=1,4,7,...
(indexadas a zero) e, em cada linha, examina cada 6ª posição começando com a posiçãok
. Ele rastreia se estamos em uma célula vazia ou cheia no bitb
e vira esse bit sempre que um\
é encontrado. Após a leitura de cada caractere, ele anexa o caractere vazio () ou cheio (
#
) de acordo comb
e imprime a sequência resultante após a conclusão da linha.fonte
JavaScript (Node.js) , 85 bytes
Experimente online!
-
Obrigado @ Arnauld , salvou 7 bytes
fonte
Geléia ,
2220 bytesExperimente online!
Um link monádico que pega uma sequência Jelly como entrada e retorna o labirinto processado como uma sequência Jelly, incluindo uma linha de espaço em branco à direita.
Um byte
Ḋ
pode ser salvo se uma única linha de espaço em branco à esquerda for aceitável.Inspirou-se na fórmula do @ tsh , por isso não deixe de votar também!
Explicação
fonte
05AB1E ,
2522 bytes-1 byte graças a Kevin Cruijssen
Experimente online!
Porta da resposta Python do xnor . Recebe entrada como uma matriz de caracteres. O link TIO mostra a entrada como uma sequência de múltiplas linhas para facilitar a leitura, com o
|€S
cabeçalho convertendo isso para o formato da matriz de caracteres.fonte
ε'\¢„ #sè}
paraðм€g„ #sè
м
eK
.Retina 0.8.2 , 72 bytes
Experimente online! Explicação:
Desenrole todas as linhas.
Exclua as últimas três linhas, pois não preciso delas.
Mantenha apenas o meio de cada grupo de três linhas. (Na Retina 1, acredito que os dois estágios acima possam ser realizados em um único estágio:.
,G1,3,-5`
)Preencha as faces dos blocos.
Mantenha apenas o segundo caractere de cada bloco.
fonte
C (clang) ,
120117 bytesExperimente online!
Inspirado pelas outras respostas.
fonte