Neste desafio, você colocará as letras do alfabeto em um plano cartesiano e produzirá o resultado como um texto.
Sua entrada consistirá em uma lista de lista com 3 parâmetros:
- Coordenada X
- Coordenada Y
- Corda
Quão?
Sabemos que um plano cartesiano contém 2 eixos e 4 quadrantes, onde os sinais das coordenadas são , , e . Por exemplo
Considere a seguinte matriz 3 por 3 como um plano cartesiano
Se formos informados na entrada, algo como [[-1,1,L],[0,1,F]]
nossa matriz será semelhante a
E a saída final LF
Além disso, há alguns pontos que precisamos seguir para obter a saída correta:
- Quando uma coordenada X, Y é repetida, você precisará concatenar as strings. Exemplo: suponha que em (-1,1) a string
F
seja colocada e você precisará colocá-laa
no mesmo ponto. Você concatena as duas cadeias resultandoFa
e esse é o valor que será inserido (-1,1). - Sua saída precisa ser consistente com a matriz. Exemplo, imagine isso como seu resultado final:
Você deve produzir
Ma rie
i s
cute
Por quê?
Você pode visualizar isso como uma tabela em que as colunas são os valores do eixo x e as linhas o eixo y.
Column 1 | Column 2 | Column 3
----------------------------------------
Row 1 | "Ma" | "r" | "ie"
Row 2 | "i" | "s" |
Row 3 | "cute" | |
Todos os valores das colunas devem ter o mesmo comprimento
Column 1 | Column 2 | Column 3
----------------------------------------
Row 1 | "Ma " | "r" | "ie"
Row 2 | "i " | "s" |
Row 3 | "cute" | |
Por fim, produzimos o resultado
Ma rie
i s
cute
Casos de teste
Input
------------
[[3, 3, "c"]
[4, 1, "un"]
[5, 3, "e"]
[4, 3, "od"]
[4, 2, "lf"]
[1, 2, "go"]
[2, 1, "i"]
[2, 1, "s f"]]
Output
--------------
code
go lf
is f un
Input
--------------
[[0, 0, 's'],
[-1,1, 'M'],
[0, 1, 'r'],
[-1,1, 'a'],
[1, 1, 'i'],
[-1, 0, 'i'],
[1, 1, 'e'],
[-1,- 1, 'c'],
[-1,- 1, 'u'],
[-1, -1, 'te']]
Output.
----------------
Ma rie
i s
cute
Notas
- Isso deveria ser código-golfe
- Você pode agrupar as coordenadas em uma única lista, por exemplo
[[3, 3], "c"]
- Você pode receber a entrada em qualquer formato razoável
- Você pode assumir que não haverá número ou espaços vazios apenas na entrada. Por exemplo, pode haver algo como,
a a
mas nunca1
ou" "
ou1a
ou1 1
fonte
a a
mas nunca1
ou `` ou1a
ou1 1
(int a,int b,string c)
:?Respostas:
JavaScript (ES8),
186 180179 bytesGuardado 1 byte graças a @Shaggy
Experimente online!
Índices negativos em JS (ou a falta deles)
Dada uma matriz
A[]
, é perfeitamente legal em JS fazer algo assimA[-1] = 5
. No entanto, isso não salvará o valor na própria matriz. Em vez disso, ele coagirá implicitamente esse índice negativo a uma string ("-1"
) e definirá a propriedade correspondente no objeto circundante da matriz.A má notícia é que as propriedades não são iteráveis com métodos como
map()
:Experimente online!
O código acima será exibido apenas
3 is stored at index 1
.Uma possível solução alternativa seria:
Experimente online!
Mas:
O que fazemos aqui
Aqui está o que fazemos:
fonte
o
dentrow
:w=[o=[]]
.Python 2 ,
188185181 bytesExperimente online!
fonte
APL (Dyalog Unicode) , SBCS de 39 bytes
Infix anônimo lambda usando * listas de coordenadas e seqüências de caracteres como argumentos esquerdo e direito.
Experimente online!
{
...}
"dfn"; os argumentos esquerdo (coordenadas) e direito (cadeias) são⍺
e⍵
:⊂''
cadeia vazia fechada, portanto, use como preenchimento para uma matriz(
...)⍴
ciclicamente r eshape em uma matriz com as seguintes dimensões:⌊/⍺
o menor valor ao longo de cada eixo das coordenadas⍺-
subtrair isso de todas as coordenadas1+
adicione isso a um (já que queremos o intervalo inclusivo)c←
loja emc
(para c oordinates)⌈/
o valor mais alto ao longo de cada eixo daqueles⊃
descompacte para usar como dimensõesm←
armazenar emm
(para m atrix)⍵⊣
descartar isso em favor das cordasm[c],←
anexá-los àsm
coordenadasc
m⊣
descartar aqueles a favor da emendam
⌽
espelho↓
dividido em lista de listas de strings↑¨
misture cada lista de strings em uma matriz de caracteres, preenchendo espaços,/
reduzir por concatenação horizontal⊃
descompactar (uma vez que a redução reduz a classificação de 1 para 0)* Se for necessário usar um único argumento de coordenadas e cadeias entrelaçadas, serão 5 bytes mais longos.
fonte
05AB1E ,
4544 bytesToma as coordenadas de entrada como uma lista interna.
Experimente online ou verifique todos os casos de teste .
Explicação:
fonte
Carvão , 60 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Extraia as coordenadas da entrada.
Faça um loop sobre as coordenadas x.
Faça um loop sobre as coordenadas y, extraindo e concatenando todas as seqüências nas coordenadas fornecidas.
Imprima as strings na ordem inversa, pois as coordenadas y são invertidas em comparação com o sistema de coordenadas do carvão vegetal.
Vá para o início da próxima coluna.
fonte
Perl 5
-p00
-MList::Util=max
, 148 bytesTIO
Quão
s/(\S+) (\S+) (.*) /
...;''/ge;
, sinalizadores de substituição/g
loop/e
eval, a substituição avalia como entrada de linha de compensação vazia / variável padrão$a{$1}=max$a{$1},length($h{$2}{$1}.=$3)
, autivivifica um mapa% h do mapa cujas chaves de primeiro nível se encontram noy
segundo nívelx
e concatena a string$3
com o valor, obtém o comprimento e obtém automaticamente um segundo mapa% h cujas chavesx
e valoriza o comprimento máximo na coluna (x
)for$y(sort{$b-$a}keys%h){
...;say""}
, para índices de linha$y
em chaves de%h
ordem inversa numericamente,say""
no final para imprimir uma nova linhamap{
...}sort{$a-$b}keys%a
, para o índice da coluna$_
nas chaves% a ordenadas numericamenteprintf"%-$a{$_}s",$h{$y}{$_}
, imprima a sequência alinhada à esquerda com a largura da colunafonte
Limpo ,
212206 bytesExperimente online!
fonte