Ajuda com código >> A string está saindo com uma letra a mais

Olá pessoal! Estou participando de uma seleção para entrar num bootcamp, e até então não sabia nadinha de programação. Então, por favor, me ajudem! Este é um dos exercícios testes para conseguir pontuação. Sei que deve ser algo bem bobo, mas não sei o que estou fazendo de errado…

O exercício é copiar os dados não corrompidos da var targetDisk para a var newDisk. E depois imprimir o conteúdo como uma string. Daí eu fiz isso abaixo, e deu certo em partes. Pq a impressão ficou assim: EE,-,C,o,r,p,’,s, ,E,v,i,l.

Eu não entendo porque esse “E” aparece aí na frente, e nem estou conseguindo tirá-lo. Podem me ajudar?

Esse código foi a forma que eu consegui “resolver” esse exercício, mas não faço a mínima idéia se ele está certo ou não… :expressionless:

    var targetDisk = [ 'E', 'ø', '-', 'C', 'ø', 'o', 'r', 'ø', 'ø', 'p', '\'', 'ø', 's', ' ', 'E', 'v', 'ø', 'i', 'ø', 'ø', 'l'];
    var newDisk = ['E', '-', 'C', 'o', 'r', 'p', '\'', 's', ' ', 'E', 'v', 'i', 'l'];


     for (var i = 0; i < newDisk.length; i++) {
     console.log(targetDisk[i] + newDisk);
     break;
     }

E o que seriam os dados corrompidos? Você está concatenando (+) e não copiando de um vetor para o outro.

Os dados corrompidos seriam esses símbolos aqui: ‘ø’.
Eu até percebi que estou concatenando, só que foi como consegui imprimir uma string minimamente parecida com o que eles pedem. Eles dizem para me lembrar dos arrays methods, mas não consigo entender como aplicá-los aqui…

se eu imprimo

console.log(newDisk);

fica assim:

[

“E”,

“-”,

“C”,

“o”,

“r”,

“p”,

“’”,

“s”,

" ",

“E”,

“v”,

“i”,

“l”

]

e continua aparecendo que não é assim… :weary:

vou postar o que pedem no exercício.

'Instructions

Copy the uncorrupted data in the array stored in targetDisk to the empty array newDisk (corrupted data looks like this: ø). Then print the contents of the disk to the terminal as a string.

To complete this task remember the arrays’ methods we have learned so far.’

Quais foram os Array’s methods que vc aprendeu até agora? Pergunto pra poder responder com base no conteudo que vc já viu.

Eu pensei assim (sem usar Arrays Methods):

let k = 0;
let targetDisk = [ 'E', 'ø', '-', 'C', 'ø', 'o', 'r', 'ø', 'ø', 'p', '\'', 'ø', 's', ' ', 'E', 'v', 'ø', 'i', 'ø', 'ø', 'l'];
let newDisk = [];

for(let i = 0; i < targetDisk.length; i++){
	if(targetDisk[i] != 'ø'){
		newDisk[k++] = targetDisk[i];
	}
}

console.log(newDisk);

O teste:

<!DOCTYPE html>
<html lang="pt-BR">
	<head>
		<meta charset="UTF-8">
		<title>New Disk</title>
		
		<script>
			var k = 0;
			var targetDisk = [ 'E', 'ø', '-', 'C', 'ø', 'o', 'r', 'ø', 'ø', 'p', '\'', 'ø', 's', ' ', 'E', 'v', 'ø', 'i', 'ø', 'ø', 'l'];
			var newDisk = [];
			
			for(let i = 0; i < targetDisk.length; i++){
				if(targetDisk[i] != 'ø'){
					newDisk[k++] = targetDisk[i];
				}
			}
		
			console.log(newDisk);
		</script>
	</head>
	<body>
	
	</body>
</html>

Rodando…

image

No entanto, tu pode usar o toString() - que é um array methods - para mostrar como string onde os caracteres são separados por vírgula. Nesse caso:

ah sim… desculpem a falta de informações, mas é pq ainda sou muito crua nisso… rs

aprendi o .pop e o .push

Olha, deu certinho, e coloquei inclusive o toString(). BUT, ainda não é isso que eles querem… :unamused:

Muito obg pela ajuda, pq mesmo não sendo o que eles querem ainda, eu to aprendendo muito…

Qual é o ‘erro’ ou alerta apresentado?

“Your code is not up to fSociety standards, keep trying to improve it”.

Não quer dizer que tá errado… é só que eles querem uma outra forma de fazer, entende? rs

Eu imagino que como eles citaram os Array’s Methods , eu precise utilizá-los. Só que eu não estou entendendo como poderia fazer isso nesse exercício. Tentei de algumas formas, mas todas retornaram erro, pois não seria a forma correta.

Acho que o exercicio quer algo assim:

const targetDisk = [ 'E', 'ø', '-', 'C', 'ø', 'o', 'r', 'ø', 'ø', 'p', '\'', 'ø', 's', ' ', 'E', 'v', 'ø', 'i', 'ø', 'ø', 'l'];
const newDisk = [];

for (let i = 0; i < targetDisk.length; i++) {
  if (targetDisk[i] !== 'ø') newDisk.push(targetDisk[i]);
}

console.log(newDisk.join(''));

Ou assim:

const targetDisk = [ 'E', 'ø', '-', 'C', 'ø', 'o', 'r', 'ø', 'ø', 'p', '\'', 'ø', 's', ' ', 'E', 'v', 'ø', 'i', 'ø', 'ø', 'l'];
const newDisk = targetDisk.filter(e => e !== 'ø');
console.log(newDisk.join(''));
3 curtidas

"Code is correct!!!"

Brigadão!

Agora eu consegui entender como usar esse Array’s Method aqui. E vou pesquisar mais sobre o join, pois esse eu ainda não tinha visto.

1 curtida

help please

Instructions

Create a function named extractPassword which takes an array of characters (which includes some trash characters) and returns a string with only valid characters (a - z, A - Z, 0 - 9).

Here’s an example:

extractPassword([‘a’, ‘-’, ‘~’, ‘1’, ‘a’, ‘/’]); // should return the string ‘a1a’ extractPassword([’~’, ‘A’, ‘7’, ‘/’, ‘C’]); // should return the string ‘A7C’

help please
Instructions

Create a function named extractPassword which takes an array of characters (which includes some trash characters) and returns a string with only valid characters (a - z, A - Z, 0 - 9).

Here’s an example:

extractPassword([‘a’, ‘-’, ‘~’, ‘1’, ‘a’, ‘/’]); // should return the string ‘a1a’
extractPassword([’~’, ‘A’, ‘7’, ‘/’, ‘C’]); // should return the string ‘A7C’

function extractPassword(array) {
  return array.filter(e => e.match(/[a-z0-9]/i)).join('');
}

const result = extractPassword(['~', 'A', '7', '/', 'C'])
console.log(result);
2 curtidas

thank you, you are the best

help
Instructions
var correctGuesses = 0;
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.

Now you need to create a loop that only stops when all 4 characters have been guessed. On each loop iteration there are 3 possible outcomes:

  1. You guess 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 guess 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 guess incorrectly, but correctGuesses is kept with the same value.
    Each outcome has the same probability of happening, but it is random.

Once the password is cracked you should print the message ‘Terminal hacked!’.

Make sure all the messages in your code are in the correct format in order to advance!

wldomiciano help me please
Instructions

Write a function named getValidPassword that takes a two dimensional array as parameter.

Each entry in the first array represents a passcode. You need to find the passcode that has no odd digits and return that passcode from your function.
Here’s an example:

var loggedPasscodes =[
[1, 4, 4, 1],
[1, 2, 3, 1],
[2, 6, 0, 8],
[5, 5, 5, 5],
[4, 3, 4, 3]
];

getValidPassword(loggedPasscodes) // returns the array: [2, 6, 0, 8]

@Zelito_Alves. Please, create a new topic for your question, in Brazilian Portuguese, so that other members can try to help you too.

Instruções

Escreva uma função chamada getValidPassword que use uma matriz bidimensional como parâmetro.

Cada entrada na primeira matriz representa uma senha. Você precisa encontrar a senha que não possui dígitos ímpares e retornar essa senha da sua função.
Aqui está um exemplo:

var logPasscodes = [
[1, 4, 4, 1],
[1, 2, 3, 1],
[2, 6, 0, 8],
[5, 5, 5, 5],
[4, 3, 4, 3]
];

getValidPassword (logsPasscodes) // retorna a matriz: [2, 6, 0, 8]

Socorro
Instruções
var correctGuesses = 0;
Você sabe que a senha do seu alvo tem 4 caracteres, portanto, você precisará forçar com força um caractere de cada vez. Já declaramos a variável correctGuesses que você deve usar para acompanhar quantos caracteres você adivinhou.

Agora você precisa criar um loop que só pare quando todos os 4 caracteres tiverem sido adivinhados. Em cada iteração de loop, existem 3 resultados possíveis:

Você adivinha corretamente, o que aumenta em 1 as estimativas corretas e imprime a mensagem “Caracteres X encontrados” (onde X é substituído pelo número atual de estimativas corretas).

Você adivinha incorretamente e o terminal do seu alvo detectou muitas tentativas, o que redefine as Guias corretas para 0 e imprime a mensagem “Iniciando novamente” no console.

Você adivinha incorretamente, mas o correctGuesses é mantido com o mesmo valor.
Cada resultado tem a mesma probabilidade de acontecer, mas é aleatório.

Depois que a senha for quebrada, você deverá imprimir a mensagem “Terminal hackeado!”.

Verifique se todas as mensagens no seu código estão no formato correto para avançar!