Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

: Concours de demo en 4kb de sources

Posté par Jylam / jylam.lnxsce (page perso, ). Modéré le 07 février 2003.
Le canal IRC #demoscene de freenode organise un concours de demo 4kb, mais qui a cette fois la particularité d'etre limité en taille au niveau des sources.
Pour avoir quelquechose d'equitable, il a été defini que le programme devait être écrit en C ou en C++, et utiliser SDL ou OpenGL (sans bibliothèques additionnelles). Les fichiers de données sont interdit, et le programme doit pouvoir compiler et tourner sous Linux, Windows, et MacOSX.

> Lire la dépêche (30 commentaires, moyenne: 4,2).  

Vous avez demandé le commentaire #171497.

Re: Concours de demo en 4kb de sources

Posté par Julien Olivier () le 07/02/2003 à 14:27. (lien). Évalué à 0.

Ma solution:

D'abord on écrit une démo de ~30ko.

Ensuite, on la compresse avec bz2 -> demo.bz2.

Ensuite on crée un main.c. Dedans, on copie le contenu de demo.bz2 dans une variable. Ensuite, on utilise zlib pour décompresser le contenu de la variable et on lance le programme obtenu.

C'est de la triche mais ça doit etre possible.

PS: si on ne peut pas utiliser zlib, réécrire l'algorithme de décompression des archive bz2, ça prend combien de ko ?

PPS: c'est pour déconner, j'imagine que ça ne doit pas ^etre possible tout ça...

  • [^]Re: Concours de demo en 4kb de sources

    Posté par Da Scritch (page perso, ) le 07/02/2003 à 14:51. (lien). Évalué à 1.

    Y'a écrit «Les fichiers de données sont interdit» . Mais bon, ça devrait peut être marcher. Et en utilisant aussi les espaces du source pour compresser, soyons fous !

    personnellement, j'y crois pas, mais celui qui y arrive aura droit à une noix (noack?) d'honneur!

    • [^]Re: Concours de demo en 4kb de sources

      Posté par Julien Olivier () le 07/02/2003 à 15:29. (lien). Évalué à 1.

      Ben en fait l'idée c'est justement de copier/coller le contenu du bz2 directement dans une variable. A la fin, on a plus qu'un seul fichier source contenant le code de décompression ET le contenu de l'archive à décompresser.

      Evidemment, comme le dit quelqu'un dans le commentaire just en-dessous, ce n'est pas classe de tricher. Surtout dans ce genre de concours où on ne devient pas milliardaire en gagnant.

      • [^]Re: Concours de demo en 4kb de sources

        Posté par Jylam / jylam.lnxsce (page perso, ) le 07/02/2003 à 15:31. (lien). Évalué à 2.

        et comme je l'ai dit, si le contenu de ton bz2 c'est un source C, faudra compiler -> pas bon, et si c'est un executable, c'est plus portable -> pas bon.
        Trouve autre chose :)

    [^]Re: Concours de demo en 4kb de sources

    Posté par ufoot (page perso, ) le 07/02/2003 à 14:54. (lien). Évalué à 5.

    Si je me rappelle bien, sur HP48, RFP était composé de 2 programmes: le décompresseur faisait à peu près 700 octets, et le compresseur environ 2K, mais comme le compresseur était lui-même compressé et utilisait de décompresseur avant de s'éxécuter vraiment on arrivait à un total d'à peine plus de 2K. Les fichiers textes se compressaient plutôt bien, et concrêtement, et il me semble que j'arrivais à produire des fichiers compressés représentant à peu près 40% de l'original. C'est certes moins bien qu'un vrai bon vieux bzip2 avec lequel on peut souvent descendre à 20%, mais c'est déjà pas mal. Sur un fichier de 8K par exemple, tu peux imaginer tomber à 3,3K et il te reste 0,7K pour loger le décompresseur.

    A part ça AMHA ce genre de technique n'est pas hyper fair play ni élégante. Contourner le règlement c'est toujours possible mais là n'est pas le but. D'un autre côté la plupart des démos vraiment petites utilisent de manière non modérée toute la panopile de compressions et d'astuces qui sont à leur disposition. Donc...

    Pour info, RFP est dispo ici: http://www.hpcalc.org/details.php?id=2369(...)
    Et le "code source" est dispo dans la mesure où c'est un programme en assembleur, donc du coup pas besoin de déssassembler pour remonter au source 8-) Sinon, l'assembleur HP48 c'est pas ce qu'on fait de plus lisible, ça a beau être du Motorola (ie beaucoup plus sympa qu'Intel) les registres de 64 bits découpés en quartets couplés à un mode d'adressage datant de l'époque de Néanderthal (traduire -> il faut charger à la mimine les registres d'adresse avec des adresses calculées/contenues au préalable dans les registres de calcul, qui ne sont évidemment pas les mêmes, ce serait trop simple) ça a tendance à rendre le code un poil compliqué.

    • [^]Re: Concours de demo en 4kb de sources

      Posté par Jylam / jylam.lnxsce (page perso, ) le 07/02/2003 à 15:09. (lien). Évalué à 1.

      A part ça AMHA ce genre de technique n'est pas hyper fair play ni élégante. Contourner le règlement c'est toujours possible mais là n'est pas le but. D'un autre côté la plupart des démos vraiment petites utilisent de manière non modérée toute la panopile de compressions et d'astuces qui sont à leur disposition. Donc...

      Je rapelle seulement que la c'est une compo qui a comme limitation la taille des SOURCES. donc les compressions, a part pour des eventuelles data contenues dans les sources, ca sert a rien.
      D'autre part, contourner les regles, c'est bien, si les regles sont assez carrées.
      Exemple : interdit d'utiliser des datas exterieures. Rien n'empeche de mettre les datas dans le source C. C'est une chose comme une autre, mais bon, c'est comme ca qu'on peut inclures qques images ...

    [^]Re: Concours de demo en 4kb de sources

    Posté par Jylam / jylam.lnxsce (page perso, ) le 07/02/2003 à 15:04. (lien). Évalué à 3.

    1/ zlib interdite (aucune librairie autorisée sauf SDL ou OGL)
    2/ le code de decompression de bzip2, je doute tres fortement qu'il tienne en 4k DE SOURCE.
    3/ Apres, MEME si tu y arrivais, tu te retrouverais avec ... les sources de ta demo en C. de la, rien a faire, faut compiler. et comme tu ne sais meme pas sur quelle plateforme tu te trouves et que tu n'as pas le droit d'utiliser de programme externe (car pas portable), ca sert a rien.
    4/ si tu pensait a compresser la demo deja compilée, pas possible, il faut que ca soit portable.


    en theorie, on a pensé a tout dans les regles. apres, y'a ptet une faille, mais va falloir la trouver :)

    • [^]Re: Concours de demo en 4kb de sources

      Posté par Julien Olivier () le 07/02/2003 à 15:31. (lien). Évalué à 0.

      hmm... je te proposerais bien d'inclure le code de gcc dans la démo mais je doute qu 4ko suffisent :)

      [^]Re: Concours de demo en 4kb de sources

      Posté par daggett () le 07/02/2003 à 22:42. (lien). Évalué à 2.

      en theorie, on a pensé a tout dans les regles. apres, y'a ptet une faille, mais va falloir la trouver :)
      J'avais pensé à faire un énorme tableau de data codé avec une chaine contenant uniquement des espaces et des tabulations (chacun représentant un bit, 0 ou 1), mais bon comme la taille du source avant comptage par perl est aussi limitée... beh tant pis :(

      A part ça:

      cat source.c | perl -pe 's/\s//g' | wc -c

      Excessive use of cat detected :)

    [^]Re: Concours de demo en 4kb de sources

    Posté par Beretta_Vexee () le 07/02/2003 à 20:18. (lien). Évalué à 2.

    Hum, on parle d'un limite de 4K au niveau du code source pas au niveau du binaire c'est ce qui change dans cette limitation.

    quand a l'utilisation de la Zlib ou autre elle est assez courante, et pas besoin de d'emmerder avec bz2 ou autre tu a l'excelent UPX qui fait le boulo bien mieux ( compression de l'ordre d'un rapport de 0.3-0.4 sur les executables decompresseur en moin de 300 octets et decompression plus rapide que l'eclaire ).
    C'est pas specialement de la triche dans les autres compos vue que presque tous le monde fait pareil, apres c'est a celui qui optimise le mieux son code pour la compression ou qui utilisera le plus de texture et des sample procedureaux.

    --
    Il relève de la responsabilité du lecteur de contrôler, par tous moyens, l'adéquation du message à ses besoins et de s'assurer qu'il ne causera pas de dommages aux personnes et aux biens.