Ceci est un 3x3
puzzle ASCII:
_____ _____ _____
| _| |_ |
| (_ _ _) |
|_ _|_( )_|_ _|
| (_) |_ _| (_) |
| _ _) (_ _ |
|_( )_|_ _|_( )_|
| _| (_) |_ |
| (_ _) |
|_____|_____|_____|
C'est aussi un 3x3
puzzle ASCII:
_____ _____ _____
| |_ _| |
| _ _) (_ _ |
|_( )_|_ _|_( )_|
| _| (_) |_ |
| (_ _ _) |
|_ _|_( )_|_ _|
| (_) |_ _| (_) |
| _) (_ |
|_____|_____|_____|
Chaque ligne d'un puzzle ASCII (à l'exclusion des cas de bord c'est-à-dire les pièces littéralement sur les bords) se compose du motif suivant:
_ _ _
_( )_ _ _ _( )_ _ _ _( )_
|_ _| (_) |_ _| (_) |_ _|
_) (_ _ _) (_ _ _) (_
|_ _|_( )_|_ _|_( )_|_ _| ...
(_) (_) (_)
Étant donné 2 entiers H
et W
où H
est la hauteur (montant vertical) et W
est la largeur (montant horizontal) et H
et W
sont >1
sortis un HxW
puzzle possible ASCII.
Exemples
Cas de test 1
Contribution: 2, 4
Sortie:
_____ _____ _____ _____
| |_ _| |_ |
| _ _) (_ _ _) |
|_( )_|_ _|_( )_|_ _|
| _| (_) |_ _| (_) |
| (_ _) (_ |
|_____|_____|_____|_____|
Cas de test 2
Contribution: 4, 4
Sortie:
_____ _____ _____ _____
| |_ _| |_ |
| _ _) (_ _ _) |
|_( )_|_ _|_( )_|_ _|
| _| (_) |_ _| (_) |
| (_ _ _) (_ _ |
|_ _|_( )_|_ _|_( )_|
| (_) |_ _| (_) |_ |
| _ _) (_ _ _) |
|_( )_|_ _|_( )_|_ _|
| _| (_) |_ _| (_) |
| (_ _) (_ |
|_____|_____|_____|_____|
Cas de test 3
Contribution: 3, 5
Sortie:
_____ _____ _____ _____ _____
| |_ _| |_ _| |
| _ _) (_ _ _) (_ _ |
|_( )_|_ _|_( )_|_ _|_( )_|
| _| (_) |_ _| (_) |_ |
| (_ _ _) (_ _ _) |
|_ _|_( )_|_ _|_( )_|_ _|
| (_) |_ _| (_) |_ _| (_) |
| _) (_ _) (_ |
|_____|_____|_____|_____|_____|
Cas de test 4
Contribution: 2, 2
Sortie:
_____ _____
| _| |
| (_ _ |
|_ _|_( )_|
| (_) |_ |
| _) |
|_____|_____|
Clarifications
- La hauteur et la largeur de chaque pièce du puzzle ne doivent pas être augmentées ou réduites.
- Avec
H
etW
étant supérieur à un, les plus petites dimensions possibles sont2x2
(voir IO 4). - Vous pouvez avoir un programme complet ou une fonction.
- L'entrée sera de 2 lignes avec
H
au 1er etW
au 2ème si vous utilisez une fonction vous pouvez les avoir dans les paramètres. - Sortie vers stdout (ou quelque chose de similaire).
- C'est le code-golf, donc la réponse la plus courte en octets gagne.
Réponses:
JavaScript (ES6) 272
277 271Modifier la correction de bogue
Modifier 2 enregistrés 6 octets thx @ L.Serné
Modifier à nouveau 3 correction de bogue
Moins golfé
Tester
la source
for(t=z(' _____',0,0)+z('|_ _| ',2,--h)+z(b=' _) (_ _ ')+z(c='|_ _|_( )_',0);--h;a='|_ _| (_) ')
:. Cela enregistre 4 virgules, donc vous vous retrouvez avec seulement 273 caractères EDIT: L'extrait de test est toujours buggé ...t=...
à l'intérieur du for, il échoue pour h == 2. C'est exactement le bug que j'ai corrigé aujourd'hui.undefined
s'est avérée être déclaréea
dans la dernière partie de lafor
boucle. J'ai changé un peu le code et je me suis retrouvé avec ça. Vous devriez pouvoir l'intégrer à l'eval pour une autre sauvegarde 2B.(w,h,z=(s,q=3,i=h)=>'| '.slice(0,q)+s.repeat(w).substr(i%2*6+q,w*6-2*q+1)+' |\n'.slice(~q),a='|_ _| (_) ')=>{for(t=z(' _____',0,0)+z('|_ _| ',2,--h)+z(b=' _) (_ _ ')+z(c='|_ _|_( )_',0);--h;)t+=z(a,2)+z(b)+z(c,0);return t+z(a,2)+z(' _) (_ ')+z('|_____',1)}
(276 B).Python, 513 octets
Peut-être plus un exercice d'obscurcissement que de golf, celui-ci fonctionne en décidant à quel caractère chaque
(x,y)
coordonnée va plutôt que de construire chaque motif par chaîne. Ungolfed il ressembleLes motifs eux-mêmes ressemblent
nous pouvons voir cela comme une table de recherche à partir d'entiers avec des colonnes prises mod 6 et des lignes mod 3
Cette stratégie de combinaison de différents modèles n'a pas vraiment fonctionné pour moi ici car les exprimer est assez lourd (bien que je pense que j'aurais pu jouer plus) et parce que les cas de bord prennent tellement de caractères à corriger. Je mets ça de côté, car cela m'a pris une minute et ça pourrait être intéressant.
la source
Mathematica, 384 octets
Fonction sans nom prenant comme argument une paire ordonnée d'entiers et renvoyant une chaîne contenant des sauts de ligne appropriés. Avec des espaces et des nouvelles lignes ajoutés:
la source
Lot,
562528 octetsProuvé résistant au golf, car la répétition a tendance à coûter trop d'octets à éliminer, par exemple, je passe manuellement le numéro de ligne mod 3 car il est trop cher à calculer. Edit: De plus, j'avais par inadvertance joué au golf supplémentaire
|
toutes les trois lignes, ce qui est incorrect. La résolution de ce problème m'a en fait économisé 2 octets (4 octets sur ma version d'origine). Explication:a
contient divers morceaux de puzzle. La:t
fonction les échange sur chaque ensemble de trois lignes, puis extrait les sous-chaînes requises que la:c
fonction répète ensuite par paires, mais en supprimant la première colonne si ellew
est impaire. Les cas des bords gauche et droit sont ensuite traités avant la sortie de la ligne.L'autre cas de bord est la toute première ligne dans laquelle les!
s sont remplacés par des espaces au lieu de|
s (le code évite|
s car ils sont difficiles à gérer dans Batch).la source
Befunge,
263243 octetsEssayez-le en ligne!
La façon dont cela fonctionne est en itérant sur les coordonnées x, y de la zone que nous voulons sortir et en mappant ces valeurs x , y aux coordonnées u , v dans le modèle de puzzle (stocké sur les trois premières lignes du champ de jeu). Ce mappage est réalisé avec les formules de base suivantes:
La coordonnée u se répète toutes les 12 colonnes, mais doit également être décalée de 6 toutes les 3 lignes. La coordonnée v se répète toutes les 3 lignes, mais nous ajoutons
y==0
à la valeur afin que la toute première ligne puisse être rendue comme un cas spécial. Cependant, pour gérer les bords, nous devons introduire une valeur booléenne supplémentaire, e , qui est vraie pour différents emplacements de bord, et qui ajuste les formules comme suit:Ainsi, si nous sommes sur une arête, nous ajoutons 4 à la coordonnée v de manière à utiliser le motif de bord plus simple sur les lignes 5 à 7. Et nous devons aussi maintenant modifier la coordonnée u par 6 plutôt que 12, car ce motif de bord répète toutes les 6 colonnes.
Quant à la valeur e elle-même, cela nécessite une formule assez complexe, car les emplacements des bords englobent une zone quelque peu irrégulière de la bordure du puzzle.
Sans entrer dans trop de détails, la ventilation de base est que elr correspond aux emplacements des bords le long des bordures gauche et droite, tandis que etb correspond aux emplacements le long des bordures supérieure et inférieure.
la source
JavaScript (ES6), 285 octets
Ceci est un portage de ma réponse Batch, juste pour voir s'il est en concurrence avec la réponse de @ edc65. La longue chaîne ennuyeuse contient des pièces de puzzle. Les six premières pièces représentent deux rangées d'une colonne de l'intérieur de la scie sauteuse. La septième pièce est utilisée pour l'avant-dernière ligne de la scie sauteuse, à la place de la quatrième pièce. La huitième pièce est utilisée sur la deuxième ligne de la scie sauteuse, à la place de la cinquième pièce, et fait également office de bord gauche de la scie sauteuse. La neuvième pièce est la dernière ligne de la scie sauteuse.
la source