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.
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')```
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}
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>