Inspirado por esta pregunta SO .
Reto:
Entrada:
- Una cadena
- Un personaje
Salida:
Cree un arte ASCII cuadrado de diamante de la cuerda en las cuatro direcciones, con el primer carácter de la cuerda en el centro y hacia afuera. Que está dentro de una alfombra cuadrada de arte ASCII, con el personaje como relleno. Esto puede sonar bastante vago, así que aquí hay un ejemplo:
Entrada: = , =
Salida:string
.
..........g..........
........g.n.g........
......g.n.i.n.g......
....g.n.i.r.i.n.g....
..g.n.i.r.t.r.i.n.g..
g.n.i.r.t.s.t.r.i.n.g
..g.n.i.r.t.r.i.n.g..
....g.n.i.r.i.n.g....
......g.n.i.n.g......
........g.n.g........
..........g..........
Reglas de desafío:
- La cadena de entrada también puede ser una lista de caracteres
- La salida también puede ser una lista de líneas de cadena o una matriz de caracteres
- Se garantiza que la cadena de entrada y el carácter no están vacíos
- Se garantiza que la cadena no contiene el carácter.
- Tanto la cadena como el carácter solo serán ASCII imprimibles (rango unicode [32,126], espacio '' e incluyendo tilde '~')
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de código de golf lo desalienten de publicar respuestas con idiomas que no sean de codegolf. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Las reglas estándar se aplican a su respuesta con las reglas de E / S predeterminadas , por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código (es decir, TIO ).
- Además, se recomienda agregar una explicación para su respuesta.
Casos de prueba:
Entrada: = , =
Salida:11111
0
00000000100000000
00000010101000000
00001010101010000
00101010101010100
10101010101010101
00101010101010100
00001010101010000
00000010101000000
00000000100000000
Entrada: = , =
Salida:12345ABCDEF
#
####################F####################
##################F#E#F##################
################F#E#D#E#F################
##############F#E#D#C#D#E#F##############
############F#E#D#C#B#C#D#E#F############
##########F#E#D#C#B#A#B#C#D#E#F##########
########F#E#D#C#B#A#5#A#B#C#D#E#F########
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
F#E#D#C#B#A#5#4#3#2#1#2#3#4#5#A#B#C#D#E#F
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
########F#E#D#C#B#A#5#A#B#C#D#E#F########
##########F#E#D#C#B#A#B#C#D#E#F##########
############F#E#D#C#B#C#D#E#F############
##############F#E#D#C#D#E#F##############
################F#E#D#E#F################
##################F#E#F##################
####################F####################
Entrada: = , =
Salida:@+-|-o-|-O
:
::::::::::::::::::O::::::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
O:-:|:-:o:-:|:-:+:@:+:-:|:-:o:-:|:-:O
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::::::O::::::::::::::::::
Entrada: = , c =
Salida:AB
c
ccBcc
BcAcB
ccBcc
Entrada: = ~
, = X
Salida:
~
Entrada: = /\^/\
, = X
Salida:
XXXXXXXX\XXXXXXXX
XXXXXX\X/X\XXXXXX
XXXX\X/X^X/X\XXXX
XX\X/X^X\X^X/X\XX
\X/X^X\X/X\X^X/X\
XX\X/X^X\X^X/X\XX
XXXX\X/X^X/X\XXXX
XXXXXX\X/X\XXXXXX
XXXXXXXX\XXXXXXXX
()()()
.Respuestas:
Lienzo , 8 bytes.
Pruébalo aquí!
7 bytes pero refleja un montón de caracteres.
fuente
R ,
1189592 bytesPruébalo en línea!
Gracias a:
fuente
for
bucles en R, al menos para jugar al golf.pmin
lógica con la reorganización :-)J ,
5956 bytesPruébalo en línea!
Solución demasiado larga para J ... (completamente culpa mía)
fuente
R , una versión fea de 118 bytes
Al permitir que la entrada sea un vector de caracteres individuales y generar una matriz en lugar de imprimir un bonito arte ascii.
Pruébalo en línea!
R ,
161157 bytesahorró 4 bytes usando ifelse en lugar de modificar condicionalmente
y
Pruébalo en línea!
no golfista y comentado
hmmm, ¡parece la respuesta más larga hasta ahora!
fuente
Python 2 ,
97969084 bytesPruébalo en línea!
fuente
05AB1E ,
1511 bytesPruébalo en línea! o como un conjunto de pruebas
Explicación
fuente
»
al pie de página. :)J ,
35 3433 bytesPruébalo en línea!
-&#
i:
1-|+/|
{: (<*-)
-&#
Los índices negativos comienzan desde -1 como en python. Lo único que queda es insertar las columnas de ceros.
1j1( #"1
}:@
,{~
Muchas gracias a Galen Ivanov por el algoritmo.
fuente
K (ngn / k) , 38 bytes
Pruébalo en línea!
{
}
funcionar con argumentosx
(la cadena s ) yy
(el carácter c )|x
marcha atrásx
y,'
anteponery
a cada+
transponer,/
concat1_
soltar el primer charen este punto tenemos una serie de
x
instancias de length ( ) dey
seguidas por los caracteres dex
#x
longitud dex
(#x)'
ventana deslizante de tantos caracteres consecutivos2{
}/
hacer dos veces+x,1_|x
unirsex
con el reversox
sin su primer elemento, y transponery,''
anteponery
a cada uno,/'
concat cada1_'
soltar uno de cadafuente
Japt , 15 bytes
Devuelve una matriz de líneas.
Intentalo
fuente
Carbón de leña , 15 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Originalmente presentado como un comentario en la entrada caja de arena ahora borrado . Explicación:
Establecer el fondo a la segunda entrada
c
.Asigne sobre la primera entrada
s
para generar todos los sufijos e imprimirlos implícitamente en líneas separadas.Refleja horizontal y verticalmente.
Añadir espacio extra horizontalmente.
fuente
Ruby ,
958475 bytesPruébalo en línea!
Toma la cadena de entrada como una matriz de caracteres. Devuelve una matriz de cadenas.
fuente
Wolfram Language (Mathematica) , 121 bytes
Pruébalo en línea!
fuente
Japt , 16 bytes
Nota: voy a jugar al golf :)
Pruébalo en línea!
fuente
Potencia Shell , 120 bytes
Pruébalo en línea!
Algunos días, tener rangos de índice en lugar de sectores realmente duele. Hoy es uno de esos dias. Debido a que los rangos combinados se confunden cuando se trata de elementos individuales (por ejemplo, devolver 0..0 + 1..0), se utiliza una carcasa especial para evitarlo por completo (a costa de muchos bytes).
fuente
Japt , 15 bytes
Intentalo
fuente
Jalea , 11 bytes
Pruébalo en línea!
Argumento izquierdo:s . do (como un solo carácter, no como una cadena).
Argumento correcto:
Salida: Lista de cadenas Jelly (aparece como una lista de listas de cadenas Python de 1 carácter, reemplace
ŒṘ
conY
para ver la\n
salida unida).fuente
PowerShell ,
8283 bytes+2 bytes gracias Veskah: el error de mayúsculas y minúsculas solucionado
-1 byte: la regla
Input-string may also be a list of characters
utilizadaPruébalo en línea!
Menos golfizado:
fuente
~
Pip ,
2420 bytesUtilizar el
-l
bandera para obtener resultados legibles por humanos. Pruébalo en línea!Explicación
Por ejemplo, con entradas de
abcd
y.
:fuente
Adjunto , 57 bytes
Pruébalo en línea!La salida es una lista de líneas.
Explicación
fuente
Perl 6 , 79 bytes
Pruébalo en línea!
Codeblock anónimo que toma la entrada al curry (como
f(char)(string)
) y devuelve una lista de líneas. Creo que un enfoque diferente sería más corto.Explicación:
fuente
APL (Dyalog Classic) ,
3231 bytesPruébalo en línea!
fuente
Perl 5 con
-lF
,-M5.010
, 71 bytesPruébalo en línea!
fuente
C # (compilador interactivo de Visual C #) , 249 bytes
Pruébalo en línea!
Esto debe ser mejorable ...
fuente
JavaScript (Node.js) , 143 bytes
Pruébalo en línea!
Un poco más de reflexión llevaría a calcular en términos de una matriz unidimensional y menos bytes.
fuente
Kotlin , 250 bytes
Nota: Kotlin tio actualmente no puede devolver una nueva clase, por lo que este código obtiene una excepción de puntero nulo. Esto también ocurre para los códigos que publiqué anteriormente que funcionaban en ese momento. Supongo que eventualmente se solucionará, pero no pude encontrar un contacto de soporte para informar el problema. También se puede ejecutar aquí .
Pruébalo en línea!
fuente
.joinToString("\n")
el byte-count (y hacerlo en el pie de página fuera de la función).Gaia , 19 bytes
Pruébalo en línea!
Explicación a seguir.
fuente
JavaScript (Node.js) , 101 bytes
Pruébalo en línea!
fuente
Consulta TSQL, 191 bytes
En MS-SQL Server Management Studio, presione Ctrl-T antes de ejecutar esta consulta, esto cambiará la salida a texto.
Este script está construyendo la salida de izquierda a derecha en una "cadena" larga, calculando el valor para colocar en cada posición. La salida está limitada a 4096 caracteres.
Golfizado:
Sin golf:
Tuve que hacer algunos cambios para formatear la salida en la versión en línea.
Pruébalo en línea
fuente
Java (JDK) ,
213199198 bytesPruébalo en línea!
-14 bytes
gracias a @KevinCruijssen-1 byte
gracias a @ceilingcatSin golf
fuente
Wolfram Language (Mathematica) , 68 bytes
Pruébalo en línea!
Toma una lista de caracteres (junto con el carácter de relleno) como entrada y genera una matriz de caracteres.
Para tomar el índice de la lista de caracteres, utilizamos
list[[index]]
, que se expande internamente aPart[list, index]
. Si el índice es válido, esa expresión se evalúa como el valor en ese índice. Si no, si el índice no es un número entero o está fuera de rango, la expresión permanece sin evaluar.El patrón más simple (más corto) que coincide
Part[...]
pero no tiene un solo carácter es_@__
, que coincide con cualquier expresión con uno o más argumentos.fuente