Su tarea es encontrar el destino total de los objetos que están cayendo a un planeta, obtendrá entradas como esta:
7
...#...
.......
#..O..#
.......
...#...
.......
.......
donde O es el planeta y # son los objetos, tenga en cuenta que el planeta atraerá objetos desde las direcciones básicas (NOTICIAS). Deberías generar:
#
#O#
#
es decir, los objetos después de llegar a su destino.
El primer número dado como entrada es la longitud de la cuadrícula (nxn), en el ejemplo anterior es 7.
El objeto siempre debe moverse en la dirección más corta (tenga en cuenta que las direcciones permitidas son solo horizontales y verticales; el objeto no puede moverse en diagonal)
Si un objeto es equidistante de dos direcciones, debe ir en sentido horario:
..#
...
O..
Llegará a este lado:
...
...
O#.
Si un objeto choca con el planeta, se detendrá. Si choca con otro objeto, se convierten en un objeto,
4
.#..
#...
....
.O..
se convertiría:
....
....
.#..
.O..
Un último ejemplo:
6
..#...
.#....
......
.#O...
....#.
......
Salida:
......
......
..#...
.#O#..
......
......
Nota: Debe generar la forma final, de modo que todas las salidas se acepten siempre que muestren la forma final del planeta.
por ejemplo para esta entrada:
...#
....
.O..
....
Debería dar salida:
O#
o
....
....
.O#.
....
Ambos son aceptados.
Este es el código de golf, por lo que la respuesta más corta ganará
Nota 2:
Como habrás notado, un .
representa el vacío, por lo que el camino más corto es el menor número de puntos.
Por ejemplo:
.#.
...
.O.
No se acepta ser
O#
ya que el camino más corto es vertical. Nota 3:
El objeto siempre debe moverse para estar en la misma línea con el planeta en una de las cuatro direcciones (elegir la más corta)
|<#
|
|
-----O------
|
Restricciones:
2 <= n <= 100
Respuestas:
Perl,
156 153148Nuevas líneas de legibilidad. Ejecute con
-0777p
(5 agregados para contar), ingrese a través de STDIN.Más legible:
fuente
$=
la variable 'magick' (que puede ser solo un número entero; nos ahorra 5 caracteres 'int ()') y usar el\G
ancla en el patrón de búsqueda. Aquí establecemos su posición asignando a lapos
función (cuyo argumento predeterminado es$_
).Mathematica, 206 bytes
Algo más legible:
Como puede ver, solo tomo una sola entrada, que es la cadena que contiene el mapa de entrada. Esto se debe a que no usaría el tamaño entero de todos modos. Si insiste en el formato de entrada, puedo cambiar la cadena de entrada al segundo argumento para un carácter más.
En cuanto al algoritmo, solo estoy recopilando todos los
{Δx, Δy}
pares de objetos y busco un par en cada cuadrante con las condiciones a las que se pasóh
. Sospecho que esta también es la parte que podría jugar más golf.fuente
perl, 270 caracteres
3 pasos: 1) encontrar el planeta y los satélites en la entrada, 2) determinar el cuadrante para cada satélite, 3) la salida
Menos golfizado:
fuente