S'exécute sous Node.js


Code source en CoffeeScript

 
{ stdin, stdout } = process
 
carte = ""
 
demander = ( question, callback ) ->
    stdin.resume()
    stdin.setEncoding "utf8"
    stdout.write "\n\n\n\nEn lisant dans vos pensées, j'oserais vous demander :"
    stdout.write "\n#{question}"
    stdin.once 'data', ( reponse ) ->
        switch reponse.toString()
            when "oui\n" then callback true
            when "oui \n" then callback false
            else
                stdout.write "Je n'ai pas compris la réponse...\n"
                demander question, callback
 
 
fin = ->
    stdout.write "\n\nVotre carte est #{carte}\nMerci de m'avoir permis de lire dans vos pensées...\n\n"
    process.exit()
 
 
espece = ->
    demander "Votre carte serait-elle#{carte} ?    ", ( figure ) ->
        if figure
            demander "Votre carte aurait-elle une valeur supérieur au dix ?    ", ( asRoi ) ->
                if asRoi
                    demander "Votre carte serait-elle d'une valeur plus grande que la reine ?   ", ( as ) ->
                        if as then carte = "l'as" + carte else carte = "le roi" + carte
                        fin()
                else
                    demander "Votre carte serait-elle d'une valeur inférieure au roi ?    ", ( dame ) ->
                        if dame then carte = "la dame" + carte else carte = "le valet" + carte
                        fin()
        else
            demander "Votre carte aurait-elle une valeur égale ou inférieure au dix ?    ", ( sixEnHaut ) ->
                if sixEnHaut
                    demander "Votre carte serait-elle supérieure au cinq ?    ", ( neufDix ) ->
                        if neufDix
                            demander "Votre carte serait-elle supérieure au huit ?    ", ( dix ) ->
                                if dix then carte = "le dix" + carte else carte = "le neuf" + carte
                                fin()
                        else
                            demander "Votre carte serait-elle inférieure au neuf ?    ", ( huit ) ->
                                if huit
                                    carte = "le huit" + carte
                                    fin()
                                else
                                    demander "Votre carte serait-elle inférieure au huit ?    ", ( sept ) ->
                                        if sept then carte = "le sept" + carte else carte = "le six" + carte
                                        fin()
                else
                    demander "Votre carte serait-elle inférieure au six ?    ", ( quatreCinq ) ->
                        if quatreCinq
                            demander "Votre carte serait-elle supérieur au trois ?    ", ( cinq ) ->
                                if cinq then carte = "le cinq" + carte else carte = "le quatre" + carte
                                fin()
                        else
                            demander "Votre carte serait-elle inférieure au quatre ?    ", ( trois ) ->
                                if trois then carte = "le trois" + carte else carte = "le deux" + carte
                                fin()
 
 
couleur = ( rouge ) ->
    if rouge
        demander "Votre carte serait-elle rouge ?    ", ( coeur ) ->
            carte += if coeur then " de coeur" else " de carreau"
            espece()
    else
        demander "Votre carte serait-elle noire ?    ", ( trefle ) ->
            carte += if trefle then " de trèfle" else " de pique"
            espece()
 
 
demander "Votre carte est-elle choisie ?    ", couleur
 
 
 


Code source en JavaScript


// Generated by CoffeeScript 1.4.0
var carte, couleur, demander, espece, fin, stdin, stdout;
 
stdin = process.stdin, stdout = process.stdout;
 
carte = "";
 
demander = function(question, callback) {
  stdin.resume();
  stdin.setEncoding("utf8");
  stdout.write("\n\n\n\nEn lisant dans vos pensées, j'oserais vous demander :");
  stdout.write("\n" + question);
  return stdin.once('data', function(reponse) {
    switch (reponse.toString()) {
      case "oui\n":
        return callback(true);
      case "oui \n":
        return callback(false);
      default:
        stdout.write("Je n'ai pas compris la réponse...\n");
        return demander(question, callback);
    }
  });
};
 
fin = function() {
  stdout.write("\n\nVotre carte est " + carte + "\nMerci de m'avoir permis de lire dans vos pensées...\n\n");
  return process.exit();
};
 
espece = function() {
  return demander("Votre carte serait-elle" + carte + " ?    ", function(figure) {
    if (figure) {
      return demander("Votre carte aurait-elle une valeur supérieur au dix ?    ", function(asRoi) {
        if (asRoi) {
          return demander("Votre carte serait-elle d'une valeur plus grande que la reine ?   ", function(as) {
            if (as) {
              carte = "l'as" + carte;
            } else {
              carte = "le roi" + carte;
            }
            return fin();
          });
        } else {
          return demander("Votre carte serait-elle d'une valeur inférieure au roi ?    ", function(dame) {
            if (dame) {
              carte = "la dame" + carte;
            } else {
              carte = "le valet" + carte;
            }
            return fin();
          });
        }
      });
    } else {
      return demander("Votre carte aurait-elle une valeur égale ou inférieure au dix ?    ", function(sixEnHaut) {
        if (sixEnHaut) {
          return demander("Votre carte serait-elle supérieure au cinq ?    ", function(neufDix) {
            if (neufDix) {
              return demander("Votre carte serait-elle supérieure au huit ?    ", function(dix) {
                if (dix) {
                  carte = "le dix" + carte;
                } else {
                  carte = "le neuf" + carte;
                }
                return fin();
              });
            } else {
              return demander("Votre carte serait-elle inférieure au neuf ?    ", function(huit) {
                if (huit) {
                  carte = "le huit" + carte;
                  return fin();
                } else {
                  return demander("Votre carte serait-elle inférieure au huit ?    ", function(sept) {
                    if (sept) {
                      carte = "le sept" + carte;
                    } else {
                      carte = "le six" + carte;
                    }
                    return fin();
                  });
                }
              });
            }
          });
        } else {
          return demander("Votre carte serait-elle inférieure au six ?    ", function(quatreCinq) {
            if (quatreCinq) {
              return demander("Votre carte serait-elle supérieur au trois ?    ", function(cinq) {
                if (cinq) {
                  carte = "le cinq" + carte;
                } else {
                  carte = "le quatre" + carte;
                }
                return fin();
              });
            } else {
              return demander("Votre carte serait-elle inférieure au quatre ?    ", function(trois) {
                if (trois) {
                  carte = "le trois" + carte;
                } else {
                  carte = "le deux" + carte;
                }
                return fin();
              });
            }
          });
        }
      });
    }
  });
};
 
couleur = function(rouge) {
  if (rouge) {
    return demander("Votre carte serait-elle rouge ?    ", function(coeur) {
      carte += coeur ? " de coeur" : " de carreau";
      return espece();
    });
  } else {
    return demander("Votre carte serait-elle noire ?    ", function(trefle) {
      carte += trefle ? " de trèfle" : " de pique";
      return espece();
    });
  }
};
 
demander("Votre carte est-elle choisie ?    ", couleur);