Introdução
Você está jogando um jogo de correspondência, no qual as moedas são inseridas no topo e caem no fundo (na moeda de cima) devido à gravidade.
Então, é isso
O <- inserting this coin
OO O
OOOOO
vai se tornar isso
O
OO O
OOOOO
Agora imagine alguém girando o quadro no sentido horário. O seguinte acontecerá:
1. A placa é girada
OOO
OO
O
OO
O
2. Moedas caem devido à gravidade
O
O
OO
OO
OOO
Sua tarefa
Sua tarefa é simular a rotação do quadro escrevendo um programa ou uma função. Por uma questão de simplicidade, estamos lidando apenas com um tipo de moeda (não é um jogo de correspondência muito emocionante, é…). Você pode assumir que a gravidade é aplicada somente depois que a rotação estiver concluída. A placa é girada no sentido horário.
Entrada
A entrada será uma string, que contém 3 tipos de caracteres:
- O (capital o) OR 0 (zero) - uma moeda (você decide qual delas sua solução suporta)
- (espaço) - um campo vazio
- \ n (nova linha) - fim de linha
A entrada representa o estado do quadro. Você pode assumir que a entrada está bem formada e contém um estado válido do tabuleiro (nenhuma moeda está flutuando). A entrada pode ser um parâmetro de função ou pode ser lida a partir da entrada padrão ou de um arquivo.
Resultado
A saída é o novo estado da placa após a rotação. A saída contém os mesmos 3 tipos de caracteres que a entrada. A saída pode ser retornada da sua função ou pode ser gravada na saída padrão ou em um arquivo.
Amostra
Entrada1:
O
OO O
OOOOO
Saída1:
O
O
OO
OO
OOO
Entrada2:
O O
O O
Saída2:
OO
OO
Você pode usar qualquer idioma e a biblioteca padrão do idioma escolhido. O programa mais curto em bytes vence.