Digamos que eu tenha alguma arte ASCII:
___
,"---".
: ;
`-.-'
| |
| |
| |
_.-\_/-._
_ / | | \ _
/ / `---' \ \
/ `-----------' \
/,-""-. ,-""-.\
( i-..-i i-..-i )
|`| |-------| |'|
\ `-..-' ,=. `-..-'/
`--------|=|-------'
| |
\ \
) ) hjw
/ /
( (
( Fonte )
Mas quero me concentrar no cabo deste joystick, porque na verdade quero uma foto de um caminho de jardim que conduz a uma porta.
,=.
-|=|-
| |
\ \
) )
/ /
( (
Eu poderia copiar linha após linha, eu poderia usar um editor de texto com o modo de seleção de bloco ou ... Eu poderia escrever algum código!
Então, meu código precisa de cinco argumentos:
- Uma obra de arte ASCII, uma sequência separada por nova linha.
- O eixo X do canto superior esquerdo (indexado 1, da coluna da esquerda, número inteiro positivo)
- O eixo Y do canto superior esquerdo (indexado 1, da linha superior, número inteiro positivo)
- Largura da imagem resultante (número inteiro positivo)
- Altura da imagem resultante (número inteiro positivo)
Casos de teste
Imagem ASCII:
___
,"---".
: ;
`-.-'
| |
| |
| |
_.-\_/-._
_ / | | \ _
/ / `---' \ \
/ `-----------' \
/,-""-. ,-""-.\
( i-..-i i-..-i )
|`| |-------| |'|
\ `-..-' ,=. `-..-'/
`--------|=|-------'
| |
\ \
) ) hjw
/ /
( (
Caminho do jardim
- X: 10
- Y: 15
- Largura: 5
- Altura: 7
Resultado:
,=.
-|=|-
| |
\ \
) )
/ /
( (
Ícone DB
- X: 3
- Y: 12
- Largura: 6
- Altura: 4
Resultado:
,-""-.
i-..-i
| |
`-..-'
Alien Elder
- X: 9
- Y: 1
- Largura: 7
- Altura: 10
___
,"---".
: ;
`-.-'
| |
| |
| |
.-\_/-.
| |
`---'
Assinatura
- X: 16
- Y: 19
- Largura: 3
- Altura: 1
hjw
Regras
- A saída pode ser fornecida por qualquer método conveniente .
- Um programa completo ou uma função são aceitáveis.
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
Y
deve bew15
, e no TC 2,X
deve ser #3
Respostas:
Tela , 1 byte
Experimente aqui!
Leva altura, largura, Y, X e arte ASCII como entradas, nessa ordem.
Embora quase tudo sobre os objetos de arte ASCII no Canvas seja indexado em 0,
@
é indexado em 1 por algum motivo. ¯ \ _ (ツ) _ / ¯fonte
Python 2 ,
6462 bytesExperimente online!
Se
X
eY
pode ser0
indexado:Python 2 , 56 bytes
Experimente online!
fonte
Carvão , 7 bytes
Experimente online! Link é a versão detalhada do código. Leva coordenadas indexadas a 0. Explicação:
Imprima o art. ASCII.
Pule para o canto superior esquerdo do retângulo desejado.
Apare a tela no tamanho desejado.
fonte
Pip
-n
, 21 bytesExperimente online!
Ou, se a indexação 0 for permitida ...
Pip
-n
, 17 bytes :Experimente online!
Explicação
Leva todos os cinco argumentos como argumentos da linha de comando.
As soluções acima também assumem que a entrada é um retângulo perfeito - ou seja, as linhas têm o mesmo comprimento. Caso contrário, são necessários 2 bytes extras (use em
-l
vez de-n
):fonte
05AB1E ,
2119 bytesExperimente online!
Ou se
0-indexing is allowed
:05AB1E , 18 bytes
Experimente online!
fonte
[X1, X2]
e[Y1, Y2]
comov³ŸNåiy²ŸèJ=
Japonês
-R
,1311 bytesTente
2 bytes salvos graças a Kamil Drakari
9 bytes, se não for o requisito desnecessário de que as soluções usam indexação baseada em 1.
Explicação
fonte
t
e outros 2 bytes pela indexação 0. Pode valer a pena esperar no segundo, pois o OP não esclareceu se a indexação 0 é aceitável ou corrigiu os casos de teste.t
método também funciona em matrizes.JavaScript (Node.js) ,
7069 bytes-1 Obrigado @Shaggy pela
splice()
ideia.Experimente online!
A arte ASCII dada é irritante tbh
fonte
J , 45 bytes
Experimente online!
Notas: J aceita até 2 argumentos, esquerdo e direito. O argumento certo é a sequência de arte ASCII, a esquerda - uma lista de valores UHXW
Simulo a nova linha e a chamada da função possui um código para converter a string em uma matriz.
fonte
V , 16 bytes
Experimente online!
A entrada deve ser preenchida com espaços para ser um retângulo perfeito. Além disso, a entrada 'Y' vem antes do 'X'.
Hexdump:
fonte
C (gcc) ,
118109 bytesA entrada pode conter linhas irregulares: novas linhas serão impressas se existirem no intervalo y.
Agradecimentos a ceilingcat pela sugestão.
Experimente online!
fonte
Gelatina , 11 bytes
Experimente online!
Adota a arte ASCII como uma string r de várias linhas do Python (para evitar problemas com barras invertidas).
fonte
Haskell , 61 bytes
Experimente online!
Toma argumentos em ordem:
x
,y
,w
,h
,s
.fonte
Bash + coreutils, 37
Curiosamente, o GNU tail 8.28 (no Ubuntu 18.04) permite o
+NUM
formato, enquanto o GNU tail 8.29 no TIO requer 2 bytes extras para isso-n+NUM
.Experimente online!
Eu pensei que fazer isso all in
sed
poderia ser mais curto, mas em 50 bytes não é:fonte
K4 , 31 bytes
Solução:
Exemplos:
Explicação:
Pegue a entrada indexada em 1, gere as coordenadas x / y e indexe na arte ascii.
fonte
R , 62 bytes
Talvez uma solução surpreendentemente curta para um desafio de texto em R, porque não precisamos realmente ler o texto inteiro em uma matriz.
Experimente online!
fonte
\ / \ /> , 123 bytes
Entrada consiste de uma única linha de variáveis de entrada delimitados por espaço
x
,y
,w
, eh
, seguindo-se a arte ASCII na linha seguinte para a frente.Explicação
Este código usa a capacidade de \ / \ /> de se auto-modificar colocando a arte ascii no próprio código, que acaba assim:
Ele então pega os caracteres no retângulo especificado fora do código e o gera.
fonte