IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[Ludique] Défis code en un tweet


Sujet :

JavaScript

  1. #341
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Barsy, même remarque que pour Watilin, avec ce test les valeurs zéro ne sont pas prises en compte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console.assert(npi("1 2 3 0 + + +") === 6);
    La meilleure solution fonctionnelle est donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(n=i=[];e=s.split(' ')[i++];)n.push(+e==e?e:(e+=n.pop(),r=eval(n.pop()+e)));return r
    87
    One Web to rule them all

  2. #342
    Nouveau membre du Club Avatar de regseb
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 16
    Points : 27
    Points
    27
    Par défaut
    J'ai réussi à enlever un caractère au code de Watilin pour arriver à 129 caractères. En déplaçant un pop dans les paramètres de l'autre pop, on peut enlèver une virgule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p=[];s.replace(/(\d+)|(\+)|(-)|(\*)|\//g,function(_,n,a,b,c){p.push(r=n?+n:(x=p.pop(y=p.pop()),a?x+y:b?x-y:c?x*y:x/y))});return r
    Quand une méthode ne prend pas de paramètres, on peut placer du code à la place des paramètres. Le code étant protégé par les parenthèses, il n'est pas nécessaire de mettre une virgule ou un point-virgule. On économise donc un caractère.

  3. #343
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Alors ça, c'est une belle astuce. Bien vu !
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  4. #344
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    J'arrive après la bataille, donc j'ai seulement re-golfé la soluce de Sylvain
    Je vois pas d'autres solutions

    -4, donc 83
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function npi(s,n,i,e){  
    for(n=i=[];e=s.split(' ')[i++];)n.push(+e==e?e:eval(n.pop(e+=n.pop())+e));return +n
    }
     
    console.assert(npi("1 2 + 4 * 3 +") === 15);
    console.assert(npi("99 27 - 4 /") === 18);
    console.assert(npi("23 7 4 - -") === 20);
    console.assert(npi("1 2 3 0 + + +") === 6);

  5. #345
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Du code comme faux arguments de fonctions. Tellement crade et tellement génial à la fois
    One Web to rule them all

  6. #346
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    deux caractères de moins en reduisant le nom de fonction ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function C(s,n,i,e){  
    for(n=i=[];e=s.split(' ')[i++];)n.push(+e==e?e:eval(n.pop(e+=n.pop())+e));return +n
    }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #347
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    @regseb : bien joué, qui va faire du rétro-actif sur ce qui a été posté ?

    @SpaceFrog : si tu comptes tout, tu es à 104 non

  8. #348
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Au fait, j'ai parlé de nous à la dernière @chtijs (j'ai fait un préz sur le JS Golf).
    J'espère que ça va attirer des curieux

  9. #349
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Hé, mais je suis chti aussi moi S'il y a un prochain meet-up à Lille, j'y participerai volontiers.
    One Web to rule them all

  10. #350
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    @SpaceFrog : si tu comptes tout, tu es à 104 non
    Ben c'est toujours moins que 106 ( de Starsbourg ) ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #351
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    106 ( de Starsbourg ) ...
    Cours. Cours si tu veux vivre.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  12. #352
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Sylvain, prochain meetup jeudi soir au Mutualab à Lille. C'est pas vraiment une ChtiJS cette fois, c'est un meetup WelshDesign (ça ne se limite plus à JS, mais ça ouvre la porte à CSS, HTML et donc au responsive etc).
    Plus d'info.

    Sinon pour rester dans le sujet. Vous n'êtes sûrement pas passé à côté de 2048. Décliné sur pas mal de forme depuis que c'est sorti.

    Voici la version min jouable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body id=P onload="function M(c,d){for(i=H=16;i--;)for(p=B[m=V(j=i%4+1)],G|=p>>11;--j?(q=B[n=V(j)])?!p|p==q&&(h=c?0:B[p?S+=B[m]*=2:B[i++,m]=q,n]=d):1:0;L=localStorage)R=Math.random}function V(x){if(x)return(D>1?4-x:x-1)<<D%2*2|i-i%4>>D%2*2;for(i=H|R(D=4)*H;B[--i%H];);for(B[i%H]=h=2<<R()+.1;D--;)M(1);G|=h}(onkeyup=function(e){D=e?e.keyCode-37:B=[];D>>2|G||M()|V(e?h:V());t=(G?S+' / '+(L.S>S?L.S:L.S=S):S)+'<pre>';for(i=h=H;i--;P.innerHTML=t)t+=('    '+[B[i]]).slice(-4)+(i%4?'|':'|\n')})(S=G=0)">
    Ça ne tient pas dans 140 mais dans 400 et des brouettes c'est du high level cette fois. Voici le gist où ça en parle.

  13. #353
    Expert confirmé Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Points : 5 277
    Points
    5 277
    Par défaut
    Excellent le 2048 en javascript !! C'est du haut niveau.

    Maintenant, il faut développer en moins de 140 caractère l'IA qui résout le jeu.
    "tatatatatatatatataaa !! tata taaa !! tata taaa !! tatatata tataaa !! tata taaa !! tata taaa !!"

  14. #354
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Merci Cyril, je viendrais avec plaisir. Petite déception, j'ai cru qu'il y aurait du welsh au menu

    Pour l'IA du 2048, je ne m'y risquerai pas. Je n'ai toujours pas compris comment gagner à coup sûr à ce jeu
    One Web to rule them all

  15. #355
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Cool ! Et non, pas de welsh au menu mais rien ne t'empêche d'en amener un

    Pour 2048, j'ai pourtant testé pas mal de pattern différent mais je coince toujours à un moment. Je pense que le hasard joue pas mal à haut lvl.
    Ma petite soeur a même fait un meilleur score que le mien

  16. #356
    Membre actif

    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 183
    Points : 274
    Points
    274
    Par défaut
    Le plus fort que j'ai vu en JS c'est le TinyChess de js1k : http://js1k.com/2010-first/demo/435

  17. #357
    Expert confirmé Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Points : 5 277
    Points
    5 277
    Par défaut
    Citation Envoyé par Kaamo Voir le message
    Cool ! Et non, pas de welsh au menu mais rien ne t'empêche d'en amener un

    Pour 2048, j'ai pourtant testé pas mal de pattern différent mais je coince toujours à un moment. Je pense que le hasard joue pas mal à haut lvl.
    Ma petite soeur a même fait un meilleur score que le mien
    Du tout, il existe déjà des IA qui y arrivent à tous les coups. Il n'y a pas de chance en fait. Je me demande même s'il n'est pas possible de faire un 4096.

    Pour ma part, j'ai trouvé une technique qui me permet de faire un 2048 environ une fois sur 2. Elle consiste à coincer le chiffre le plus fort que l'on possède dans un coin en jouant au maximum sur 2 mouvements et en s'autorisant un 3ème mouvement avec parcimonie.

    Plus précisément : Je m'impose comme mouvements autorisées que haut vers bas et gauche vers droite ce qui coince le chiffre le plus fort dans le coin en bas à droite. Et je ne fais des mouvements droite vers gauche que si la ligne du bas est complètement remplie (c'est à dire que le chiffre le plus fort ne pourra pas sortir de son coin). Et il est absolument interdit de faire un mouvement bas vers haut. Au final, les nombres les plus forts seront sur la ligne du bas et, normalement, iront en croissants vers la droite et ceux qui sont au dessus sont ceux avec lesquels on joue pour compléter la ligne du bas.

    Voilà, maintenant il ne me reste plus qu'à coder tout ça en Javascript
    "tatatatatatatatataaa !! tata taaa !! tata taaa !! tatatata tataaa !! tata taaa !! tata taaa !!"

  18. #358
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Citation Envoyé par Barsy Voir le message
    Du tout, il existe déjà des IA qui y arrivent à tous les coups. Il n'y a pas de chance en fait. Je me demande même s'il n'est pas possible de faire un 4096.
    Si il y a un facteur chance, le placement des nouveaux chiffres se fait au hasard à chaque tour. Et je confirme qu'on peut aller au delà de 2048, j'ai des potes qui se disputent pour être les premiers à atteindre 8192.
    One Web to rule them all

  19. #359
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    wow, t'as plus creusé l'idée que moi

  20. #360
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    UP

    Je viens de tomber sur cet article : http://davidwalsh.name/javascript-debounce-function ; qui propose la fonction debounce (équivalente à celle d'underscore.js) en 160 bytes. 160 c'est bien, mais sous les 140 c'est mieux ! Qui se sent d'attaque ?
    One Web to rule them all

Discussions similaires

  1. Défi : Toutes les semaines un peu de code pour aller plus loin avec Windows 7
    Par Jérôme Lambert dans le forum Développement Windows
    Réponses: 41
    Dernier message: 05/01/2012, 12h00
  2. [Ludique] Mini-jeu : épisode 3 (déchiffrage de code, niveau : facile)
    Par RomainVALERI dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 03/11/2010, 00h45
  3. [Ludique] Mini-jeu - niveau 2 : déchiffrage de code (niveau modéré)
    Par RomainVALERI dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 28/07/2010, 23h15
  4. [Ludique] Mini-jeu : déchiffrage de code (niveau facile)
    Par RomainVALERI dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/07/2010, 18h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo