Scénario
Je cuisine souvent des lasagnes, mais j'ai aussi quelques erreurs. Comme je répète ces défauts si souvent, j'ai pensé que je pourrais peut-être faire un programme qui vérifie si j'ai tout fait correctement.
Lasagne valable
Une lasagne valide est
- Au moins 5 colonnes de large
- Au moins 4 couches de haut
- À l'exclusion du fromage supplémentaire
- La couche supérieure est le fromage (représenté par
,
) - La deuxième couche est la sauce (représentée par ou
@
ou#
) - Après cela, les couches alternent (1 couche de sauce, 1 couche de nouilles (représentées par l'un
~
ou l' autre-
)) - Chaque colonne peut avoir une ou deux couches de fromage
Le programme
Devrait
- prendre une chaîne de lasagnes en entrée
- chaîne multiligne
- tableau de chaînes
- la chaîne ne contient que les caractères
,@#~-
- Rectangulaire
- Rembourré avec des espaces si nécessaire
- Sortie, que ce soit une lasagne valide
- Tout ce qui est authentique dans votre langue s'il est valide
- Rien ou quoi que ce soit qui soit faux dans votre langue
- être soit
- un programme complet
- une fonction
- qui utilise uniquement des fonctionnalités qui ont été implémentées avant le 14.12.2016
Cas de test
,, ,
,,,,,,
@@@###
~~~~~-
@##@@#
--> 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ères gagnants
le
- le plus court
- en octets
- code-golf
- fonctionnel
la soumission gagne.
code-golf
ascii-art
decision-problem
Roman Gräf
la source
la source
,@#~-
l'exception des espaces comme remplissage, mais le premier cas de test contient des espaces au milieu d'une ligne.Réponses:
Rétine ,
3834 octetsMerci à Grimy d'avoir économisé 4 octets.
Ayez une expression régulière avec vos lasagnes.
Le nombre d'octets suppose un codage ISO 8859-1.
Suppose que l'entrée se termine par un saut de ligne de fin. Imprime
1
(correspondance) pour les lasagnes valides et0
(aucune correspondance) pour les lasagnes invalides.Essayez-le en ligne!
Explication
Il s'agit simplement d'une expression régulière .NET standard comparée à l'entrée, sauf que Retina fournit l'alias
¶
pour les sauts de ligne ou\n
.L'entrée étant garantie rectangulaire, il suffit de vérifier la largeur des lasagnes sur l'une des rangées.
la source
¶[-~]*
place de(¶[-~]+|$)
, en économisant 4 octets.Grime , 43 octets
Essayez-le en ligne! Imprime
1
pour correspondance et0
pour aucune correspondance.Explication
La crasse est conçue pour faire correspondre des motifs bidimensionnels, qui sont construits pièce par pièce à partir de motifs plus petits. Je définis d'abord la couche supérieure facultative, puis les autres couches en répétant une bande verticale.
la source