JS Crossword - une grille où l’indice = eval(answer)
(lyra.horse)- JS Crossword est un puzzle où l’indice correspond au résultat de l’exécution de la réponse avec
eval(); par exemple,7peut se résoudre avec3+4et[object Object]avec[]+{} - Le puzzle exploite des fonctionnalités JavaScript peu connues ou obscures, et est recommandé à celles et ceux qui sont déjà un minimum à l’aise avec JavaScript
- Les caractères autorisés sont limités à
A-Za-z0-9!"()*+-./<=>[]`{}; les espaces, virgules et points-virgules sont interdits, et la casse est prise en compte - Les réponses sont évaluées dans un sandbox
eval(); DevTools, MDN et la recherche sont autorisés, mais résoudre le puzzle avec une IA n’est pas recommandé - La progression est stockée en local ; une fois toute la grille terminée, on peut voir une fin et utiliser une fonction de replay, et aucune statistique n’est collectée
Règles du puzzle
- JS Crossword est un puzzle où l’indice correspond au résultat de l’exécution de la réponse avec
eval() - L’indice
7peut se résoudre avec3+4, et l’indice[object Object]avec[]+{} - Comme il utilise des fonctionnalités JavaScript peu connues ou un peu obscures, il est recommandé aux personnes ayant déjà une certaine familiarité avec JavaScript
- Les caractères utilisables sont limités à
A-Za-z0-9!"()*+-./<=>[]`{}, et les espaces, virgules et points-virgules ne peuvent pas être utilisés - La grille est sensible à la casse, et les réponses finales sont composées uniquement de mots anglais correspondant à
A-Za-z - Les réponses sont évaluées dans un sandbox
eval(), et il est possible de les tester directement dans le playground en bas de la page - Les ressources externes comme DevTools, MDN ou la recherche sont autorisées, mais résoudre le puzzle avec une IA n’est pas recommandé
- On peut changer le sens de saisie en cliquant sur une case ou en appuyant sur
ctrl, et la progression est stockée en local - Les couleurs distinguent les réponses potentiellement correctes, les caractères incorrects, les erreurs et les cases préremplies
Fin et partage
- La réponse finale s’affiche sous la forme
horses gonna answer - Une fois toute la grille résolue, une fin distincte apparaît, avec une mention indiquant qu’elle comporte de l’audio et des effets visuels marqués
- Après avoir terminé, il est possible d’actualiser le navigateur et d’exécuter
replayCapture()dans la console JavaScript pour voir le replay de la partie - Toutes les données de replay sont stockées uniquement en local, et il est précisé qu’aucune donnée ni statistique liée à la grille n’est collectée
- La musique de fin est revolea - its giving music
- La créatrice est Lyra Rebane, et le playtest a été réalisé avec la participation de Jorian Woltjer
- Liens pour partager un avis : fedi, bsky, twitter
1 commentaires
Commentaires sur Lobste.rs
Je vois des lignes épaisses et je me demande ce qu’elles signifient. Est-ce que ça sépare la chaîne ? Je n’avais encore jamais vu ça dans une grille de mots croisés
Édition : vu que les cases concernées sont mises en évidence, ça semble bien être ça. Maintenant ça paraît évident, mais au premier indice c’était assez déroutant
C’est un peu dommage que la solution ne soit pas unique. D’après la notation
tr:nth-child,td:nth-child, les cases isolées2,6,10,18,13,14,16,16,18,8sont trop peu contraintesIl y a aussi au moins une, et probablement plusieurs, approches multiples. Le 38 vertical semble avoir été pensé pour utiliser
this, mais quelqu’un d’autre qui a posté une capture de sa grille complétée a utilisé/h/s, et ça fonctionne aussiQuand je modifiais une case de croisement, il arrivait que l’une des réponses soit corrigée et l’autre cassée, donc la validation des réponses échouait parfois ou se comportait bizarrement. Il fallait ressaisir un caractère pour voir le vert
En rejouant après avoir rechargé la page, mon 38 vertical est reconnu comme résolu, mais pas lors de l’animation finale. Plus grave, le 9 vertical était le dernier non résolu, et j’avais rempli le 22 horizontal d’une manière incompatible avec lui ; quand j’ai changé la case croisée pour corriger le 9 vertical, le 22 horizontal a été cassé, mais ça a quand même affiché « whoaw!! » et considéré la grille comme terminée. Après rechargement, en rejouant, c’est bien reconnu comme non terminé
À plusieurs reprises, j’ai dû parcourir la bibliothèque standard JavaScript pour trouver des noms qui collent aux glob patterns. Je ne sais pas comment j’aurais fait si je n’avais pas eu de copie locale de MDN pour lancer quelque chose comme
find -name "??x?x.html"Le 29 vertical ressemble encore à de la triche. Cela dit, c’était vraiment amusant, et ça a bien occupé ma matinée 🙂
Le fait que la solution ne soit pas unique est intentionnel. Idem pour la possibilité de résoudre par plusieurs approches. C’est un défi dans un esprit hacker, donc si on peut imaginer une autre solution astucieuse, je pense que c’est bien de l’autoriser
Je me demande s’il existe un moyen de reproduire de façon fiable l’échec de validation sur les cases croisées
Bien vu pour le problème des réponses croisées. C’est probablement une drôle de condition de course en JavaScript asynchrone, mais ça devrait être assez facile à corriger
C’était vraiment excellent ! Ça m’a pris quelques heures, et j’ai dû faire plusieurs pauses pour y réfléchir, mais j’ai fini par le résoudre. J’adore ce genre d’expérience, et j’aime aussi beaucoup les mots croisés regex. Merci de l’avoir créé et partagé
Je n’en ai résolu qu’environ la moitié, mais j’ai appris plusieurs choses au passage. JavaScript a autant de vieux vestiges que de cas limites bizarres
Les indices longs étaient trop ouverts pour que je sache même par où commencer. J’ai bien aimé le 1 vertical et le 33 vertical
Quoi qu’il en soit, c’est une réalisation impressionnante
Mon Dieu, c’est beaucoup trop difficile :)
Les sites qui interceptent ou perturbent le bouton retour du navigateur devraient être marqués comme spam
iframe.srccomme une navigation