Bonsoir , j'ai un exercice à vous soumettre je suis debutant en javascript, je voudrais comprendre comment faire cet exercice ?

The Snail in the Well

The snail climbs up 7 feet each day and slips back 2 feet each night.
How many days will it take the snail to get out of a well with the given depth?

Sample Input:
31

Sample Output:
6

Explanation: Let's break down the distance the snail covers each day:
Day 1: 7-2=5
Day 2: 5+7-2=10
Day 3: 10+7-2=15
Day 4: 15+7-2=20
Day 5: 20+7-2=25
Day 6: 25+7=32
So, on Day 6 the snail will reach 32 feet and get out of the well at day, without slipping back that night.

13 réponses


Hello :)

Alors en gros tu dois faire un script JS où tu détermines le nombre de metres et ce script doit dire combien de jour ça prendra à l'escargot pour parcourir les metrtes que tu as donné, sachant que à chaque jour l'escargot avance de 7m et recule de 2m, sauf si il a atteint le nombre de mettre à parcourir, dans ce cas il ne recule pas

Tu peux faire un prompt ou un argument si c'est purement du script ou un input si c'est une appli web, ensuite au lancement tu enregistre le nombre de mettre déterminé, et tu fais une boucle, chaque loop représente un jour, et dans cette boucle tu ajoutes 7 metre, ensuite tu vérifies si le nombre de metres est atteind, si oui tu print le résultat et tu arretes le programme, sinon, tu incrémente un jour et tu passes à la boucle suivante

hipman46
Auteur

oui merci pour l'explication j'ai bien compris comme ces ma première fois. je n'arrive pas à constitue code;
je ne s'ai pas quelle synthaxe je dois faire.
Ex: je declare dabord la variabl
const day = 7
if(day === 7){
console.log('')

A vrai dire je ne sais pas comment faire si je dois utiliser des switch ou des if else ...if

Peut-être que avant de faire le code, essaye de le réfléchir en ce que l'on appel pseudo code, c'est à dire dans du français classique. Exemple pour savoir si la personne est majeur :

ENTIER age

DEMANDER age

SI AGE >= 18 ALORS
    AFFICHER "Vous êtes majeur"
SINON
    AFFICHER "Vous êtes mineur"
FIN SI

Et tu va voir que pour traduire en code c'est très simple si tu as des bases. Exemple avec l'algo au dessus :

const age = parseInt(prompt("Votre age ?"))

if (age >= 18) {
    console.log('Vous êtes majeur')
} else {
    console.log('Vous êtes mineur')
}

Dans ton cas tu as besoin de quoi pour réussir l'exercice ? Je te fais le début :

ENTIER day
ENTIER currentFeet
ENTIER targetFeet

METTRE 0 DANS day
METTRE 0 DANS currentFeet
DEMANDER targetFeet

## Que met-on ici pour réussir à avoir chaque jour qui défile ?

AFFICHER Au jour [DAY] on a parcouru [currentFeet] pied

Voilà un début d'algo et je te laisse le soin de compléter ce qu'il y a au milieu.

hipman46
Auteur

merci du cout de main je vais essayé.

hipman46
Auteur

bonjour j'ai puis resoudre mon problème epuis avec l'aide de ChatGPT.
voila le code..

function main() {
    var depth = parseInt(readLine(), 10);
    //your code goes here

  function snailInWell(depth) {
  let distance = 0;
  let days = 0;

  while (distance < depth) {
    days++;
    distance += 7; // climb up 7 feet each day
    if (distance >= depth) {
      break; // if the snail reaches the top, exit the loop
    }
    distance -= 2; // slip back 2 feet each night
  }

  return days;
}

// Example usage:
console.log(snailInWell(depth)); // output: 6

}

Du coup vu que c'est ChatGPT qui à répondu, peux-tu m'expliquer en détails ce que fait le code sans utiliser ChatGPT ?

Si tu ne peux pas arrête le dev maintenant car si c'est un bot qui fait à ta place à quoi ça sert que tu apprenne à dev ?

Désolé si ça semble violent mais avoue que c'est vrai. Quel est l'intérêt d'avoir des exercices pour toi si c'est un autre (humain ou bot) qui le fait à ta place ?

Et aussi merci pour la perte de temps car au final mes explications n'ont servi à rien (pour toi)

Un peu violent oui, c'est juste un étudiant x)

Après oui si tu n'a pas réussis à faire cet exo, c'est assez mal parti ^^'

En gros le dev ça s'apprends comme le permis de consuire, c'est en deux phases, d'abord tu dois apprendre la mécanique, accelerer, freiner, tourner, rester dans ta file, passer les vitesses etc... (coté dev ça revient à apprendre un langage, un framework, les conditions, les boucles, les functions, etc...) Et d'un autre coté un faut apprendre l'analyse et la prise de décision, le partage de la route, l'anticipation, l'analyse des dangers, etc... (coté dev c'est apprendre à réfléchir et trouver la meilleure façon de règler un problème)

Bon c'est dommage de directement regarder la solution, on ne t'as pas donné la réponse c'est volontaire, on s'adapte à la personne, un dev pro qui a un problème dans un projet pro, on lui propose direct des solutions, un débutant on le conseille sans donner la réponse, la prochaine fois dis le si tu n'as pas compris un truc en particulier, et si tu ne sais pas quoi poser comme question parce que t'es paumé, dis simplement "j'ai rien compris" et on essayera de vulgariser au maximum, après on est pas des profs, on a pas appris à enseigner on fais au mieux ^^'

Après ça dépends de ton profil, tu es autodidacte? en reconversion? à l'ecole classique?

hipman46
Auteur

Merci du conseil j'ai compris le principe, enfaite je suis quelqu'un de currieux et il m'arrive parfois de brûlé les etapes,
je suis autodidacte j'ai appris le html et css tout seul et j'ai appris à créer des site avec Worpress.
Mais je voudrais mettre en place certaine projet donc il me faut apprendre javascript d'abord.
L'exo que j'ai presenté j'y ai beaucoup pensé mais je ne savais pas comment m'y prendre, donc j'ai posé une questions mais la reponse a été un peu vague pour moi qui n'a pas d'experience dans le langage je ne suis qu'au niveau des function que j'essaie de comprendre le fonctionnement.
Mais mon souci est de traduire du texte en code.

Mmmh je vois, alors en autodidacte c'est vrai que c'est très tentant de tricher pour voir la solution car on n'as pas de prof ou de mentor pour nous aider, et la commu (nous ^^) bah... On est plein de bonne volonté, mais on n'est pas des profs, on explique comme on peut ^^'

Après si tu es bloqué, tu as trois solutions:

  • Soit tu nous pose des questions sur une partie que tu n'as pas compris
  • Soit tu piges rien du coup tu ne sais même pas quoi poser comme question, alors dis tout simplement "j'ai rien compris" (tu es débutant on comprends que ce qui nous parait évident peut être flou pour toi)
  • Soit tu es sur que c'est trop dur pour toi et que tu n'y arraiveras pas, dans ce cas laisses cet exo de coté, prends un exo plus facile qui est dans le même thème (calcul, boucles, conditions) et tu pourras revenir sur cet exo plus tard

Je parles pour d'autres exos que tu aura plus tard, pour et exo tu connais déjà la réponse du coup cet exo tu ne peut plus revenir dessus, à la limite tu peux analyser le code proposé par ChatGPT mais c'est tout

Tu peux t'entrainer sur CondingGame pour l'algo (alors je trouve que le niveau est très élevé pour un débutant, mais en fouilant bien il y a quelques exos qui sont faisable pour un débutant, surtout dans la partie "entrainement")

hipman46
Auteur

Merci du conseil, je vais suivre schema

De rien ;)

A et habitues toi à tomber sur des mur, tu aura un exo qui te semble très difficile, ensuite tu aura le déclic, tu arrivera à faire l'exo, tu sera tout fier, tu passe à l'exo suivant et.... Il sera 100x plus difficile! x)

La progression d'un dev c'et un cercle infernal c'est normal :p

j'ai posé une questions mais la reponse a été un peu vague pour moi qui n'a pas d'experience dans le langage

Le soucis pour le coup n'est pas le langage mais l'algorithmie. Ton exercice est assez classique dans le genre et peux-être donner pour n'importe quel langage. D'ou le fait que j'était "vague" comme tu dis. En fait je voulais te forcer à faire l'algo pour que tu comprenne ce que tu fais.

Si je donne l'algo comme réponse à ton exo :

ENTIER day
ENTIER currentFeet
ENTIER targetFeet

METTRE 0 DANS day
METTRE 0 DANS currentFeet
DEMANDER targetFeet

TANT QUE currentFeet < targetFeet
    currentFeet = currentFeet + 7
    day = day + 1
    SI currentFeet < targetFeet ALORS
        currentFeet = currentFeet - 2
    FIN SI
FIN TANT QUE

AFFICHER Au jour [DAY] on a parcouru [currentFeet] pied

Le code que tu vois est je pense assez claire à comprendre et surtout très "facile" de le traduire dans n'importe quel langage de dev. Encore mieux une fois l'algo compris il est assez facile pour en sortir une fonction.

Si je prends l'exemple en JS :

function getDayForFeet(targetFeet) {
    const day = 0
    const currentFeet = 0

    while (currentFeet < targetFeet) {
        currentFeet += 7
        day += 1
        if (currentFeet < targetFeet) {
            currentFeet -= 2
        }
    }

    return day
}

console.log(getDayForFeet(31))
hipman46
Auteur

je crois que je vais travailler aussi sur mon algo