1 points par GN⁺ 6 시간 전 | 1 commentaires | Partager sur WhatsApp
  • JS Crossword est un puzzle où l’indice correspond au résultat de l’exécution de la réponse avec eval() ; par exemple, 7 peut se résoudre avec 3+4 et [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 7 peut se résoudre avec 3+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

 
GN⁺ 6 시간 전
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

    • Oui, c’est une ligne de séparation pour la réponse. C’est assez standard dans les mots croisés, et au moins dans mon pays c’est courant dans les grilles qu’on crée
  • 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ées 2,6, 10,18, 13,14, 16,16, 18,8 sont trop peu contraintes
    Il 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 aussi
    Quand 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 🙂

    • Merci d’y avoir joué ^^!
      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

    • Édition : c’est corrigé. J’ai appris que certains navigateurs considèrent l’affectation de iframe.src comme une navigation