Empujador de bloques

Published by Mubashir Hassan in

Crea una función que devuelva el estado de un tablero después de n movimientos. Hay distintos tipos de bloques en el tablero, representados como cadenas.

  • > es un empujador que se mueve a la derecha en cada turno y empuja un bloque hacia la derecha si ocupa el mismo espacio que él.
  • '#' es un bloque que el empujador puede empujar. Si un bloque es empujado sobre otro bloque, entonces el otro bloque también se une a la cadena de empuje.
  • '-' es un espacio vacío al que se puede empujar un bloque.

Ten en cuenta que el empujador puede empujar cualquier cantidad de bloques a la vez, pero siempre se detiene si la cadena de empuje llega al final de la lista.

Ejemplos

blockPushing(['-', '>', '#', '-', '#', '-', '-', '-'], 1) ➞ ['-', '-', '>', '#', '#', '-', '-', '-']

blockPushing(['>', '#', '-', '#', '-', '-', '#'], 10) ➞ ['-', '-', '-', '>', '#', '#', '#']

blockPushing(['>', '-', '>', '#', '-', '-', '#', '-'], 2) ➞ ['-', '-', '>', '-', '>', '#', '#', '-']

blockPushing(['>', '>', '>', '-'], 3) ➞ ['-', '>', '>', '>']

Notas

  • Puede haber más de un empujador a la vez en el tablero.
  • Los empujadores son bloques sólidos, así que una cadena de empujadores también debe detenerse al llegar al final de la lista.