EDITAR
Parece que houve alguma confusão após meu erro de digitação no post original, que usava o minúsculo para definir o plano e depois o maiúsculo. Infelizmente, este bug não foi detectado na Sandbox. Como muitos membros escreveram respostas com ambos e como o erro de digitação foi minha culpa, permitirei maiúsculas ou minúsculas na definição do avião. Eu adicionei uma nova regra para isso.
fundo
Eu gosto de animações de arte ascii, como costumo chamá-las, então aqui está outra. Eu não acho que isso seja muito difícil de implementar, então esperamos obter respostas curtas e interessantes.
Para todos os membros da comunidade
Se você melhorar sua resposta, modifique sua contagem de bytes como
contagem de bytes antigos contagem de bytes novos
para que possamos ver seu progresso. Obrigado!
Desafio
Aqui está um avião ascii
--O--
Aqui está uma pista ascii
____| |____
O avião começa em 5 novas linhas acima da pista. Para evitar conflitos entre os sistemas métrico e imperial e fazer deste um desafio verdadeiramente internacional, não mencionarei metros ou pés. Exemplo:
--O--
____| |____
O avião deve pousar exatamente no meio da pista, como mostrado abaixo:
____|--O--|____
Entrada
A posição horizontal inicial do plano é definida por uma entrada inteira que é usada para referenciar a ponta da asa esquerda, ou seja, está entre 0 e 10 inclusive.
Saída
Cada estágio do voo dos aviões deve ser mostrado. Exemplo abaixo (input = 10):
--O--
____| |____
--O--
____| |____
--O--
____| |____
--O--
____| |____
--O--
____| |____
____|--O--|____
Para simplificar, estamos ignorando as leis da perspectiva. A pista permanece do mesmo tamanho à medida que você se aproxima.
Regras
- Atualizar O meio do plano pode ser maiúsculo ou minúsculo, mas o que for escolhido deve ser consistente em todo o código. Se o seu idioma não suportar os caracteres acima, sinta-se à vontade para usar caracteres alternativos ASCII.
- O plano desce 1 linha por quadro.
- O avião só pode mover 1 espaço para a esquerda ou direita cada vez que desce uma linha. Não precisa se mover em cada linha de descida. Desde que termine na pista, você decide quando se move para a direita ou para a esquerda. Você é o piloto!
- Não é necessário tratamento de erros. Você pode assumir que a entrada sempre será um número inteiro válido de 0 a 10, inclusive.
- A saída deve consistir apenas dos caracteres mostrados acima (se o seu idioma não os suportar, consulte a primeira regra editada) e deve ser do mesmo tamanho, ou seja, deve iniciar 6 linhas de altura por 15 caracteres de largura. A altura pode diminuir à medida que avança, como no exemplo acima.
- Programa ou função é bom, mas deve produzir uma saída como mostrado acima.
- Espaços iniciais / finais / novas linhas são ótimos para mim.
- Sinta-se à vontade para limpar a tela entre os quadros de saída, se desejar. Isso não é um requisito.
- Falhas padrão proibidas como de costume (embora eu não ache que haja muitas que ajudariam nesse tipo de desafio).
- Esse é o código do código, portanto a resposta mais curta é obviamente a vencedora e provavelmente obterá a maioria dos votos, mas pode não ser necessariamente aceita como a melhor resposta se alguma solução realmente interessante surgir em algum idioma inesperado, mesmo que seja mais longo. Sinta-se livre para publicar qualquer coisa que atenda às regras, desde que funcione.
Implementação de referência ungolfed em Python 2 disponível em Experimente online! para que você possa ver como ele procura diferentes valores de entrada.