Des étoiles plein les yeux !
Dernièrement, à l’issue d’une cérémonie de trolling durant laquelle j’ai lancé la démo DSC#4, j’ai terminé mon incantation par un « We miss Overflow! » afin d’invoquer une légende oubliée.
Pouf ! Quelle joie de voir apparaitre dans mon salon celui qui a souvent porté haut les couleurs du groupe Logon System:
En guise d’apéritif, et pour voir ce qu’il restait de ses neurones légendaires, nous avons croisé le fer sur le sympathique défi de noël de Logiker, qui consiste à afficher un motif choisi constitué de plusieurs caractères « étoile » avec un code occupant le moins d’octets possibles. En 2023, il s'agissait de losanges:
Le défi est ouvert à toutes les machines (de la plus ancienne à la plus récente).
Évidemment, certaines plateformes sont plus avantagées que d’autres pour l’exercice, mais l’objectif, c’est surtout de participer !
...
La vache ! Il est loin d’avoir perdu la main en Z80A, l’animal de légende ! J’ai souffert pour atteindre son score mais je ne pouvais pas le laisser me piétiner ainsi avec son score insolent !
L’exercice est intéressant dans la mesure où on peut trouver de très nombreuses solutions pour résoudre un problème donné. Certaines solutions peuvent se terminer en impasse dès qu’il semble impossible d’optimiser davantage le code, et il faut alors remettre le sujet sur la table plusieurs fois et avoir des approches variées, voire farfelues.
Une des difficultés de l'exercice pour moi a été de basculer du raisonnement en mode "CPU-only" (en terme de vitesse d'exécution) au mode "SIZE-only" (en terme de place). Lorsqu'il n'y a pas de compromis à faire sur la vitesse, on peut sans vergogne utiliser des instructions gourmandes en CPU mais courtes en taille, et même afficher 256 fois le même caractère si ça permet de simplifier un test.
Je pensais, avant que nous échangions nos solutions, que nous étions arrivés au même code. Or nos solutions étaient finalement assez différentes. De quoi rappeler qu'il faut rester humble devant un CALL #BB5A.
Chacun y était cependant allé de ses petits trucs barbares et qui ne respectent pas la convention de Genève. Je publie ci-dessous les 2 solutions (bon, je ne comprends déjà plus ce que j’ai écrit).
A partir de là, nous avons travaillé ensemble pour tirer le meilleur parti des 2 solutions afin de fièrement gratter 1 misérable octet.
Finalement, le meilleur score sur CPC a été atteint par... Nesu, qui est parvenu à 27 octets.
Grands bravos à lui! (note : faire ce billet en anglais !)
En étudiant le code du vainqueur sur CPC, nous avons remarqué qu’il est admis dans les règles de pouvoir lancer la démo via un « load » suivi d’un « call ».
C’est bon à savoir pour ceux qui essaieront l’exercice pour noël 2024. Cette petite précision permet de descendre notre solution commune à 25 octets :
Il y a donc de l'espoir que le CPC puisse approcher le podium face à ce maudit ZX SPECTRUM (Bravo à Art Top !!).
Même si....l'important, c'est bien sûr de participer.
Longshot / Logon System