O desafio é seguir (desenhar) o caminho:
^n
- até n linhasvn
- para baixo por n linhas>n
- direito por n posições de caracteres<n
- deixado por n posições de caracteres
n
é um número inteiro maior que zero (ou seja, você não pode receber um comando como>-2
).- Não há separadores entre os comandos, a entrada bem formada é assim:,
>5v8<10^3
nenhuma outra forma de entrada é permitida. - O número de comandos é ilimitado.
- Não se espera que mais caracteres entrem na entrada.
Exemplos.
Input é uma string vazia, output:
*
A entrada é
>3
ou<3
: note que isso não faz nenhuma diferença para a saída:****
Semelhante para
^3
ev3
:* * * *
Entrada:,
>1v2
saída:** * *
Entrada:,
^4>3v2<1
saída:**** * * * ** * *
Se você voltar e usar o mesmo caminho, não desenhe nada de novo. Por exemplo
>5<5
******
... embora você não desenhe nada novo, obviamente muda de posição. Portanto, se sua entrada for assim
>4<2v3
:, a saída é:***** * * *
Este é um exemplo mais complexo: 1) o caminho pode se cruzar 2) observe que os últimos três passos do último comando deslocam todo o caminho para a direita. Entrada:,
v6>4^3<7
saída:* * * ******** * * * * *****
Entrada :
^2v2>3<3v3>4^5v5>3^5>4v2<4v3>4^3v3>3^5>4v2<4v3>7^5>4v2<4v3>9^3<2^2v2>4^2v2<2v3>8^5>2v4>2^4v5<3>6^5>5<5v2>5<5v2>5<4v1>8^3<1^2v2>1v2>2^3v3>2^2>1^2v2<1v3<3>11^3<2^2v2>4^2v2<2v3>5^5>5<5v2>5<5v2>5<4v1>7^5>4v2<4v3>4^3v3>3^5>4v2<3v1<1v2>3^1>1v1
Resultado:
* * ***** ***** ***** * * *** * ****** * * * * ****** ***** ***** * * * * * * * * * * * * * * * * * * * * * * * * ***** ***** ***** ***** ***** * * * ****** ** * ** ***** ****** ***** ***** * * * * * * * * * * * * * * * * * * ** * * * * * * * * *** ****** ***** * ****** * * * ** *******************************************************************************************
^2v2>3<3v3>4^5v5>3^5>4v2<4v3>4^3v3>3^5>4v2<4v3>7^5>4v2<4v3>9^3<2^2v2>4^2v2<2v3>8^5>2v4>2^4v5<3>6^5>5<5v2>5<5v2>5<4v1>8^3<1^2v2>1v2>2^3v3>2^2>1^2v2<1v3<3>11^3<2^2v2>4^2v2<2v3>5^5>5<5v2>5<5v2>5<4v1>7^5>4v2<4v3>4^3v3>3^5>4v2<3v1<1v2>3^1>1v1
.Respostas:
MATL , 71 bytes
Usa a versão atual (6.0.0) do idioma / compilador. Trabalha em Matlab e Octave.
EDIT (21 de junho de 2016): devido a alterações no idioma, o código requer algumas modificações para executar na versão atual (16.0.0). Você pode experimentá-lo online, incluindo as modificações necessárias.
Exemplos
Explicação
O programa possui quatro etapas principais:
[0 -1]
indica um passo para a esquerda. A primeira linha é a origem do caminho,[1 1]
*
. Normalizar para valor mínimo1
1
as coordenadas indicadas pela matriz da etapa 3 e0
caso contrário. Isso é transformado em uma matriz de caracteres.Código:
fonte
JavaScript (ES6), 204
211 210Edit 1 Bug fix - output '*' para entrada void
Edit 2 Decodificação mais simples da direção para diff x e y
Aqui está a minha resposta para o mapa do tesouro , revisado para atender às especificações.
Menos jogado e explicado mais ou menos
Teste
fonte
*
.Perl, 174 bytes
Espera entrada como argumento da linha de comandos. Não deixe de citar o argumento!
Exemplo:
perl 177.pl "<1^2>3v4<5^6>7v8<9^10>11"
Um pouco legível:
fonte
05AB1E , 27 bytes
Experimente online! (2020 está perto o suficiente, então por que não)
fonte