Cenário
Costumo cozinhar lasanha, mas também tenho alguns erros. Como repito essas falhas com tanta frequência, pensei que talvez pudesse fazer um programa que verifica se fiz tudo certo.
Lasanha válida
Uma lasanha válida é
- Pelo menos 5 colunas de largura
- Pelo menos 4 camadas de altura
- Excluindo queijo extra
- A camada superior é queijo (representada por
,
) - A segunda camada é molho (representado por um
@
ou#
) - Depois disso, as camadas se alternam (molho de 1 camada, macarrão de 1 camada (representado por um
~
ou-
)) - Cada coluna pode ter uma ou duas camadas de queijo
O programa
Devemos
- pegue uma corda de lasanha como entrada
- sequência multilinha
- matriz de string
- a cadeia contém apenas os caracteres
,@#~-
- Retangular
- Acolchoado com espaços, se necessário
- Saída, seja uma lasanha válida
- Qualquer coisa válida no seu idioma, se válida
- Nada ou nada que seja falso no seu idioma
- seja
- um programa completo
- uma função
- que usa apenas a funcionalidade implementada antes de 14.12.2016
Casos de teste
,, ,
,,,,,,
@@@###
~~~~~-
@##@@#
--> truthy
@@@#
----
@@##
----
@###
--> falsy (cause of cheese and width (You don't have to print the stuff in the brackets))
,,,,,
-----
@####
-----
@@@@@
--> falsy (have the sauce as last layer)
Critérios de vitória
o
- mais curto
- em bytes
- código-golfe
- funcional
submissão ganha.
code-golf
ascii-art
decision-problem
Roman Gräf
fonte
fonte
,@#~-
com exceção de espaços como preenchimento, mas o primeiro caso de teste contém espaços no meio de uma linha.Respostas:
Retina ,
3834 bytesAgradecimentos ao Grimy por salvar 4 bytes.
Tenha um regex com sua lasanha.
A contagem de bytes assume a codificação ISO 8859-1.
Supõe que a entrada termine com um avanço de linha à direita. Imprime
1
(corresponde) a lasanhas válidas e0
(sem correspondência) a inválidas.Experimente online!
Explicação
Este é apenas um regex .NET padrão correspondente à entrada, exceto que o Retina fornece o alias
¶
para feeds de linha ou\n
.Como a entrada é garantida como retangular, precisamos verificar apenas a largura da lasanha em uma das linhas.
fonte
¶[-~]*
vez de(¶[-~]+|$)
salvar 4 bytes.Grime , 43 bytes
Experimente online! Imprime
1
para correspondência e0
sem correspondência.Explicação
O Grime foi projetado para combinar padrões bidimensionais, que são construídos peça por peça a partir de padrões menores. Defino primeiro a camada superior opcional, depois as outras camadas, repetindo uma faixa vertical.
fonte