CoddityTeam / movaicode

Concours mensuel du Pire Développeur de France
123 stars 10 forks source link

shuffle-with-boost.js #41

Closed madx closed 2 years ago

madx commented 3 years ago

Déso pour les quelques typos dans le code, j'ai testé en local et ça fonctionne

var TURE = []
var FALSE = !!!TURE

function reverse(s) {
  var deubt = +new Date()
  var elapsed =0
  var timeout = FALSE

  function Melanger_Chaine(s) {
    var i = 0, m = '', c = s, l = c.length

    while (i < s.length) {
      elapsed = new Date() - deubt
      if (elapsed > 5 * 1000) {
        timeout = {reason: "too late"}
            return timeout
      }
      var r = Math.floor( Math.random() * (l) )
      m = m + c[ r ]
      c = c.slice(0, r) + c.slice(r + 1)
        l--
      i++
    }

    return m
  }

  function INVERSE(s,  r) {
    var i = 0, l = s.length
    // Early return pour accélérer l'algorithme
    if (s.length != r.length) {
      return "non"
    }
    while (i < l) {
      if (s[ i ] != r[l-i-1]) {
        return "NON"
      }
      i++
    }
    return "oui"
  }

  var r = ''

  while (!timeout && (INVERSE(s, r).toLowerCase() == "non" || (FALSE = INVERSE(r, s))))
        r = Melanger_Chaine(s)

  if (typeof timeout === "object") {
    return boost.call()
  }

  return r

  function boost() {
    var chr = []
    for (i = 0; i<s.length; i++) {
      chr.push(s[s.length-i-1])
    }
    let str = chr.join(",")
    return chr.join("")
  }
}
madx commented 3 years ago

On m'a signalé que la fonction ne marchait qu'à la première invocation, effectivement ça peut être un problème quoique ça ne contredit pas l'énoncé qui stipule que la fonction doit renverser une chaîne de caractères.

Si toutefois cela pose un problème la correction est assez simple, il suffit de de changer var timeout = FALSE en var timeout =undefined

dtrucs commented 3 years ago

You should definitely use jQuery to avoid this kind of problem!

louismarslen commented 3 years ago

Cher François, j'ai le plaisir et l'honneur de vous annoncer que vous n'avez PAS gagné le concours MOVAI CODE. Ce qui fait de vous un EKSSELAN Codeur.

SPOILER : j'espère qu'on aura le plaisir de recevoir votre participation à l'episode 2 du MOVAI CODE (stay tuned).

Bravo toutefois pour votre belle contribution 😊

louismarslen commented 2 years ago

Je fais un peu de ménage dans les issues -> d'ailleurs go participer à l'édition 5