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
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
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
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