Empurrador de blocos

Published by Mubashir Hassan in

Crie uma função que retorne o estado de um tabuleiro após n movimentos. Há diferentes tipos de blocos no tabuleiro, representados como strings.

  • > é um empurrador que se move para a direita a cada turno e empurra um bloco para a direita se ele ocupar o mesmo espaço que o empurrador.
  • '#' é um bloco que pode ser empurrado pelo empurrador. Se um bloco for empurrado sobre outro bloco, o outro bloco também entra na cadeia de empurrão.
  • '-' é um espaço vazio para o qual um bloco pode ser empurrado.

Observe que o empurrador pode empurrar qualquer quantidade de blocos de uma só vez, mas sempre para quando a cadeia de empurrão atinge o fim da lista.

Exemplos

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

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

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

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

Observações

  • Pode haver mais de um empurrador no tabuleiro ao mesmo tempo.
  • Os empurradores são blocos sólidos, então uma cadeia de empurradores também deve parar ao atingir o fim da lista.