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. #221
    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
    Par défaut
    Bien joué pour la récursivité, c'est intéressant mais je ne pense que ça soit l'approche la plus économe en caractères

  2. #222
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    741
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 741
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    Dans un autre registre, manipulation du DOM...

    Suppression d'une lettre dans une page WEB
    En 133 caractères, permet de virer un caractère ou une chaîne correspondant à un masque, sans globales :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (function(n,e){
    var t=document.createTreeWalker(n,NodeFilter.SHOW_TEXT),p='nodeValue',i;while(t.nextNode()){i=t.currentNode;i[p]=i[p].replace(e,'')}
    })(document.body,/e/ig);

  3. #223
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    J'ignorais totalement l'existence de cette méthode : https://developer.mozilla.org/en-US/...eateTreeWalker

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  4. #224
    Membre éclairé

    Femme Profil pro
    Experte JS / Conseillère en best practices / Chercheuse en programmation
    Inscrit en
    Octobre 2007
    Messages
    741
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Experte JS / Conseillère en best practices / Chercheuse en programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 741
    Par défaut
    Citation Envoyé par danielhagnoul Voir le message
    J'ignorais totalement l'existence de cette méthode : https://developer.mozilla.org/en-US/...eateTreeWalker
    Ravi de te l'avoir fait découvrir.

  5. #225
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #226
    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
    Par défaut
    Ah ben en fait c'était pas bien compliqué de passer le traceur de rosaces sous les 140. Il suffit de faire sans transform
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    (function(C){
    c=C.getContext('2d');X=Math.cos;R=t=74;setInterval("r=X(8/5*t);c.fillRect(R*2*(1-r*X(t)),R*(1-r*X(1.57-(t+=.01))),1,1)",5)
    })(document.querySelector("canvas"));
    122 : http://jsfiddle.net/J7kUq/2/

  7. #227
    Membre Expert
    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 : 38
    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
    Par défaut
    ça sent les vacs ? Ou l'excès de boulot pré-rentrée ?

    edit : D'ailleurs sur le script de @Lcf.vs, NodeFilter.SHOW_TEXT === 4 (19 car de moins)

  8. #228
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Un défi : calendrier perpétuel.
    Le paramètre d'entrée est l'année et en sortie un tableau mois / jours.

    A voir si c'est possible.

  9. #229
    Membre Expert
    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 : 38
    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
    Par défaut
    Le jour .. de la semaine (lundi, mardi, etc. ) ?

  10. #230
    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
    Par défaut
    Oui petite pause vacances
    Mais si ce genre de défi vous plaît toujours, n'hésitez pas à en proposer comme Auteur l'a fait. Par contre il faut être précis sur les entrées et sorties attendues

  11. #231
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Citation Envoyé par Kaamo Voir le message
    Le jour .. de la semaine (lundi, mardi, etc. ) ?
    si tu veux, mais en 140 caractères, les jours de la semaine prennent de la place.

  12. #232
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function c(){d=new Date(),m=[31,28,31,30,31,30,31,31,30,31,30,31],a=d.getFullYear(),i=1,s=[],n=m[d.getMonth()];(!(a%4)&&(a%100))||!(a%400)?m[1]=29:0;d.setDate(1);s.push(a,d.getMonth(),d.getDay());while(i<=n){s.push(i++)}return s}
     
    console.log( c() );
     
    /*
     * [2013, 7, 4, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31] 
     * [an,mois-1,numéro du jour (dimanche == 0) du premier du mois, les jours]
     * Le calendrier tient compte des années bissextiles.
     */

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  13. #233
    Membre Expert
    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 : 38
    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
    Par défaut
    Pour répondre à l'énoncé :
    - Prend en entrée une année et la liste des jours de la semaine.
    - Donne en sortie un tableau à deux dimensions, contenant les jours pour chaque mois

    108 caractères, exemple pour l'an 2000 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (function(y,t,r,i,d,j,s){
    for(r=i=[];i<12;r[i++]=s)for(j=s=[];+d!=+new Date(y,i+1,0);s[j++]=t[d.getDay()])d=new Date(y,i,j+1);return r
    })(2000,['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']);
    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    [Array[31], Array[29], Array[31], Array[30], Array[31], Array[30], Array[31], Array[31], Array[30], Array[31], Array[30], Array[31]]
    // Exemple 1er Array : Janvier :
    0: "samedi"
    1: "dimanche"
    2: "lundi"
    3: "mardi"
    4: "mercredi"
    5: "jeudi"
    6: "vendredi"
    7: "samedi"
    8: "dimanche"
    9: "lundi"
    10: "mardi"
    11: "mercredi"
    12: "jeudi"
    13: "vendredi"
    14: "samedi"
    15: "dimanche"
    16: "lundi"
    17: "mardi"
    18: "mercredi"
    19: "jeudi"
    20: "vendredi"
    21: "samedi"
    22: "dimanche"
    23: "lundi"
    24: "mardi"
    25: "mercredi"
    26: "jeudi"
    27: "vendredi"
    28: "samedi"
    29: "dimanche"
    30: "lundi"
    length: 31
    Mais ça me parait simple en fait, étant donné que je passe par le constructeur de Date pour trouver le jour. Du coup, j'ai consulté l'article Wikipédia qui propose un algorithme et l'ai retranscrit :
    Elle consiste, pour une date donnée, à effectuer dans l'ordre les ajouts ou cumuls suivants (en ne retenant que les restes dans la division par 7) :
    La somme du nombre formé par les deux derniers chiffres de l'année plus la partie entière de son quart.
    Une correction séculaire évaluée à la 6 4 2 et 0 (0 à partir de 1900, 6 à partir de 2000, 4 à partir de 2100, 2 à partir de 2200 et à nouveau 0 à partir de 2300... etc. mais aussi 0 à partir de 1582 année de création du calendrier, 6 à partir de 1600, ... ).
    Le décalage du mois qui répond à la suite 033 614 625 035 (on ajoute 0 en janvier, 3 en février, etc... 5 en décembre).
    Le quantième du jour. (ndlr:le tout modulo 7 !)
    - Prend en entrée une date et la liste des jours de la semaine.
    - Donne en sortie le jour.

    Exemple :
    - Aujourd'hui 23 aout 2013, nous sommes vendredi
    - Le 14 juillet 1789, c'était mardi
    Ce script est censé fonctionner de 1582 (date de l'établissement du calendrier Grégorien) à perpétuité ! (142 caractères)
    On s'affranchit donc totalement du constructeur de Date pour récupérer le jour.
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (function(d,t,y){
    y=d.getFullYear();return t[(y%100*1.25+'0642'[(y/100-15)%4^0]*1+'033614625035'[d.getMonth()]*1+d.getDate()-!!((!(y%4)&&y%100)||!(y%400)))%7^0]
    })(new Date(1789,6,14),['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']);
    Appliqué à l'énoncé. En 212 caractères ... j'ai explosé le tweet
    On remplace donc d.getDay() par notre fonction Wikipedesque
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (function(y,t,r,i,d,j,s){
    for(r=i=[];i<12;r[i++]=s)for(j=s=[];+d!=+new Date(y,i+1,0);s[j++]=t[(y%100*1.25+'0642'[(y/100-15)%4^0]*1+'033614625035'[d.getMonth()]*1+d.getDate()-!!((!(y%4)&&y%100)||!(y%400)))%7^0])d=new Date(y,i,j+1);return r
    })(2000,['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi']);

    A suivre : Wikipedia anglais semble proposer un autre algo

  14. #234
    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
    Par défaut
    Je mets pour l'effort de recherche, mais ça a un intérêt limité sachant que Date fait tout à notre place

  15. #235
    Membre Expert
    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 : 38
    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
    Par défaut
    Je suis d'accord, mais il faut avouer que l'algo est fun

  16. #236
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Lorsque j'ai posé le défi j'avais aussi en tête que la fonction retourne un code HTML pour la mise en page de la réponse

  17. #237
    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
    Par défaut
    Le code HTML d'un tableau retourné par une fonction de 140 caractères ? Mais c'est gros comme une maison

  18. #238
    Membre Expert
    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 : 38
    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
    Par défaut
    Le créateur de JSFuck a remis ça : World

    Classe !

  19. #239
    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
    Par défaut
    Wow c'est sacrément cool. Il a même réussi à caser son nom de domaine dans la source au milieu du globe. Chapeau bas, impossible de rivaliser avec ça

  20. #240
    Membre Expert
    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 : 38
    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
    Par défaut
    Il a présenté ça en guise de slide final à la "JSConf EU 2013" hier soir.
    Pas encore trouvé le slide ni la rediff' (edit : pas encore en ligne)

    edit: Il s'est inspiré de ça

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