7

#PlatziCodingChallenge - Memory (parte 2 y 3)

19. Memory (part2)!

Lleva un registro del Orden en el que aparecieron los caracteres

20. Memory (part3)!

Dale al usuario un menú para que elija en el orden correcto los caracteres

Escribe tu comentario
+ 2
Ordenar por:
2
19943Puntos

Memory en JavaScript aplicando Programación Orientada a Objetos:

//Memory en JavaScriptclass Memory {

    constructor() {
        this.chars = ['"', '#', '$', '%', '(', ')', '/', '&'] //8 caracteresthis.numberChars = 4this.part1() //Muestra 4 caracteres entre los siguientes de forma aleatoria: "#$%()/&this.part2() //Lleva un registro del Orden en el que aparecieron los caracteresthis.part3() //Dale al usuario un menú para que elija en el orden correcto los caracteres
    }

    part1() {
        this.charsList = []
        for (let i = 0; i < this.numberChars; i++) {
            let randomChar
            do {
                randomChar = this.chars[Math.floor(Math.random() * this.chars.length)]
            } while (this.charsList.includes(randomChar))
            this.charsList.push(randomChar)
        }
    }

    part2() {
        let message = (
            `Caracteres aleatorios:
            1. ${this.charsList[0]} 
            2. ${this.charsList[1]} 
            3. ${this.charsList[2]} 
            4. ${this.charsList[3]} 
            Acuérdate del orden`
        )
        alert(message)
    }

    part3() {
        let answer
        do {
            let message = (
                `Lista de caracteres:
                0. ${this.chars[0]}     1. ${this.chars[1]}
                2. ${this.chars[2]}     3. ${this.chars[3]}
                4. ${this.chars[4]}     5. ${this.chars[5]}
                6. ${this.chars[6]}     7. ${this.chars[7]}
                Introduce los números correspondientes al orden de los caracteres anteriores
                Ejemplo: #$%( = 1234`
            )
            answer = prompt(message).split('')
            if (answer.length != this.numberChars) alert('Debes ingresar 4 números. Intenta otra vez')
        } while (answer.length != this.numberChars)
        let answerChars = answer.map(number => this.chars[number])
        // Verificando respuestaif (answerChars.toString() === this.charsList.toString()) {
            alert('Felicidades, escribiste el orden correcto')
        } else {
            alert('Lo siento, ese no es el orden correcto')
        }
    }
}

//Inicia el juegowindow.memory = new Memory()
1
7689Puntos

Lo hice como un juego:

<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Memory Parte 2 y 3</title></head><style>
  * {
    margin: 0;
  }

  .contenedor {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100vh;
  }

  .section {
    padding: 0.25rem2rem;
  }

  .inputs {
    display: inherit;
    align-items: center;
    padding: 2rem;
  } 

  #resultado {
    font-size: 24px;
  }

  .escondido {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: 100%;
    height: 50%;
  }

  .pantalla {
    display: flex;
    justify-content: center;
    width: 100%;
    height: 50%;
  }
  
  .pantallah2 {
    margin-top: 45px;
    width: 80%;
    font-size: 35px;
    border-radius: 10px;
    background-color: lightblue;
    display: flex;
    align-items: center;
    padding-left: 15px;
    justify-content: center;
  }

  .pad {
    border-radius: 15px;
    background-color: rgb(88, 88, 88);
    display: grid;
    width: 80%;
    height: 50%;
    grid-template-columns: 10%16%16%16%16%16%10%;
    grid-template-rows: 5%45%45%5% ;
    grid-template-areas: 
      ". . . . . . ."". quotes hash dollar perc clear ."". par1 par2 slash something equal ."". . . . . . ."
      ;
  }

  #quotes {
    grid-area: quotes;
  }
  #hash {
    grid-area: hash;
  }
  #dollar {
    grid-area: dollar;
  }
  #perc {
    grid-area: perc;
  }
  #par1 {
    grid-area: par1;
  }
  #par2 {
    grid-area: par2;
  }
  #slash {
    grid-area: slash;
  }
  #something {
    grid-area: something;
  }
  #clear {
    grid-area: clear;
  }
  #equal {
    grid-area: equal;
  }

  .btn {
    background-color: gray;
    padding: 15px;
    margin: 8px;
    border-radius: 15px;
    outline: none;
    font-size: 24px;
    border: none;
    color: white;
    text-align: center;
  }

  .btn:hover {
    cursor: pointer;
    transform: scale(1.1);
  }

  #contra {
    padding: 020px;
    width: 95%;
  }
</style><bodyid='body'><divclass="contenedor"><h1id='titulo'style="margin-bottom: 24px;">Click para mostrar 4 caracteres entre "#$%()/& de forma aleatoria</h1><buttononclick="escribe()"class="btn"id='btn'>Click</button><buttonstyle="display: none;"onclick="continuar()"class="btn"id='btn-continuar'>Continuar...</button><buttonstyle="display: none;"onclick="repetir()"class="btn"id='btn-reiniciar'>Reiniciar...</button><divstyle="margin-top: 24px;"id="resultado"></div><divid='escondido'class='escondido'style="display: none;"><divclass="pantalla"><h2cols="18"row="1"id="valores"></h2></div><divclass="pad"><inputclass="btn"type="button"value='"'id="quotes"><inputclass="btn"type="button"value="#"id="hash"><inputclass="btn"type="button"value="$"id="dollar"><inputclass="btn"type="button"value="%"id="perc"><inputclass="btn"type="button"value="("id="par1"><inputclass="btn"type="button"value=")"id="par2"><inputclass="btn"type="button"value="/"id="slash"><inputclass="btn"type="button"value="&"id="something"><inputclass="btn"type="button"value="◀"id="clear"><inputclass="btn"type="button"value="="id="equal"></div></div></div><script>const alt = []
    functionescribe() {
      const boton = document.getElementById('btn')
      const botonContinuar = document.getElementById('btn-continuar')
      const array = ['34', '35', '36', '37', '38', '40', '41', '47'] 
      for (let i = 0; i < 4; i++){
        let num = Math.floor(Math.random()*8)
        alt[i] = array[num]
      }
      let resultado = ''
      alt.map(charcode => resultado = resultado + String.fromCharCode(charcode))
      document.getElementById('resultado').innerHTML = `Salió ${resultado} de forma aleatoria`
      boton.style = "display: none;"
      botonContinuar.style = "display: inline-block;"
    }
    functioncontinuar () {
      const botonContinuar = document.getElementById('btn-continuar')
      botonContinuar.style = "display: none;"const botonReiniciar = document.getElementById('btn-reiniciar')
      const titulo = document.getElementById('titulo')
      titulo.innerHTML = 'Escoja el orden que aparecio previamente...'const resultado = document.getElementById('resultado')
      resultado.innerHTML = ''const escondido = document.getElementById('escondido')
      escondido.style = 'display: flex'const pantalla = document.getElementById('valores')

      const quotes = document.getElementById('quotes')
      const hash = document.getElementById('hash')
      const dollar = document.getElementById('dollar')
      const perc = document.getElementById('perc')
      const par1 = document.getElementById('par1')
      const par2 = document.getElementById('par2')
      const slash = document.getElementById('slash')
      const something = document.getElementById('something')
      const clear = document.getElementById('clear')
      const equal = document.getElementById('equal')
      
      let cant = 4

      quotes.onclick = () => {
        if (pantalla.innerHTML.length < cant){
          pantalla.innerHTML = pantalla.innerHTML + '"'
        }
      }
      hash.onclick = () => {
        if (pantalla.innerHTML.length < cant){
          pantalla.innerHTML = pantalla.innerHTML + '#'
        }
      }
      dollar.onclick = () => {
        if (pantalla.innerHTML.length < cant){
          pantalla.innerHTML = pantalla.innerHTML + '$'
        }
      }
      perc.onclick = () => {
        if (pantalla.innerHTML.length < cant){
          pantalla.innerHTML = pantalla.innerHTML + '%'
        }
      }
      par1.onclick = () => {
        if (pantalla.innerHTML.length < cant){
          pantalla.innerHTML = pantalla.innerHTML + '('
        }
      }
      par2.onclick = () => {
        if (pantalla.innerHTML.length < cant){
          pantalla.innerHTML = pantalla.innerHTML + ')'
        }
      }
      slash.onclick = () => {
        if (pantalla.innerHTML.length < cant){
          pantalla.innerHTML = pantalla.innerHTML + '/'
        }
      }
      something.onclick = () => {
        if (pantalla.innerHTML.length < cant){
          pantalla.innerHTML = pantalla.innerHTML + '&'
          cant = cant + 4
        }
      }
      clear.onclick = () => {
        const array = pantalla.innerHTML.replace(/amp;/g, '').split('')
        const borrar = array.pop()
        if (borrar === '&'){
          cant = cant - 4
        }
        pantalla.innerHTML = array.join('')
      }
      equal.onclick = () => {
        cant = 4let respuesta = pantalla.innerHTML.replace(/amp;/g, '').split('')
        let charRes = []
        respuesta.map( char => {
          charRes.push(char.charCodeAt(0))
        })
        for (let i = 0; i < alt.length; i++){
          alt[i] = parseInt(alt[i])
        }
        if (alt[0] === charRes[0] && alt[1] === charRes[1] && alt[2] === charRes[2] && alt[3] === charRes[3]){
          escondido.style = 'display: none;'
          titulo.innerHTML = 'Felicidades! tu respuesta es correcta, si era igual a la solución'
          botonReiniciar.style = 'display: inline-block'
        } else {
          escondido.style = 'display: none;'
          titulo.innerHTML = 'Lastima! tu respuesta es incorrecta, no es igual a la solución'
          botonReiniciar.style = 'display: inline-block'
        }
      }
    }
    functionrepetir() {
      const boton = document.getElementById('btn')
      boton.style = 'display: inline-block;'const botonReiniciar = document.getElementById('btn-reiniciar')
      botonReiniciar.style = 'display: none;'const titulo = document.getElementById('titulo')
      titulo.innerHTML = 'Click para mostrar 4 caracteres entre "#$%()/& de forma aleatoria'const pantalla = document.getElementById('valores')
      pantalla.innerHTML = ''
    }
  </script></body></html>
1
7689Puntos
7 meses

Jajajaja, no sabía que el siguiente reto era decir si gano o no, bueno ya lo hice de todas formas.

1

Memory part3 en Python 😃

import random
caracteres=['"','#','$','%','(',')','/','&']
mensaje='''Tenemos los siguientes caracteres 
            1-->"
            2-->#
            3-->$
            4-->%
            5-->(
            6-->)
            7-->/
            8-->& '''
seleccion=[]
for s in range(4):
    print(mensaje)
    elegido=int(input('Elige un numero: '))
    elegido=elegido-1
    elegi=caracteres[elegido]
    seleccion.append(elegi)
seleccion=''.join(seleccion)
print(f'Los caracteres elegidos por usted son: {seleccion}')    

nuevo=[]
cont=0for i in range(4):
    cont=cont+1
    aleatorio=random.choice(caracteres)
    print(f'En la posicion {cont} se tiene el caracter: {aleatorio}')
    nuevo.append(aleatorio)
    caracteres.remove(aleatorio)
nuevo=''.join(nuevo)
print(f'Y los caracteres elegidos aleatoriamente son: {nuevo}')```
1
2345Puntos

Memory Parte 2 y Parte 3

Siendo sincero, no sé si comprendí bien lo que se solicitaba pero aquí les dejo mi versión:

Muestro aleatoriamente 4 caracteres, guardo este orden y lo comparo con el orden que el usuario ingresa según valores del menú.

//                0 1 2 3 4 5 6 7 var caracteres = '",#,$,%,(,),/,&'var arrChar = caracteres.split(',')
var long = arrChar.length;
var rdm = [];

for( let i = 0; i < long; i++){
    rdm[i] = arrChar[Math.round(Math.random() * (long - 1))]
}

var res = rdm.slice(0,4)

var ordenUsuario = prompt(`Caracteres: ${res.join('')} 
Digite el orden correcto de los caracteres mostrados: 
" --> 0 ,   # --> 1
$ --> 2 ,   % --> 3
( --> 4 ,   ) --> 5
/ --> 6 ,   & --> 7`);

(parseToIndex(res) === ordenUsuario)
?alert('Orden digitado correctamente!')
:alert('No es el orden correcto, favor reintente.')

functionparseToIndex(arr){
    var a ="";
    for(let c of res){
        a += arrChar.indexOf(c)   
    }
    return a;
}

Solicud de digitar orden de caracteresprompt.jpg

correcto.jpg
incorrecto.jpg
1

En Python:

  1. Memory (part 2):
""" Programa que muestra de forma aleatoria 4 caracteres entre los siguientes: "#$%()/& y lleva un registro del orden en el que aparecieron los caracteres.
Program that randomly displays 4 characters among the following: "#$%()/& and keep record of the order in which the characters appeared. """import random

if __name__ == "__main__":
    print('Memory part 2!!!')
    chars = ['"','#','$','%','(',')','/','&']
    random_chars = []
    print('Your 4 random characters are:')
    for i in range(1,5):
        random_char = random.choice(chars)
        random_chars.append(random_char)
        print('Random character {}: {}' .format(i, random_char))
  1. Memory (part 3):
""" Programa que muestra de forma aleatoria 4 caracteres entre los siguientes: "#$%()/& y lleva un registro del orden en el que aparecieron los caracteres y da al usuario un menú para que elija en el orden correcto los caracteres.
Program that randomly displays 4charactersamongthe following: "#$%()/& and keep record of the order in which the characters appeared and gives to user a menu to choose the characters in the right order. """

import randomif __name__ == "__main__":
    print('Memory part 2!!!')
    chars = ['"','#','$','%','(',')','/','&']
    random_chars = []
    print('Your 4 random characters are:')
    for i in range(1,5):
        random_char = random.choice(chars)
        random_chars.append(random_char)
        print('Random character {}: {}' .format(i, random_char))
    input('Enter any key to continue... ')
    forcharinchars:
        ifchars.index(char) % 2 ==0:
            print('{}-> {}   {}-> {}' .format(chars.index(char)+1, char, chars.index(char)+2, chars[chars.index(char)+1]))
    wrong = 0for i in range (1,5):
        number = input('Please insert the digit correspondent to the random character number {}: ' .format(i))
        whilenotnumber == str(chars.index(random_chars[i-1]) + 1):
            wrong += 1number = input(' Wrong digit correspondent to the random character number {}, try again: ' .format(i))
    print('Congratulations you remembered the order!!! Number of wrong tries: {}' .format(wrong))
1

JavaScript

Dia 19

functionmemory(numbers) {
    var result           = '';
    var characters       = '"#$%()/&';
    var charactersNumbers = characters.length;
    for ( var i = 0; i < numbers; i++ ) {
       result += characters.charAt(Math.floor(Math.random() * charactersNumbers));
    }
    
    registro = ''
    arr = Array.from(result)
    for(i = 0; i < result.length; i++) {
       registro += `
       ${i+1} = ${arr[i]}
        `
    }
    alert(`Simbolos: 
    ${registro}`)
}
 

memory(4)

Dia 20

functionmemory(number) {
    var result           = '';
    var characters       = '"#$%()/&';
    var charactersNumbers = characters.length;
    for ( var i = 0; i < number; i++ ) {
       result += characters.charAt(Math.floor(Math.random() * charactersNumbers));
    }
    return result
}


functionorder(parameter) {
    var menu = prompt(`
                Caracteres: ${memory(parameter)}
                
                Ingresa en orden los caracteres mostrados:
                    `)
    return menu
}

order(4)```

1
13595Puntos

Mi codigo es un poco largo por que incluye los 3 retos pero aqui esta:

play();

//Menu de la parte 3asyncfunctionplay() {
  alert(
    "Press Ok when you are ready, \n You will have 5 seconds to memorize the characters."
  );
  const ramdomChars = randomCharacter();
  const charArray = saveCharacters(ramdomChars);

  //Muestra un timer y el texto por 5 segundosfor (let i = 1; i < 6; i++) {
    document.getElementById("charText").innerHTML = `${ramdomChars}`;
    document.getElementById("time").innerHTML = `${i}`;
    await wait(1000);
  }

  document.getElementById("charText").innerHTML = "";
  document.getElementById("time").innerHTML = "";

  let userInput = prompt("Can you remember the characters?", "");  
  
  //Evalua si las cadenas de inputs coincidenif(rememberCharacters(userInput, charArray)){
    alert("Excellent memory, you remembered the characters");
  }else{
    alert(`Sorry the characters where ${ramdomChars}`);
  }
}

asyncfunctionwait(ms) {
  returnnewPromise((resolve) => {
    setTimeout(resolve, ms);
  });
}

functionrandomCharacter() {
  let result = "";

  for (let i = 0; i < 4; i++) {
    let randomNumber = Math.floor(Math.random() * (41 - 34) + 34);
    let character = String.fromCharCode(randomNumber);
    result = result.concat(character);
  }

  return result;
}

//Parte #2functionsaveCharacters(str) {
  let values = [];

  for (let i = 0; i < str.length; i++) {
    const charVal = str.charCodeAt(i);
    values.push(charVal);
  }

  return values;
}

functionrememberCharacters(userInput, charArray) {
  for (let i = 0; i < userInput.length; i++) {
    if (userInput.charCodeAt(i) !== charArray[i]) {
      returnfalse;
    }
  }

  returntrue;
}
1
26494Puntos
7 meses

Esa es la finalidad, que de los 3 retos salga un solo programa. 😄

1
26494Puntos

Así terminé este reto con las últimas dos partes:

importrandom

CARACTERES = ['\"', '#', '$', '%', '(', ')', '/', '&']

seleccion = random.choices(CARACTERES, k = 4)

simbolos = {}
for i, char in enumerate(seleccion):
    simbolos[i] = char

simbolos_desordenados = list(simbolos.values())
random.shuffle(simbolos_desordenados)
simbolos_desordenados = ''.join(simbolos_desordenados)

# print(simbolos) #Scaffolding

print(f'Los símbolos fueron: {simbolos_desordenados}. Adivina el orden en que se ingresaron.')

simbolos_elegidos = {}
while simbolos_elegidos != simbolos:    

    simbolos_ingresados = input('\nIngresa todos los simbolos en el orden: ')
    
    for i, char in enumerate(simbolos_ingresados):
        simbolos_elegidos[i] = charif simbolos_elegidos != simbolos:
        print('\tIncorrecto. Intenta de nuevo.')

print(f'¡Felicidades! El orden es {simbolos}.')



1
6327Puntos

Memory v3 y v4 en Java ☕️ ☕️

public class MemoryV4 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        char[] allowedCharacters = "\"#$%()/&".toCharArray();
        StringBuffer cadena = new StringBuffer();
        SecureRandom random = new SecureRandom();
        ArrayList<String> arrayOrden = new ArrayList<>();int salir = 0;
        String cadenaUsuario;while (salir != 1) {
            for (int i = 0; i < 4; i++) {
                cadena.append(allowedCharacters[ random.nextInt(allowedCharacters.length) ]);
            }
            arrayOrden.add(cadena.toString());System.out.println(cadena);
            cadena.delete(0, cadena.length()); // reiniciar el StringBufferSystem.out.println("Desea generar otra cadena de texto? (ingrese 1 para salir o 2 para seguir con el programa)");
            salir = scanner.nextInt();
        }
        System.out.println("Ingresa la última cadena en el orden correcto");
        cadenaUsuario = scanner.next();if (arrayOrden.get(arrayOrden.size()-1).equals(cadenaUsuario)) {
            System.out.println("Ganaste! :)  el orden es el correcto");
        } else {
            System.out.println("Perdiste :(");
        }
        System.out.println();System.out.println("El orden fue: "+ arrayOrden.toString());
    }
}

Ejecución del programa

1
18961Puntos
  • 19
const memory2 = () => {
    const characters = ['"','#','$','%','(',')','/','&'];
    let result = [];

    for(let i = 0; i < characters.length; i++) {
        result += characters[Math.floor(Math.random() * characters.length)]; 
        console.log(`In the position ${i + 1} => The result is ${result[i]}`) 
    }
    console.log(`All order is: ${result}`)
}
// memory2()
1
18961Puntos
5 meses
  • 20
const memory3 = () => {
    const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
    letresult = [];
    
    for(let i = 0; i < numbers.length; i++) {
        result += numbers[Math.floor(Math.random() * numbers.length)]; 
        console.log(`In the position ${i + 1} => Theresultis ${result[i]}`);
    }

    for(let n = 0; n <  numbers.length; n++) {
        let correctPosition = prompt('Enter the correct positions of the symbols show');
        if(correctPosition === result[n]) {
            console.log('Great!! The symbol entered is correct')
        } else {
            console.log('Oh, that symbol position is wrong. Try again!!')
        }
    }
    console.log(`All order is: ${result}`)
}
memory3()```
1

Memory part 2 en Python 😃

importrandom
caracteres=['"','#','$','%','(',')','/','&']
nuevo=[]
cont=0for i in range(4):
    cont=cont+1
    aleatorio=random.choice(caracteres)
    print(f'En la posicion {cont} se tiene el caracter: {aleatorio}')
    nuevo.append(aleatorio)
    caracteres.remove(aleatorio)
nuevo=''.join(nuevo)
print(f'Los caracteres elegidos son: {nuevo}')```
1
12398Puntos

En fin, no me quedó claro el reto pero ahí les va el Memory 19 en Python:

import random

defposicion_inicial(character):for x in character:
    indice = character.index(x)
    print('Posicion {} del símbolo: {} '. format(indice, x))
    

defseleccion_aleatoria(character):for i in range(4):
    aleatorio = random.randint(0,len(character) - 1)
    simbolo = character[aleatorio]
    memory.append(simbolo)
    resultado = ''.join(memory)
    print('El símbolo {} corresponde a la posición: {} '. format(simbolo, aleatorio))
    
  print('Se escogieron los siguiens símbolos: ',resultado)

if __name__ == "__main__":
  character = '"#$%()/&'
  memory = []
  seleccion_aleatoria(character)
  print('-'*15)
  
  posicion_inicial(character)
0
import random
import os


defmain():
    caracteres = ['#','$','%','(',')','/','&']
    memoria = []
    control = True
    camino = '0'for i in range(4):
        caracter_aux = random.choice(caracteres)
        print(f'Caracter {i + 1} : {caracter_aux}')
        memoria.append(caracter_aux)
        
    print('Recuerda los caracteres')
    camino = input("""Presiona "c" para continuar""")
    if camino == 'c':
        os.system("clear")
        for i in range(4):
            car = input(f'Cual era el caracter {i + 1}: ')
            if str(car) == str(memoria[i]):
                control = Trueelse:
                control = Falseif control == True:
            print('Correcto')
        else:
            print('Error')
    else:
        print('Selecciona una opcion valida')



if __name__ == '__main__':
    main()
0
12398Puntos

Y el reto 20 en Python.
A ver como me va en las siguientes:

import random

defposicion_inicial(character):for x in character:
    indice = character.index(x)
    print('  Posicion {} del símbolo: {} '. format(indice, x))
    

defseleccion_de_usuario(character, limite_simbolo):
  posicion_inicial(character)
  memory = []
  for i in range(limite_simbolo):
    indice_simbolo = int(input('Selecciona el índice: '))
    simbolo = character[indice_simbolo]
    memory.append(simbolo)
    resultado = ''.join(memory)

  print('Escogiste los símbolos: {}'. format(resultado))

if __name__ == "__main__":
  character = '"#$%()/&'
  
  print('Escoga los símbolos que más te gustan')
  print('Marque el número para escoger:')
  
  limite_simbolo = int(input('Cuántos símbolos quieres : '))
  
  print('-'*15)

  seleccion_de_usuario(character, limite_simbolo)