1 points par GN⁺ 2025-01-13 | 1 commentaires | Partager sur WhatsApp

Lire Bad Apple dans Vim

  • Qu’est-ce que Bad Apple ?

    • Bad Apple est un clip musical visuellement marquant, souvent intégré un peu partout et utilisé comme mème.
    • C’est perçu comme un mème du même genre que faire tourner DOOM sur un réfrigérateur intelligent.
  • Récupération des frames

    • Pour obtenir les données de chaque frame de Bad Apple, l’auteur a cloné le dépôt de Felixoofed puis l’a converti en environ 6 500 PNG.
    • Du code Python a été utilisé pour convertir chaque PNG en un tableau 2D composé de 0 et de 1.
  • Dessiner dans Vim

    • Il est possible de dessiner dans Vim en insérant une image dans une grille de texte.
    • La fonction de surlignage de Vim permet d’appliquer la même couleur aux caractères correspondants.
    • Une police carrée est utilisée pour obtenir des pixels carrés.
  • Dessiner des rectangles arbitraires

    • La fonction de recherche de Vim est exploitée pour générer des motifs correspondant à une ligne et une colonne précises.
    • Plusieurs motifs peuvent être combinés avec un opérateur OR afin de dessiner plusieurs rectangles en une seule fois.
  • Convertir une frame en rectangles

    • Une grille de 90x120 est décomposée en rectangles pour générer la chaîne de recherche.
    • Différents algorithmes sont utilisés pour sélectionner le motif de recherche optimal.
  • Exécution dans Vim

    • Une macro Vim est utilisée pour lire la vidéo.
    • La macro définit le motif de recherche, passe à la ligne suivante, puis peut être répétée.
  • Conclusion

    • Ce projet a été terminé en une journée, et avec plus de temps, quelques améliorations pourraient être envisagées.
    • Le projet a été présenté durant la première semaine au Recurse Center et a reçu un accueil positif.
    • Le code est complexe, mais si cela vous intéresse, vous pouvez le consulter sur GitHub.

1 commentaires

 
GN⁺ 2025-01-13
Commentaires Hacker News
  • Réaction humoristique au fait de faire confiance à l’amélioration de performances par 1 000 de Nolen. L’auteur avait déjà utilisé des tactiques similaires par le passé, mais pas toutes en une seule journée

    • Bad Matrix : comment afficher des blocs dans le terminal
    • Animating Text Art in Javascript : comment afficher du texte sur une grille fixe pour produire un effet d’animation
    • oxo : comment afficher un plateau de morpion dans le terminal et utiliser des expressions régulières pour vérifier le résultat
    • Bad Apple est le plus impressionnant
  • Impressionné par la démo technique de Bad Apple tournant sur NES. Partage un lien montrant Bad Apple en cours d’exécution sur Everdrive

    • Avec l’audio, la taille des données est d’environ 1 Go. Cela tourne sur un système où un jeu typique ne fait que quelques centaines de Ko
  • Explication de la manière de rendre une macro Vim « lisible » en la faisant avancer à la ligne suivante. Fournit une commande pour exécuter la macro ligne par ligne

  • Informations sur les rideaux lumineux Govee vendus le mois dernier. Il est possible d’y téléverser des GIF animés, et l’auteur prévoit de créer un GIF « bad apple »

  • Avis sur le problème de minimisation de rectangles. Explication d’un projet Vim dans lequel le chevauchement est autorisé, contrairement au problème discuté sur StackOverflow

  • Avis selon lequel un générateur parallèle de solutions candidates est une bonne idée. Il a fallu du temps pour réaliser qu’il n’était pas nécessaire de créer l’algorithme optimal

  • Partage d’une expérience consistant à regarder la Coupe du monde 2006 depuis le terminal au travail en se connectant par SSH à un serveur à la maison. La bande passante était insuffisante, donc les autres méthodes étaient impossibles

  • Réaction positive à cette idée créative. Les jeux qui ont servi de base sont également bons, et les jeux de type bullet hell sont hypnotiques

  • Question sur le temps approximatif qu’a demandé ce travail

  • Comme l’auteur le reconnaît, c’est bien Vim, mais il ne s’agit pas d’expressions régulières : c’est de la « recherche par coordonnées d’écran ». On dessine dans Vim, mais ce n’est pas du pattern matching