Sofia Borges Posted September 29, 2020 at 10:53 PM Report Share #619445 Posted September 29, 2020 at 10:53 PM Hello Malta. Cá estou novamente a precisar de ajuda. Já estou a deitar fumo pela cabeça! Tenho este enunciado: <Hacking Task #2> Congratulations, you now know the *very* basics of the JavaScript language! To proceed on your mad journey from programming n00b to full-fledged <Code Cadet>, you must now work alongside fSociety's ultra dope hacking crew and show them your awesome recently acquired skills in a series of <Hacking Tasks>. For this task you'll need to gain access to a target's account, which is password protected. We know the password is only four characters long, but we have no idea of what it looks like. With today's computing power, brute-forcing weak passwords is not that hard and, as in any brute-force technique, it only requires time and luck. Instructions You know that your target's password is 4 characters long, so you'll just have to brute force 1 character at a time. We already declared the variable correctGuesses which you should use to keep track of how many characters you have guessed so far. Bear in mind that your program does not need to guess the password, that is not your goal! You need to create a loop that only stops when all 4 characters have been guessed. On each loop iteration you need to calculate a random number between 1 and 3, which will correspond to each of the bellow scenarios: 1. You guessed one character correctly, which increases correctGuesses by 1 and prints the message 'Found X characters' (where X is replaced with the current number of correct guesses). 2. You guessed incorrectly and your target's terminal has detected too many attempts, which resets correctGuesses to 0 and prints the message 'Starting over' to the console. 3. You guessed incorrectly, but have not been detected yet, correctGuesses is kept with the same value. Once the password is cracked (that is, correctGuesses has a value of 4) you should print the message 'Terminal hacked!'. Make sure all the messages in your code are in the correct format in order to advance! Já fiz e refiz o código várias vezes, tenho assim: var correctGuesses = 0; var targetPassword = 4; while(correctGuesses < 4) { var outcome = Math.floor(Math.random()*3); if(outcome === 0){ correctGuesses ++; console.log ('Found ' + correctGuesses + ' characters'); } if (outcome === 1) { correctGuesses = 0; console.log ('Starting over'); } if (outcome === 2) { console.log ('Wrong guess'); } if (correctGuesses === targetPassword) { console.log('Terminal hacked!'); break; } } mas dá-me erro: >>>>Code is incorrect Not sure how you can calculate a random number between 1 and 3 in such a way Será que conseguem dizer-me o que tenho de melhorar? Obrigada desde já Link to comment Share on other sites More sharing options...
Zex Posted September 30, 2020 at 07:23 AM Report Share #619446 Posted September 30, 2020 at 07:23 AM (edited) Math.floor(Math.random()*3) dá 0, 1 ou 2 Edited September 30, 2020 at 07:24 AM by Zex Link to comment Share on other sites More sharing options...
Sofia Borges Posted September 30, 2020 at 10:31 AM Author Report Share #619453 Posted September 30, 2020 at 10:31 AM Em 30/09/2020 às 09:23, Zex disse: Math.floor(Math.random()*3) dá 0, 1 ou 2 Claro! 🤦♀️ Obrigada Já corrigi: var outcome = Math.ceil(Math.random()*3); Agora o erro é: >>>>Code is incorrect You guessed some characters correctly, but failed to do the right thing! Link to comment Share on other sites More sharing options...
antseq Posted September 30, 2020 at 11:18 AM Report Share #619454 Posted September 30, 2020 at 11:18 AM Em 30/09/2020 às 12:31, Sofia Borges disse: Claro! 🤦♀️ Obrigada Já corrigi: var outcome = Math.ceil(Math.random()*3); Agora o erro é: >>>>Code is incorrect You guessed some characters correctly, but failed to do the right thing! Ajustou os IF's (=0, =1, =2) para (=1, =2, =3)? Senão o "0" nunca ocorre e ficará num ciclo infinito (correctGuesses=0) cps, Link to comment Share on other sites More sharing options...
Sofia Borges Posted September 30, 2020 at 12:31 PM Author Report Share #619455 Posted September 30, 2020 at 12:31 PM 1 hora atrás, antseq disse: Ajustou os IF's (=0, =1, =2) para (=1, =2, =3)? Senão o "0" nunca ocorre e ficará num ciclo infinito (correctGuesses=0) cps, Sim, foi a primeira coisa. O erro é: You guessed some characters correctly, but failed to do the right thing! Link to comment Share on other sites More sharing options...
Zex Posted September 30, 2020 at 01:32 PM Report Share #619456 Posted September 30, 2020 at 01:32 PM Math.floor(Math.random()*3) dá 0, 1 ou 2 então 1+Math.floor(Math.random()*3) dá 1, 2 ou 3 ou Math.floor(1+Math.random()*3) dá 1, 2 ou 3 Link to comment Share on other sites More sharing options...
Sofia Borges Posted September 30, 2020 at 01:36 PM Author Report Share #619457 Posted September 30, 2020 at 01:36 PM 1 minuto atrás, Zex disse: Math.floor(Math.random()*3) dá 0, 1 ou 2 então 1+Math.floor(Math.random()*3) dá 1, 2 ou 3 ou Math.floor(1+Math.random()*3) dá 1, 2 ou 3 Obrigada. Se colocar: var outcome = Math.ceil(Math.random()*3); o erro é: >>>>Code is incorrect You guessed some characters correctly, but failed to do the right thing! Se colocar: Math.floor(Math.random()*3) ou Math.floor(1+Math.random()*3) o erro é: >>>>Code is incorrect Not sure how you can calculate a random number between 1 and 3 in such a way Se colocar: 1+Math.floor(Math.random()*3) o erro é: >>>>Code is incorrect You guessed some characters correctly, but failed to do the right thing! Link to comment Share on other sites More sharing options...
Zex Posted September 30, 2020 at 01:46 PM Report Share #619458 Posted September 30, 2020 at 01:46 PM O código if (correctGuesses === targetPassword) { console.log('Terminal hacked!'); break; deve ficar depois do ciclo while Nesse caso bastará escrever console.log('Terminal hacked!'); Link to comment Share on other sites More sharing options...
Sofia Borges Posted September 30, 2020 at 01:53 PM Author Report Share #619459 Posted September 30, 2020 at 01:53 PM 5 minutos atrás, Zex disse: O código if (correctGuesses === targetPassword) { console.log('Terminal hacked!'); break; deve ficar depois do ciclo while Nesse caso bastará escrever console.log('Terminal hacked!'); Bem pensado. Mas não é isso. Ao colocar esse console.log depois do ciclo while o erro mantém-se igual. (já estou a bater mal.. isso é para entrar num bootcamp... isto deveria ser básico que é para quem nunca programou...) Link to comment Share on other sites More sharing options...
Zex Posted September 30, 2020 at 01:57 PM Report Share #619460 Posted September 30, 2020 at 01:57 PM Há muitas maneiras de fazer o programa. Parece que ele já funciona bem como está. O problema é que é um computador a corrigir - e os computadores não são muito versáteis. Experimenta assim: Math.floor(Math.random() * 3) + 1; Link to comment Share on other sites More sharing options...
susete Posted October 1, 2020 at 03:05 PM Report Share #619469 Posted October 1, 2020 at 03:05 PM Olá Sofia, Já encontraste-te a resposta? Olha bem para o ponto 3, "3. You guessed incorrectly, but have not been detected yet, correctGuesses is kept with the same value." O erro está nesse if 🙂 Link to comment Share on other sites More sharing options...
Sofia Borges Posted October 1, 2020 at 03:21 PM Author Report Share #619470 Posted October 1, 2020 at 03:21 PM Em 01/10/2020 às 17:05, susete disse: Olá Sofia, Já encontraste-te a resposta? Olha bem para o ponto 3, "3. You guessed incorrectly, but have not been detected yet, correctGuesses is kept with the same value." O erro está nesse if 🙂 Ola Lisete! Obrigada! Ja resolvi. Ontem, já tarde, descansei a cabeça meia hora e pensei l: "é agora ou nunca". Olhei para a enunciado com cautela e consegui resolver. Agora estou noutro que parece, igualmente, simples mas encalhei!!😜 Link to comment Share on other sites More sharing options...
Guest Laura Santos Posted October 3, 2020 at 08:30 PM Report Share #619480 Posted October 3, 2020 at 08:30 PM Olá, boa noite ^^ Recentemente tenho focado mais na área de programação apenas como hobbie e este exercício apareceu-me no feed e devido à "noobice", não consigo entender o que está errado no código que publicou 🤔 genuinamente, parece-me correcto (do pouco que sei). Obrigada. Link to comment Share on other sites More sharing options...
Zex Posted October 4, 2020 at 07:53 AM Report Share #619481 Posted October 4, 2020 at 07:53 AM Em 03/10/2020 às 22:30, Laura Santos disse: não consigo entender o que está errado no código que publicou 🤔 genuinamente, parece-me correcto O código funciona. O problema principal é que era um computador a corrigir e os computadores são pouco flexíveis. Link to comment Share on other sites More sharing options...
Sofia Borges Posted October 4, 2020 at 12:00 PM Author Report Share #619482 Posted October 4, 2020 at 12:00 PM (edited) 4 horas atrás, Zex disse: O código funciona. O problema principal é que era um computador a corrigir e os computadores são pouco flexíveis. var passwordLength = 4; var correctGuesses = 0; while (correctGuesses < 4) { var outcome = Math.ceil (Math.random () * 3); if (outcome === 1){ correctGuesses ++; console.log ('Found ' + correctGuesses + ' characters'); } else if (outcome === 2){ correctGuesses = 0; console.log ('Starting over'); } else if (outcome === 3){ correctGuesses = correctGuesses; } } if (correctGuesses === passwordLength) { console.log ("Terminal hacked!"); } Esta era a forma que eles queriam. 😉 Edited October 4, 2020 at 12:13 PM by Sofia Borges resolvido Link to comment Share on other sites More sharing options...
David Andrade Posted October 4, 2020 at 01:42 PM Report Share #619483 Posted October 4, 2020 at 01:42 PM Me ajudou muito! Link to comment Share on other sites More sharing options...
Guest Laura Santos Posted October 4, 2020 at 03:03 PM Report Share #619484 Posted October 4, 2020 at 03:03 PM 7 horas atrás, Zex disse: O código funciona. O problema principal é que era um computador a corrigir e os computadores são pouco flexíveis. Ah okay, então ambas as maneiras estão correctas (e provavelmente existe mais modos de fazer o exercício) caso o código fosse corrido/lido por uma pessoa. Obrigada :) Link to comment Share on other sites More sharing options...
Guest Laura Santos Posted October 4, 2020 at 03:05 PM Report Share #619485 Posted October 4, 2020 at 03:05 PM 3 horas atrás, Sofia Borges disse: var passwordLength = 4; var correctGuesses = 0; while (correctGuesses < 4) { var outcome = Math.ceil (Math.random () * 3); if (outcome === 1){ correctGuesses ++; console.log ('Found ' + correctGuesses + ' characters'); } else if (outcome === 2){ correctGuesses = 0; console.log ('Starting over'); } else if (outcome === 3){ correctGuesses = correctGuesses; } } if (correctGuesses === passwordLength) { console.log ("Terminal hacked!"); } Esta era a forma que eles queriam. 😉 Esclarecida, admito que ainda não passei muitas horas em JS e graças a este exercício fiquei a perceber que se pode ter "if statements" e "else-if statements" no mesmo block! Obrigada pela disponibilidade :) Link to comment Share on other sites More sharing options...
Zex Posted December 6, 2020 at 05:08 PM Report Share #620576 Posted December 6, 2020 at 05:08 PM (edited) Para quem não sabe, os verificadores automáticos comparam o output da consola do programa do user com o output do programa do site. Assim, não adianta tentar corrigir o programa sem verificar atentamente o enunciado. Edited December 6, 2020 at 05:09 PM by Zex Link to comment Share on other sites More sharing options...
darththaurer Posted December 22, 2021 at 12:02 AM Report Share #625008 Posted December 22, 2021 at 12:02 AM @Sofia Borges agora quem está encalhado sou eu. Ando neste exercício há uma hora e encontrei aqui a tua resolução e nem mesmo assim funciona. 😅 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now