1

#PlatziCodingChallenge - Movimiento aleatorio

Tienes un robot que se mueve aleatoriamente en cuatro direcciones (arriba, abajo, izquierda y derecha) en un plano de 2 dimensiones (x, y) partiendo del origen (0, 0). Debes escribir un programa que indique cuantos pasos dará, registrar cuantos pasos dio en cada dirección y en que coordenada terminó su recorrido.

Escribe tu comentario
+ 2
Ordenar por:
1

En Python 😃 El programa indica un hipotetico robot con movimientos aleatorios y se registra que movimientos hizo.

import random
x=0
y=0
direcciones=['arriba','abajo','derecho','izquierdo']
secuencias=random.randint(1,100)
print(f'El robot tuvo {secuencias} secuencias')
for i in range(secuencias):
    direccion=random.choice(direcciones)
    pasos=random.randint(1,100)
    if direccion=='arriba':
        y=y+pasos
        print(f'Se movío ariba {pasos} pasos')
    elif direccion=='abajo':
        y=y-pasos
        print(f'Se movió en abajo {pasos} pasos')
    elif direccion=='derecho':
        x=x+pasos
        print(f'Se movió a la derecha {pasos} pasos')
    elif direccion=='izquierdo':
        x=x-pasos
        print(f'Se movió a la izquierda {pasos} pasos')
    else:
        pass
print(f'El robot se movió {x} en la coordenada x, y {y} en la coordenada y')```
1
19943Puntos

Movimiento Aleatorio en JavaScript

// Movimiento Aleatorio en JavaScriptconst DIRECCIONES = ['arriba', 'abajo', 'izquierda', 'derecha']

class Robot {
  constructor() {
    this.posicion = { x: 0, y: 0 }
    this.movimientos = { arriba: 0, abajo: 0, izquierda: 0, derecha: 0 }
  }
  mover(direccion) {
    switch (direccion) {
      case'arriba':
        this.posicion.y++
        break;
      case'abajo':
        this.posicion.y--
        break;
      case'izquierda':
        this.posicion.x--
        break;
      case'derecha':
        this.posicion.x++
        break;
    }
    this.movimientos[direccion]++
  }
}

functionmovimientosAleatorios(robot, pasos) {
  for (let i = 0; i < pasos; i++) {
    let direccion = DIRECCIONES[Math.floor(Math.random() * 4)]
    robot.mover(direccion)
  }
  console.log(robot.movimientos)
  console.log(robot.posicion)
}

let miRobot = new Robot()
let numeroPasos = 5
movimientosAleatorios(miRobot, numeroPasos)
// {arriba: 2, abajo: 1, izquierda: 1, derecha: 1}// {x: 0, y: 1}
1
7689Puntos

Dejo aquí el respositorio: https://github.com/Edmundo0994/PlatziCodeChallenge/tree/master/49.RobotPasos
Aquí el código:

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

  .contenedor {
    height: 100vh;
    display: grid;
    grid-template-rows: 10%80%10%;
    grid-template-columns: 100%;
    grid-template-areas: 
    'titulo''malla''botones'
    ;
    min-width: 945px;
    max-width: 945px;
  }

  .titulo {
    grid-area: titulo;
  }

  .mallaContenedor {
    background-image: url('./Malla.png');
    background-size: 945px525px;
    grid-area: malla;
  }

  .malla {
    justify-content: center;
    align-self: center;
    display: grid;
    grid-template-rows: repeat(21, 25px);
    grid-template-columns: repeat(21, 45px);
  }

  #robot {
    height: 25px; 
    justify-self: center;
    transform: translate(450px, 250px);
  }

  .botones {
    grid-area: botones;
    display: flex;
    justify-content:space-around;
    align-items: center;
  }
  
  .btn {
    border: 2px solid black;
    border-radius: 6px;
    cursor: pointer;
    padding: 10px;
  }

</style><body><divclass="contenedor"><h1style="justify-self: center;"class="titulo">Movimiento Aleatorio</h1><divclass='mallaContenedor'><divclass="malla"><imgid="robot"src="https://i.pinimg.com/originals/17/f6/8e/17f68e401b36b8b87346557940a40970.png"/></div></div><divclass='botones'><buttonid="empezar"onclick="empezar()"class="btn">Empezar...</button><span>Cuantos pasos dará: <inputid="pasos"type="text"></span><buttonid="reset"onclick="reset()"class="btn">Reset...</button></div></div><script>// posibilidades 0 arriba, 1 derecha, 2 abajo, 3 izquierdaconst robot = document.getElementById('robot')
    let total = {
      arriba: 0,
      derecha: 0,
      abajo: 0,
      izquierda: 0,
    }
    let coordenadas = [0,0]
    const btnEmpezar = document.getElementById('empezar')
    const btnReset = document.getElementById('reset')
    btnReset.disabled = truefunctionempezar() {
      btnEmpezar.disabled = true
      btnReset.disabled = truelet pasosDados = 0const pasosMax = parseInt(document.getElementById('pasos').value)
      const movimiento = setInterval(() => {
        let azar = Math.floor(Math.random()*4)
        switch (azar){
          case0:
            console.log('arriba')
            pasosDados++
            total.arriba++
            coordenadas[1]++
            break;
          case1:
            console.log('derecha')
            pasosDados++
            total.derecha++
            coordenadas[0]++
            break;
          case2:
            console.log('abajo')
            pasosDados++
            total.abajo++
            coordenadas[1]--
            break;
          case3:
            console.log('izquierda')
            pasosDados++
            total.izquierda++
            coordenadas[0]--
            break;
        }
        robot.style = `transform: translate(${450 + (45 * coordenadas[0])}px, ${250 - (25 * coordenadas[1])}px);`console.log(azar, total, coordenadas)
        if (pasosDados >= pasosMax) {
          clearInterval(movimiento)
          setTimeout(() => {
            alert(`
              Se movio ${total.arriba} veces arriba
              Se movio ${total.derecha} veces a la derecha
              Se movio ${total.abajo} veces abajo
              Se movio ${total.izquierda} veces a la izquierda
              Su coordenada final es (${coordenadas[0]}, ${coordenadas[1]})
            `)
          }, 200);
          btnReset.disabled = false
        }
      }, 700);
    }

    functionreset() {
      btnEmpezar.disabled = false
      btnReset.disabled = true
      total = {
        arriba: 0,
        derecha: 0,
        abajo: 0,
        izquierda: 0,
      }
      coordenadas = [0,0]
      robot.style = `transform: translate(${450 + (45 * coordenadas[0])}px, ${250 - (25 * coordenadas[1])}px);`
    }
  </script></body></html>