En este desafío, colocará letras del alfabeto en un plano cartesiano y mostrará el resultado como un texto.
Su entrada consistirá en una lista de lista con 3 parámetros:
- Coordenada X
- Coordenada Y
- Cuerda
¿Cómo?
Sabemos que un plano cartesiano contiene 2 ejes y 4 cuadrantes donde los signos de las coordenadas son , , y . Por ejemplo
Considere la siguiente matriz 3 por 3 como un plano cartesiano
Si se nos da en la entrada, algo así como [[-1,1,L],[0,1,F]]
nuestra matriz se verá similar a
Y la salida final LF
Además de eso, hay algunos puntos que debemos seguir para obtener la salida correcta:
- Cuando se repite una coordenada X, Y, deberá concatenar las cadenas. Ejemplo: suponga que en (-1,1)
F
se coloca la cadena y necesita colocarlaa
en el mismo punto. Concatena ambas cadenas que resultan enFa
y ese es el valor que irá en (-1,1). - Su salida debe ser coherente con la matriz. Ejemplo imagina esto como tu resultado final:
Debe salida
Ma rie
i s
cute
¿Por qué?
Puede ver esto como una tabla donde las columnas son los valores del eje xy las filas el eje y.
Column 1 | Column 2 | Column 3
----------------------------------------
Row 1 | "Ma" | "r" | "ie"
Row 2 | "i" | "s" |
Row 3 | "cute" | |
Todos los valores de las columnas deben tener la misma longitud.
Column 1 | Column 2 | Column 3
----------------------------------------
Row 1 | "Ma " | "r" | "ie"
Row 2 | "i " | "s" |
Row 3 | "cute" | |
Finalmente sacamos el resultado
Ma rie
i s
cute
Casos de prueba
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
- Se supone que esto es código golf
- Puede ajustar las coordenadas en una sola lista, por ejemplo
[[3, 3], "c"]
- Puede tomar la entrada en cualquier formato razonable
- Puede suponer que no habrá ningún número o espacios vacíos solo en la entrada. Por ejemplo, puede haber algo como
a a
pero nunca1
o" "
o1a
o1 1
fuente
a a
, pero nunca1
o `` o1a
o1 1
(int a,int b,string c)
:?Respuestas:
JavaScript (ES8),
186 180179 bytesGuardado 1 byte gracias a @Shaggy
Pruébalo en línea!
Índices negativos en JS (o la falta de ellos)
Dada una matriz
A[]
, es perfectamente legal en JS hacer algo asíA[-1] = 5
. Sin embargo, esto no guardará el valor en la matriz misma. En cambio, obligará implícitamente este índice negativo a una cadena ("-1"
) y establecerá la propiedad correspondiente en el objeto circundante de la matriz.La mala noticia es que las propiedades no son iterables con métodos como
map()
:Pruébalo en línea!
El código anterior solo mostrará
3 is stored at index 1
.Una posible solución sería:
Pruébalo en línea!
Pero:
Que hacemos aqui
Esto es lo que hacemos en su lugar:
fuente
o
dentrow
:w=[o=[]]
.Python 2 ,
188185181 bytesPruébalo en línea!
fuente
APL (Dyalog Unicode) , SBCS de 39 bytes
Infix lambda anónimo tomando * listas de coordenadas y cadenas como argumentos izquierdo y derecho.
Pruébalo en línea!
{
...}
"dfn"; Los argumentos izquierdo (coordenadas) y derecho (cadenas) son⍺
y⍵
:⊂''
cadena vacía cerrada, así que úsela como relleno para una matriz(
...)⍴
cíclicamente r eshape en una matriz de las siguientes dimensiones:⌊/⍺
el valor más bajo a lo largo de cada eje de las coordenadas⍺-
restar eso de todas las coordenadas1+
agregue eso a uno (ya que queremos el rango inclusivo)c←
tienda enc
(para c oordinates)⌈/
el valor más alto a lo largo de cada eje de esos⊃
desempaquetar para usar como dimensionesm←
almacenar enm
(para m atrix)⍵⊣
descartar eso a favor de las cuerdasm[c],←
agregarlos am
las coordenadasc
m⊣
descartar a los partidarios de la enmiendam
⌽
espejo↓
dividido en una lista de listas de cadenas↑¨
mezcle cada lista de cadenas en una matriz de caracteres, rellenando con espacios,/
reducir por concatenación horizontal⊃
desempaquetar (ya que la reducción reduce el rango de 1 a 0)* Si se requiere tomar un solo argumento de coordenadas y cadenas entrelazadas, será 5 bytes más largo.
fuente
05AB1E ,
4544 bytesToma las coordenadas de entrada como una lista interna.
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
Carbón , 60 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Extraer las coordenadas de la entrada.
Pase sobre las coordenadas x.
Pase sobre las coordenadas y, extrayendo y concatenando todas las cadenas en las coordenadas dadas.
Imprima las cadenas en orden inverso a medida que las coordenadas y se invierten en comparación con el sistema de coordenadas de carbón.
Ir al inicio de la siguiente columna.
fuente
Perl 5
-p00
-MList::Util=max
, 148 bytesTIO
Cómo
s/(\S+) (\S+) (.*) /
...;''/ge;
, las banderas de sustitución evalúan el/g
bucle/e
, el reemplazo se evalúa como entrada vacía de la línea de compensación / variable predeterminada$a{$1}=max$a{$1},length($h{$2}{$1}.=$3)
, autovivifica un mapa% h del mapa cuyas claves de primer nively
segundo nivelx
y concatena la cadena$3
al valor, obtiene la longitud y autovivifica un segundo mapa% a cuyas teclasx
y valor el máximo de longitud sobre la columna (x
)for$y(sort{$b-$a}keys%h){
...;say""}
, para los índices de fila$y
en claves de orden%h
numérico inverso,say""
al final para imprimir una nueva líneamap{
...}sort{$a-$b}keys%a
, para el índice de columna$_
en claves% a ordenado numéricamenteprintf"%-$a{$_}s",$h{$y}{$_}
, imprimir cadena alineada a la izquierda con ancho de columnafuente
Limpio ,
212206 bytesPruébalo en línea!
fuente