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. #301
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    En voici l'équivalent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    x="949077509090757009390757074090759"; // x chaine de caractères
    for(j=0;j<x.length;j++)   // parcours de cette chaine
    {
        alert(x[j]);
    }
    c'est tordu, n'est-ce pas ?

  2. #302
    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
    J'ai cessé la recherche de l'équation qui correspond aux pattern, c'est trop compliqué. Ça doit exister, mais faudrait faire un programme pour la trouver.

    Je suis parti sur l'idée d'une équation avec un modulo parce que, comme les patterns ne sont pas linéaires, il faut une fonction qui vienne casser cette linéarité.

    en fait, dans l'équation suivante, il faudrait trouver la combinaison a, b, c, d et e qui corresponde (si une telle solution existe).
    a * ((b + x) * (c + i)) % d < e

    Voilà, bon courage. Sinon, j'avais une idée pour un prochain défi, mais je l'ai oubliée. Si ça me revient, je la soumettrai.
    "tatatatatatatatataaa !! tata taaa !! tata taaa !! tatatata tataaa !! tata taaa !! tata taaa !!"

  3. #303
    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
    Oui l'écriture modulo est très courte, je miserais aussi dessus en combinaison avec l'addition. Autre idée, passer l'incrémentation de j au milieu du calcul procédural pour avoir un facteur (j+1) pouvant s'avérer utile. Plein de voies possibles, mais laquelle prendre ! Vu que ça nous fera gagner au mieux 10 caractères, je pense qu'on peut passer à un autre défi
    One Web to rule them all

  4. #304
    Membre confirmé
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Points : 549
    Points
    549
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Auteur Voir le message
    En voici l'équivalent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    x="949077509090757009390757074090759"; // x chaine de caractères
    for(j=0;j<x.length;j++)   // parcours de cette chaine
    {
        alert(x[j]);
    }
    c'est tordu, n'est-ce pas ?
    Bah ce qui me choquait et en même temps ce que j'apprends c'est pas tellement la déclaration dans l'instruction c'était surtout le [j++]

    si je suit le raisonnement on pourrait déclarer comme suit non ? for([j=0][x="949077509090757009390757074090759"][j++]) je pense que c'est certainement faux mais c'est comme ça que je prends la chose
    Je préfère fermer ma gueule et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.

  5. #305
    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
    N'hésite pas à mettre un autre défi si ça te revient, Barsy.
    En effet, l'algo commence à être alambiqué et on a bien fait le tour de la question. Néanmoins, je garde ça dans un coin, ça a un goût de non-fini

    @Darkaurora :
    C'est l'écriture de la condition de la boucle qui te gêne ? Si oui, en effet auteur a décortiqué la chose. C'est un raccourci pour dire "tant que ma chaîne a des caractères en stock, je parcours".
    Pour ce qui est de la chaîne en elle même, chaque caractère (qui est ensuite casté en Number) correspond à une colonne à dessiner.
    9 => que des "dièses". 0 => que des blancs. Ensuite, pour ce qui est des autres nombres, c'est en fonction de la ligne et du nombre parcouru qu'est déterminé le dessin du "dièse" ou non.

    Un peu alambiqué je l'admets

  6. #306
    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
    si je suit le raisonnement on pourrait déclarer comme suit non ? for([j=0][x="949077509090757009390757074090759"][j++])
    Ha non ! les ; sont obligatoires. On distingue bien les quatre zones :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(/* zone 1*/ j=0 ; /* zone 2 */ [x="949077509090757009390757074090759"][j++];/* zone 3 */) {
      /* zone 4 */
    }
    • zone 1 : initialisation de(s) variable(s). Ceci est fait avant le premier tour de la boucle
    • zone 2 : condition de la boucle. Tant que la condition est évaluée à true (ou vide, sans condition), la boucle continue.
    • zone 3 : opération à réaliser à chaque fin de tour de boucle
    • zone 4 : opération à réaliser à chaque début de tour de boucle (est exécuté avant la zone 3)

    Chaque zone est facultative ! for(;;); est donc tout à fait valide, c'est une boucle infini qui ne fait rien si ce n'est consommer de la ressource pour rien

    Donc pour illustrer :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var i = 0;
     
    // 1 < 2 => pour sortir au bout de 2 tours
    for(console.log('début de boucle'); i<2 ;console.log('fin de tour de boucle')){
      console.log('début de tour de boucle');
      i++;
    }
     
    //* Va afficher :
    début de boucle
    début de tour de boucle
    fin de tour de boucle
    début de tour de boucle
    fin de tour de boucle*/

  7. #307
    Membre confirmé
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Points : 549
    Points
    549
    Billets dans le blog
    1
    Par défaut
    Ok merci des explications
    Je préfère fermer ma gueule et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.

  8. #308
    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
    Mais il faut reconnaitre que le javascript permet d'écrire des choses qui ne sont pas accepté par tous les langages. C'est d'ailleurs l'intérêt de ces défis, de profiter des raccourcis du javascript pour écrire nos algo.

    Bien évidemment, en programmation classique, il est interdit d'écrire une boucle for sans remplir les 4 zones, même si le langage le permet.
    "tatatatatatatatataaa !! tata taaa !! tata taaa !! tatatata tataaa !! tata taaa !! tata taaa !!"

  9. #309
    Membre confirmé
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Points : 549
    Points
    549
    Billets dans le blog
    1
    Par défaut
    Oui c'est bien comme ça qu'on m'a appris
    Je préfère fermer ma gueule et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.

  10. #310
    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
    On remet ça ?

    Une calculatrice en notation polonaise inverse

    A gérer : les nombres entiers et les signes + - * /

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function npi(s){
       //votre code ici
    }
     
    console.assert(npi("1 2 + 4 * 3 +") === 15);
    console.assert(npi("99 27 - 4 /") === 18);
    console.assert(npi("23 7 4 - -") === 20);
    One Web to rule them all

  11. #311
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console.assert(npi("4 27 99 - /") === 18);
    Il manque pas un truc là ? J'ai beau chercher, je vois pas comment on arrive à 18…
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  12. #312
    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 Watilin Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console.assert(npi("4 27 99 - /") === 18);
    Il manque pas un truc là ? J'ai beau chercher, je vois pas comment on arrive à 18…
    (99 - 27) / 4 = 18

    On écrit ici les opérandes avant les opérateurs.
    "tatatatatatatatataaa !! tata taaa !! tata taaa !! tatatata tataaa !! tata taaa !! tata taaa !!"

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    ça me rappelle les Texas Instruments au lycée

  14. #314
    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
    Oui il y a plusieurs écritures possibles avec la notation polonaise
    4 27 99 - /
    27 99 - 4 /

    J'ai corrigé une des assertions, le signe pour la multiplication est bien '*' et non 'x'
    One Web to rule them all

  15. #315
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Ah Texas Instruments gérait la RPN ? J'ai pas souvenir, personnellement j'étais raide dingue de ma Hewlett-Packard 48S qui fonctionnait nativement en RPN. Les calculatrices HP étaient vraiment au top surtout la série des HP48xx. En terme de vitesse de calcul avec la gestion de la pile à l'écran y avait pas mieux.

    Pour les nostalgiques, sur le Play Store de Google, il y a le clone des HP48 : Droid48.

    Pour en revenir à la RPN : "4 27 99 - /" avec une pile de type calculatrice reviendrait à faire : 4 / (27 - 99) = 5.55555E-2 et pas 18, et pour arriver à 18 = 99 27 - 4 /

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Ah Texas Instruments gérait la RPN ?
    euh, je commence à avoir un doute
    Comme je n'ai eu qu'une seule fois ce genre de machine dans la main, je me demande si ce n'était pas une HP finalement

  17. #317
    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 rawsrc Voir le message
    Pour en revenir à la RPN : "4 27 99 - /" avec une pile de type calculatrice reviendrait à faire : 4 / (27 - 99) = 5.55555E-2 et pas 18, et pour arriver à 18 = 99 27 - 4 /
    Ah c'est exact, je corrige l'énoncé. J'ai cru qu'avec un fonctionnement en pile les opérandes étaient dépilées en Last In First Out.
    One Web to rule them all

  18. #318
    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 : 53
    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
    Effectivement, c'est bien les HP qui utilisaient la RPN ! Et je suis bien d'accord avec Martin : la HP48 était vraiment un bijou et j'aurais eu du mal à m'en passer à l'époque.

    Sinon en RPN, les chiffres sont gérés en pile, avec le principe Last In First Out, mais les opérateurs sont eux traités au moment où ils sont rencontrés, il n'y a pas de notion de pile pour eux.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  19. #319
    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
    Ah oui d'accord, c'est une pile d'après le Wiki. À la fac j'avais appris une version à base de file, d'où mon erreur…
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  20. #320
    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 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Une idée de réalisation: le fameux jeu de l'helicopère dans la grotte http://www.play-helicopter-game.com/

    J'imagine une version simpliste avec un simple défilement de caractères ...
    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 !

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