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
1por partido y0sin 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