Guión
A menudo cocino lasaña, pero también tengo algunos errores. Como repito estas fallas tan a menudo, pensé que tal vez podría hacer un programa que verifique si hice todo bien.
Lasaña válida
Una lasaña válida es
- Al menos 5 columnas de ancho
- Al menos 4 capas de altura
- Excluyendo queso extra
- La capa superior es queso (representada por
,
) - La segunda capa es salsa (representada por
@
o#
) - Después de eso, las capas se alternan (salsa de 1 capa, fideos de 1 capa (representados por uno
~
o-
)) - Cada columna puede tener una o dos capas de queso
El programa
Debería
- tomar una cadena de lasaña como entrada
- cuerda multilínea
- conjunto de cadenas
- la cadena solo contiene los caracteres
,@#~-
- Rectangular
- Acolchado con espacios si es necesario
- Salida ya sea una lasaña válida
- Cualquier cosa que sea verdad en tu idioma si es válida
- Nada ni nada que sea falso en tu idioma
- ser tanto
- un programa completo
- Una función
- que solo utiliza la funcionalidad que se implementó antes del 14.12.2016
Casos de prueba
,, ,
,,,,,,
@@@###
~~~~~-
@##@@#
--> 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)
Criterios ganadores
los
- más corto
- en bytes
- código-golf
- funcional
la sumisión gana.
code-golf
ascii-art
decision-problem
Roman Gräf
fuente
fuente
,@#~-
con la excepción de espacios como relleno, pero el primer caso de prueba contiene espacios en el medio de una línea.Respuestas:
Retina ,
3834 bytesGracias a Grimy por guardar 4 bytes.
Toma una expresión regular con tu lasaña.
El recuento de bytes asume la codificación ISO 8859-1.
Asume que la entrada termina con un salto de línea final. Impresiones
1
(partido) para lasañas válidas y0
(no coincide) para las inválidas.Pruébalo en línea!
Explicación
Esta es solo una expresión regular .NET estándar combinada con la entrada, excepto que Retina proporciona el alias
¶
para avances de línea o\n
.Como se garantiza que la entrada será rectangular, solo necesitamos verificar el ancho de la lasaña en una de las filas.
fuente
¶[-~]*
lugar de(¶[-~]+|$)
guardar 4 bytes.Grime , 43 bytes
Pruébalo en línea! Imprime
1
por partido y0
sin partido.Explicación
Grime está diseñado para combinar patrones bidimensionales, que se construyen pieza por pieza a partir de patrones más pequeños. Primero defino la capa superior opcional, luego las otras capas repitiendo una franja vertical.
fuente