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. #61
    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
    J'ai une solution dans les cartons. Je la minifie et je la posterai plus tard pour comparer vos résultats. Pas sûr que ça tienne en moins de 140 par contre

  2. #62
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 651
    Points : 11 145
    Points
    11 145
    Par défaut
    un petit essai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var print = function(msg){ console.log(msg); };
     
    (function(d,p){
    setInterval(function(){u=new Date(d.getTime()-new Date().getTime());p(u.getDate()-1+"j"+u.getHours()+":"+u.getMinutes()+":"+u.getSeconds())},1000)
    })(new Date(2013,6,20),print);
    147 caractères

  3. #63
    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 : 41
    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 279
    Points
    5 279
    Par défaut
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (function f(d,p){
    t=d-new Date;a=~~(t/=1000)%60+"s ";a+=~~(t/=60)%60+"m ";a+=~~(t/=60)%24+"h ";a+=~~(t/=24)+"j ";setTimeout(function(){p(a);f(d,p)}, 1000);
    })(new Date(2013,6,20),print);

    138 caractères

    Mais j'ai du pour ça tricher 2 fois...

    EDIT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (function(d,p){
    setInterval(function(){t=d-new Date;a=~~(t/=1000)%60+"s ";a+=~~(t/=60)%60+"m ";a+=~~(t/=60)%24+"h ";a+=~~(t/=24)+"j ";p(a)}, 1000)
    })(new Date(2013,6,20),print);
    130 caractères et en supprimant une des triches (Merci pour la fonction SetInterval, je n'y avais pas pensé)

    EDIT 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (function(d,p){
    setInterval(function(){t=d-new Date;a=~~(t/=1000)%60+"s ";a=~~(t/=60)%60+"m "+a;a=~~(t/=60)%24+"h "+a;a=~~(t/=24)+"j "+a;p(a)},9)
    })(new Date(2013,6,20),print);
    129 caractères sans la triche (la triche c'est que l'ordre d'affichage des éléments était inversé par rapport à l'énoncé).
    J'ai réduit l’intervalle à 9ms pour économiser 3 caractères.

  4. #64
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 128
    Points : 210
    Points
    210
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var print = function(msg){ console.log(msg); };
    (function(d,p){
    x=d;setInterval("for(t=x-new Date,u=[864e5,'j ',36e5,'h ',6e4,'m ',1e3,'s'],i=-2;(i+=2)<7;)t-=u[i]*(u[i]=~~(t/u[i]));print(u.join(''))",1e3)
    })(new Date(2013,6,20),print);
    140 caractères pile poil

  5. #65
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 128
    Points : 210
    Points
    210
    Par défaut
    Citation Envoyé par Barsy Voir le message
    J'ai réduit l’intervalle à 1ms pour économiser 3 caractères.
    Pas cool ça fait planter ma console.

  6. #66
    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 : 41
    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 279
    Points
    5 279
    Par défaut
    Oui, c'est court 1ms. je l'ai mis à 9 pour que ça plante moins.

    EDIT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (function(d,p){
    x=d;q=p;setInterval("t=x-new Date;a=~~(t/=1e3)%60+'s ';a=~~(t/=60)%60+'m '+a;a=~~(t/=60)%24+'h '+a;a=~~(t/=24)+'j '+a;q(a)",9)
    })(new Date(2013,6,20),print);
    En me servant des améliorations de TheGwy, je tombe à 126 caractères.

  7. #67
    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
    Barbare le rafraîchissement toutes les 9ms

    Voici un code en 109 caractères (merci TheGwy, je n'avais pas pensé à passer en format chaine), mais il ne fonctionne que sur IE10 et Chrome :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (function(d,p){
    x=d,y=p,setInterval("t=(x-new Date)/6e4;y(~~(t/1440)+'j '+~~(t/60)%24+'h '+~~t%60+'m '+~~(t*60)%60+'s')",1e3)
    })(new Date(2013,6,20),function(msg){console.log(msg);});
    C'est bizarre qu'il faille déclarer d et p sous d'autres noms de variables, ça ne passe pas sinon
    Du coup, je ne suis pas sûr que ton code fonctione TheGwy, si ?

    Mais comme il ne fonctionne pas sur Firefox. Voici donc le code compatible en 111 caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (function(d,p){
    setInterval(function(){t=(d-new Date)/6e4;p(~~(t/1440)+'j '+~~(t/60)%24+'h '+~~t%60+'m '+~~(t*60)%60+'s')},1e3)
    })(new Date(2013,6,20),function(msg){console.log(msg);});
    Bien sûr quand la date est passée, ça affiche du négatif

  8. #68
    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 : 41
    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 279
    Points
    5 279
    Par défaut
    Bravo Kaamo !! Je pensais pas qu'on arriverait à faire moins de 126, je me tournais les méninges dans tous les sens.

    En mettant 9ms, tu descends même à 107 caractères. (Chez moi, il accepte le rafraichissement à 9ms sans broncher, même à 1ms ça passe).

    Pour finir, j'utilise FireFox et la méthode du setInterval avec les guillemets fonctionne sans problème chez moi. Je n'ai pas Chrome pour tester.

  9. #69
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Je triche un peu, mais 96 !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var print = function(msg){ console.log(msg); };
    (function(d,p){
    setInterval(function(){n=(d-new Date);j=~~(n/86400000)+"j";p(j+new Date(n).toTimeString())},1e3)
    })(new Date(2013,6,20),print);

  10. #70
    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 Kaamo Voir le message
    C'est bizarre qu'il faille déclarer d et p sous d'autres noms de variables, ça ne passe pas sinon
    C'est parce que d et p sont des variables locales à ta fonction, quand tu passes une String à setInterval elle est évaluée dans le scope global.

    Bravo pour toutes vos propositions, le niveau augmente !

  11. #71
    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
    ha oui en effet !

    Hahaha classe Bovino, j'adore ! En l'arrangeant un peu pour qu'elle rentre mieux dans l'énoncé : 99 caractères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var print = function(msg){ console.log(msg); };
    (function(d,p){
    setInterval(function(){n=d-new Date;p(~~(n/864e5)+"j "+new Date(n).toTimeString().slice(0,8))},1e3)
    })(new Date(2013,6,20),print);
    ps : la forme "" ne marche pas sous Firefox 22, bizarre

  12. #72
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var print = function(msg){ console.log(msg); };
    (function(d,p){
    setInterval(function(){n=d-new Date;p(~~(n/864e5)+"j "+new Date(n).toLocaleTimeString())},1e3)
    })(new Date(2013,6,20),print);
    95

  13. #73
    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
    Ouais ça triche un peu avec ce format de présentation

    L'idée derrière ce format était de trouver des pistes pour centraliser le mécanisme arrondi+modulo pour les 4 unités j/h/m/s ; si on laisse toTimeString le faire à notre place, c'est beaucoup moins intéressant

    Pour info, la piste que je suivais mais qui ne s'est pas avérée aussi courte que les vôtres:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var print = function(msg){ console.log(msg); };
    (function(d,p){
     setInterval(function(){t=d-new Date;s='';[864e5,36e5,6e4,1e3].map(function(u,i){s+=(v=~~(t/u))+"jhms"[i]+' ';t-=v*u;});p(s);},1e3)
    })(new Date(2013,6,20),print);
    130 caractères

    ou encore en 124 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (function(d,p){
    D=d;P=p;setInterval("for(t=D-new Date,s='',i=3;u=[864e5,36e5,6e4,1e3][3-i];s+=(v=~~(t/u))+'smhj'[i--]+' ',t-=v*u);P(s)",1e3)
    })(new Date(2013,6,20),function(msg){ console.log(msg); });

  14. #74
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 128
    Points : 210
    Points
    210
    Par défaut
    Bravo kaamo 109 caractères !
    Dire que j'ai vraiment eu du mal à faire tenir la mienne en 140.

    Pour le setInterval String cela marche très bien sous Firefox 22, tu as probablement un problème sur ton install locale...

  15. #75
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Bovino
    Je triche un peu, mais 96 !
    Citation Envoyé par SylvainPV
    Ouais ça triche un peu avec ce format de présentation
    C'est pas comme si j'avais pas prévenu !

  16. #76
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 122
    Points : 44 914
    Points
    44 914
    Par défaut
    Citation Envoyé par Kaamo
    Voici un code en 109 caractères (merci TheGwy, je n'avais pas pensé à passer en format chaine), mais il ne fonctionne que sur IE10 et Chrome :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (function(d,p){
    x=d,y=p,setInterval("t=(x-new Date)/6e4;y(~~(t/1440)+'j '+~~(t/60)%24+'h '+~~t%60+'m '+~~(t*60)%60+'s')",1e3)
    })(new Date(2013,6,20),function(msg){console.log(msg);});
    je vois que l'on passe de bonne journée ici

  17. #77
    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
    C'est clair, on s'amuse bien

  18. #78
    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
    Nouveau jour, nouveau défi

    Numéro 5 : calcul du PGCD (plus grand diviseur commun) d'un nombre variable de nombres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function pgcd(){
          //votre code ici
    }
    console.assert( pgcd(27,36) === 9 );
    console.assert( pgcd(128,8,32) === 8 );
    console.assert( pgcd(7,14,7,35,707) === 7 );
    console.assert( pgcd(13,17) === 1 );
    La difficulté ici est la gestion d'un nombre variable d'arguments. Le calcul du PGCD lui peut-être fait de plusieurs façons, ça vous fera replonger dans vos vieux courts de math

  19. #79
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 651
    Points : 11 145
    Points
    11 145
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function pgcd(){
    for(i=arguments.length-1;i>0;i--){r=a=arguments[i];b=arguments[i-1];while(r!=0){if(r!=0){a=b;b=r}r=a%b}arguments[i-1]=b}return b;
    }
    alert(pgcd(7,14,7,35,707));
    130 caractères

  20. #80
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 128
    Points : 210
    Points
    210
    Par défaut
    J'arrive à 115 caractères en blanchissant l'argent sale de Bovino

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var print = function(msg){ console.log(msg); };
    (function(d,p){
    x=d;setInterval("print((new Date(n=x-new Date)+'').replace(/.*(..):(..):(..).*/,~~(n/864e5)+'j $1h $2m $3s'))",1e3)
    })(new Date(2013,6,20),print);
    EDIT : Oups un train de retard

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