Coder Social home page Coder Social logo

reto01's Introduction

Reto 01: Laberinto

Enunciado

Se pretende encontrar un camino de salida en un laberinto. Vamos a suponer que el laberinto es un recinto rectangular dividido en cuadrados, estando cada cuadrado ocupado o bien por un obstáculo (se representa con el carácter #) o bien libre (carácter .).

El perímetro del rectángulo está ocupado por obstáculos, excepto en una o más salidas. Se pretende buscar solamente una salida en el caso de que la hubiera. La siguiente figura recoge un ejemplo de laberinto:

Ejemplo de laberito
  0 1 2 3 4 5 6 7 8 9 10
0 # # # # # # # # # # #
1 # . . # # # . . . # #
2 # # . . . # . # # . #
3 # . . # . # . # . . #
4 # # # . . . . # # # #
5 # . . . # # # . . . #
6 # . # . . . . . # . #
7 # # # # # # # # # . #

Comenzamos en algún lugar dentro del laberinto (que no sea un obstáculo, es decir, no se puede comenzar en un cuadrado que contenga el carácter # ), y tenemos que encontrar un camino hasta la salida. Desde una posición del laberinto, podemos movernos a las casillas situadas arriba, abajo, a la izquierda o a la derecha, pero siempre que dicha casilla no esté ocupada por un obstáculo.

Podemos representar el laberinto mediante una matriz bidimensional de tipo char. El carácter * marca cada posición que está en el camino desde el punto indicado como comienzo hasta la salida.

Como resultado de la ejecución, el programa mostrará el camino de salida del laberinto (si lo hubiese) y también las rutas sin salida que se han seguido durante la búsqueda. A continuación se muestra la salida obtenida cuando el cuadrado de comienzo es (1,1).

Warning
A partir de un determinado punto de comienzo, puede ser que no exista ruta de salida. En el ejemplo de arriba, si el cuadrado de comienzo es el (2, 9).

Entrada

Como entrada el programa recibirá los siguienres argumentos:

  1. Nombre del fichero donde se encuentra el laberinto.

  2. Coordenada x (horizontal) del laberinto.

  3. Coordenada y (vertical) del laberinto.

El programa debe llamarse reto01 y debe poder ejecutarse desde la consola.

Ejemplo de llamada
./reto01 laberinto01 1 1

El fichero se encuentra en texto plano. Por ejemplo el contenido puede ser el siguiente.

Fichero: laberinto
###########
#..###...##
##...#.##.#
#..#.#.#..#
###....####
#...###...#
#.#.....#.#
#########.#

Salida

En caso de que el laberinto no pueda ser resuelto devolverá por salida de errores (stderr) el siguiente mensaje:

Error: No se puede resolver el laberinto

Si la resolución ha sido correcta, el programa no debe devolver nada por salida estandar (stdout). Debe volcar a un fichero de texto plano llamado igual que el fichero de entrada pero terminado en _resuelto.

En el caso del laberinto del ejemplo anterior, el fichero deberá contener lo siguiente:

Fichero: laberinto_resuelto
###########
#**###...##
##***#.##.#
#..#*#.#..#
###**..####
#..*###***#
#.#*****#*#
#########*#

Evaluación

A la hora de evaluar el programa se aplicarán las siguientes reglas:

  • Si el programa resuelve correctamente todos los laberintos: +10 puntos

  • Cada prueba que no pase el programa: -1 punto

  • Por cada memory leak: -0.5 puntos

La nota máxima es 10 y no hay nota mínima.

reto01's People

Contributors

bigomby avatar

Watchers

James Cloos avatar Alberto Rodríguez avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.