Inspirado por este desafio
Objetivo:
O objetivo é desenhar ondas batendo na praia.
Entrada:
Você receberá 3 números inteiros (no formato que desejar) como entrada.
O primeiro número inteiro será o comprimento do desenho. O segundo número inteiro será o índice do banco de areia, onde as ondas começam a subir (pelo menos 3 espaços da praia).
O terceiro número inteiro será o espaçamento entre as ondas (pelo menos 3, pode ser maior que o comprimento do desenho; nesse caso, você desenha apenas uma onda)
Resultado:
A saída será uma caixa de caracteres que mostra as ondas batendo na praia. O desenho deve terminar quando a primeira onda terminar de bater na praia.
A princípio, a onda é mostrada como um swell ( _-_
).
À medida que a onda passa pelo banco de areia, ela começa a crista ( /c_
).
Finalmente, a onda bate na praia ( /c.
=> _-_
=> ___
=> __.
).
Exemplos:
Entrada: 14 4 6
Resultado:
-___________..
_-__________..
__-_________..
___-________..
___/c_______..
____/c______..
-____/c_____..
_-____/c____..
__-____/c___..
___-____/c__..
___/c____/c_..
____/c____/c..
-____/c____-_.
_-____/c_____.
__-____/c___..
Entrada: 10, 2, 11
Resultado:
-_______..
_-______..
_/c_____..
__/c____..
___/c___..
____/c__..
_____/c_..
______/c..
_______-_.
_________.
________..
Entrada: 6 0 3
c___..
/c__..
_/c_..
c_/c..
/c_-_.
_/c__.
c_/c..
Regras:
Aplicam-se brechas padrão
Isso é código-golfe, então o código mais curto ganha
·
não é ASCII, o que pode excluir alguns idiomas. Pode ser substituído por.
?·
vez do período ASCII? (É realmente um bastante grande vitória no meu código.)Respostas:
JavaScript (ES6),
250243 bytesEste código está assumindo a página de código # 1252 e está usando o
·
caractere (0xB7). Aceita entrada como 3 parâmetros distintos(a,b,c)
.Como funciona
Esse código começa com uma sequência como
-______··
e aplica sucessivas expressões regulares em cada iteração para animar as ondas.Por exemplo,
-__
é substituído por_-_
.A princípio, parecia uma ideia razoável. No entanto, o fato de a sequência poder começar com a
c
(como acontece no terceiro caso de teste) torna as coisas significativamente mais complicadas.Casos de teste
Mostrar snippet de código
fonte
Lote,
273243 bytesNota: Trailing space na linha 4. Se apenas os dois caracteres da praia fossem diferentes, eu poderia salvar 3 bytes e vencer o JavaScript!
fonte