Introducción:
Inspirado por este comentario de @MagicOctopusUrn en @Emigna respuesta 05AB1E 's para mi ' Fue sólo un error ' desafío :
8F9ÝÀNð×ý}».∊
Lo hice hizo una nave espacial fauces! Y estaba muy entusiasmado por sugerir una edición de 12 bytes. - Urna de pulpo mágico Jul 17 '17 a las 20:10
Que es un programa 05AB1E (heredado) que resulta en esto:
1234567890
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1234567890
Reto:
Entrada: una cadena no vacía
Salida: desde afuera hacia adentro, agregue un espacio más entre cada carácter en cada línea, similar a como se hizo en la salida anterior, igual a length - 1
. Entonces, para una entrada, 1234567890
la salida en realidad sería esta:
1234567890
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 0
1234567890
¿Por qué? La longitud de 1234567890
es 10
. Entonces comenzamos generando 10 líneas: la primera línea sin espacios; segundo con un delimitador de espacio; tercero con dos; etc. Y luego (sin tener la línea media con length - 1
espacios duplicados), volvemos a la entrada inicial mientras bajamos.
Reglas de desafío:
- Se garantiza que la entrada no está vacía (una longitud
>= 1
). (Para las entradas de un solo carácter simplemente sacamos ese carácter). - Se permite cualquier cantidad de espacios finales / iniciales / nuevas líneas, siempre que la salida en sí (en cualquier lugar de la pantalla) sea correcta. (Las líneas vacías entre las líneas de salida tampoco están permitidas).
- La entrada solo contendrá caracteres ASCII imprimibles, excluyendo espacios en blanco (rango de puntos de código
[33, 126]
) - I / O es flexible. La entrada puede tomarse como STDIN, argumento o parámetro de función. Puede ser una lista / matriz / secuencia de caracteres en lugar de una cadena. La salida también puede ser una lista / matriz / secuencia de caracteres en lugar de cadenas; puede imprimirse en STDOUT; devuelto como cadena delimitada por nueva línea; etc.
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. - Se aplican reglas estándar para su respuesta, 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.
- Además, se recomienda agregar una explicación para su respuesta.
Casos de prueba:
Input: @
Output:
@
Input: test
Output:
test
t e s t
t e s t
t e s t
t e s t
t e s t
test
Input: ?!
Output:
?!
? !
?!
Input: Spaceship
Output:
Spaceship
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
S p a c e s h i p
Spaceship
Input: 05AB1E
Output:
05AB1E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
0 5 A B 1 E
05AB1E
Input: )}/\
Output:
)}/\
) } / \
) } / \
) } / \
) } / \
) } / \
)}/\
ಠ_ಠ
luego se da cuenta de que es porque lo creó accidentalmente hace un añoಠ⌣ಠ
.Respuestas:
Japt ,
86 bytesToma la entrada como una matriz de caracteres, emite una matriz de cadenas.
Intentalo
Explicación
Original, 8 bytes
I / O es una cadena. Usa la
-R
bandera. Incluye espacios finales en cada línea.Intentalo
Explicación
fuente
S.ç()
FTW una vez más :-)R ,
10599858479 bytes-6 gracias a @Kevin Cruissen y @Giuseppe
-14 de cambiar a un método basado en expresiones regulares
-1 gracias a @Giuseppe
-5 gracias a @digEmALl
Pruébalo en línea!
fuente
in(r<-
.s
una vez, así que puedes usarlo como argumentowrite
directamente; reduciéndolo a 99 bytes1
lugar de un""
enwrite
? Estoy cavando tu uso deMap
!collapse
argumento,paste
pero simplemente no está sucediendo ...JavaScript (ES6), 53 bytes
Toma la entrada como una matriz de caracteres.
Pruébalo en línea!
fuente
Carbón , 10 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
fuente
[
a]
- o es que otro comando separado?Lienzo , 8 bytes.
Pruébalo aquí!
los versión de 7 bytes era demasiado buena para este desafío.
fuente
/
s en unX
?─
- palindromize vertical. La palindromización de Canvas hace cosas geniales . La parte superpuesta también tiene su propio carácter .Python 2 ,
7270686665 bytes-2 bytes gracias a Kevin Cruijssen
-3 bytes gracias a ovs
Pruébalo en línea!
fuente
c==len(w)-1
se puede jugar al golf por 1 byte conc+2>len(w)
. EDITAR: en su nueva versión de 70 bytes,0<c
puede serc
.05AB1E ,
109 bytesGuardado 1 bytes gracias a Adnan
Pruébalo en línea!
Explicación
fuente
S
. La entrada es flexible, por lo que se permite ingresar como lista.»
se puede omitir.»
y cambia el buclev
a un mapaε
.εINð×ý}û»
También funciona?Ruby ,
5449 bytesPruébalo en línea!
Toma la entrada como una matriz de caracteres, emite una matriz de cadenas.
fuente
Japt ,
98 bytes-1 byte de @Shaggy
Pruébalo en línea!
fuente
SpX
->Xî
para un ahorro de 1 byte.PowerShell ,
6654 bytes-12 bytes gracias a mazzy
Pruébalo en línea!
Toma información a través de salpicaduras, que en TIO se manifiesta como argumentos de línea de comandos separados para cada personaje.
Primero establecemos
$a=$args
como argumento de entrada. Luego establecemos$x
igual a la.count
de esa matriz-1
. Luego necesitamos recorrer las letras para construir la nave espacial. Eso se hace construyendo un rango de0
a$x
, luego de$x
regreso a0
, luego usandoGet-Unique
para extraer solo el rango apropiado.Cada iteración, tomamos nuestros argumentos de entrada y
-join
los juntamos con el número correspondiente de espacios. Cada una de esas cadenas se deja en la tubería, y un implícitoWrite-Output
nos da nuevas líneas de forma gratuita cuando se completa el programa.fuente
0..($x=($a=$args).count-1)+$x..0|gu|%{$a-join(' '*$_)}
Get-Unique
funciona así en el rango? Eso es una locura! ¡Gracias!05AB1E (heredado) , 9 bytes
Entrada como lista de caracteres.
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
[
,]
y(
,)
. Es posible que desee agregar esos casos para atrapar carbón también. (Moví los otros comentarios a la respuesta de Emigna, porque él era la respuesta que originalmente comenté)û»
lugar de.∊
.Haskell ,
6059 bytesPruébalo en línea!
Explicación
Para una cadena (p. Ej.
"abc"
) Aplicamos primeroque es lo mismo que
Esto se aplica repetidamente
(?)
(agrega un espacio a cada carácter en el rango [33 ..] )str
hasta que haya tantas cadenas comostr
caracteres:["abc","a b c ", "a b c "]
Ahora solo necesitamos concatenar el resultado (menos el último elemento) con su contraparte invertida:
fuente
MATL ,
252213 bytesPruébalo en línea!
¡Gracias a Luis Mendo por sugerir un golf de 5 bytes, que luego me inspiró a ahorrar 4 bytes más!
Explicación, con entrada de ejemplo
'abc'
:fuente
Jalea , 9 bytes
Pruébalo en línea!
Devuelve una lista de líneas; salida prettified sobre TIO.
fuente
,€⁶$LСŒḄ
. Otros, más similares, 9:J’⁶ẋŒḄɓjⱮ
yJ’⁶ẋŒḄjⱮ@
(estaba buscando algo más corto pero todavía no me alegro)LḶ⁶ẋ
oŒḄ
. Sin embargo, si logras encontrar un guardado, hazme un ping. :-),€⁶$LСŒḄ
puede que no sea válido ya que tiene un anidamiento loco, por lo que podría necesitar unY
programa completo.['I', 'f', [[' '], 't', 'h', [['i']], 's'], ' ', 'i', ['s', ' '], 'a', [[' ', 's', 't'], 'r', ['i', 'n', 'g'], ' '], 'w', ['e', ' ', 'a', 'r', 'e'], ' ', 'd', 'o', ['o'], 'm', [[[[['e']]]]], [[[['d']]]], '!']
Al menos he superado al 05AB1E ...Pyth , 12 bytes
Solo mi presentación obligatoria de Pyth. Estoy bastante orgulloso de esto, por lo que es probable que llegue pronto una explicación.
Pruébalo aquí!
Pruébalo aquí!
fuente
Stax , 10 bytes
Ejecutar y depurarlo
Salidas con espacios en blanco al final de cada línea.
Explicación:
fuente
Java (JDK 10) , 115 bytes
Pruébalo en línea!
fuente
l-Math.abs(i)
se puede jugar a golfi<0?l+i:l-i
por -2 bytes.l-i<0?-i:i
?l-(i<0?-i:i)
(12 bytes).K (oK) ,
2524 bytesSolución:
Pruébalo en línea!
Explicación:
Puerto de mi solución K4 :
Notas:
fuente
,:'
->+,
Pascal (FPC) ,
143135 bytesPruébalo en línea!
Probablemente solo gane contra Lenguage ...
fuente
PHP,
8889 bytesrequiere PHP 5 o posterior para
str_split
. Ejecutar como tubería con-nR
o probarlo en línea .fuente
K4 , 23 bytes
Solución:
Ejemplo:
Explicación:
Tiene espacios en blanco al final de cada línea.
fuente
C #,
11310598 bytesPruébalo en línea!
fuente
s=>{
antes y}
después para que sea una función lambda. Además, una cosa para el golf es quitar los soportes alrededor del bucle for. Pruébalo en línea.Scala , 82 bytes
Pruébalo en línea
¡Scala tiene muchos atajos que me están ayudando aquí y eso es bastante legible! Prueba Scala
fuente
0
unalength
cantidad de espacios, en lugar de0
unalength-1
cantidad de espacios. No conozco a Scala demasiado bien, pero parece que puedes solucionar ambos problemas con +4 bytes (86 bytes en total) de esta manera: ¡for(i<-(0 to a.size-1)union(-a.size+2 to 0))println(a.map(_+" "*Math.abs(i)).mkString)
De nuevo, bienvenido, y disfruta de tu estadía! :)Oracle SQL, 115 bytes
No es un lenguaje de golf pero ...
Suponiendo que el valor está en la columna
v
de la tablat
:Violín de SQL
Configuración del esquema de Oracle 11g R2 :
Consulta 1 :
Resultados :
(SQLFiddle imprime los valores alineados a la derecha en la columna por alguna razón ... no hay espacios iniciales)
fuente
(.)
puede jugar.
usando en\0
lugar de\1
como lo haría en Java, por ejemplo? EDITAR: No importa, eso es para$0
, no\0
... ( Ejemplo de Java de lo que quise decir ).Código de máquina 8086,
5653 bytesMontado de:
Caso de prueba:
fuente
length
cantidad de espacios y hay 9 líneas en total, pero la línea media debería tener unalength-1
cantidad de espacios y debería haber un total de 7 líneas en su lugar (para la palabra de 4 letras 'prueba') ...: (¿Espero que no sea demasiado costoso en términos de bytes para arreglar?Haskell,
646059 bytesPruébalo en línea!
fuente
Bash ,
115,109,105,100,97,96,92,91, 90 bytes-5 y -3 gracias a Kevin Cruissen
Pruébalo en línea!
Tenga en cuenta que dado que el
\
es un char salida al shell, el caso de prueba)}/\
debe ser introducido con un extra de\
la siguiente manera:)}/\\
.fuente
in
yprintf
como en Python?bash
código solo ingresa una cadena ( es decir, solo una línea). Sin embargo, todos los casos de prueba funcionan, aunque)}/\
deben ser comillas simples como esta<<< ')}/\' read s; ...etc.
. Los espacios despuésin
yprintf
son necesarios.for
ydo
se pueden quitar.f=1
se puede cambiar ac=f=1
. Yf=f+c
puede serf+=c
.f!=0
af
en el bucle for. Al igual que en JavaScript y Python,0
es falsey y cualquier otro número entero positivo / negativo es aparentemente verdadero en Bash.Perl 6 , 43 bytes
Pruébalo en línea!
Devuelve una lista de líneas.
Explicación:
fuente
C (gcc) ,
131129111 bytesPruébalo en línea!
-20 bytes gracias a ceilingcat !
Pruébalo en línea!
O, si la longitud se puede aceptar como parámetro:
C (gcc),
105102 bytes-1 byte gracias a ceilingcat!
Pruébalo en línea!
fuente
x
está sombreado y, por lo tanto, se declara de forma redundante.PHP,
148146143141 BytesPuedes probarlo así:
Salida
Salvadera
Versión ampliada
Intento 2, 92 bytes
Después de ver la respuesta de @Titus, reduje la mía a esto:
Estaba tratando de pensar en una forma de usar 1 bucle, en lugar de 2 ... Lo creas o no, casi nunca uso el
for
bucle en código "real". Era el~
bit a bit No, que me faltaba ...Todavía es un poco más largo en
92
así que no me siento tan mal. Pero lo pondré como un segundo intento de todos modos.$argn
es la entrada de la línea de comandoSalvadera
fuente
f
lugar de asignar una anónima para$f
:function f(
ahorra 2 bytes$f=function(
y guarda otro byte cada vez que llama enf(...)
lugar de$f(...)
. Alternativamente, puede capturar el$s
, ahorrando 2 bytes,($i)use($s)
es 4 bytes más largo que($i,$s)
, pero guarda 3 bytes para cada llamada en$f($i)
lugar de$f($s,$i)
; en idiomas con captura automática, como JS, esto es más a menudo un ahorro viable, porque no paga la penalidad de lause
declaración.use
pero parece más largo, para que ese sentido$i
sea dinámico, tendría que pasarlo por referencia. Por lo tanto, debe seruse(&$i)
y$i
debe definirse antes de pasarlo por referencia a$f
. Lo que significa configurarlo en la función principal, o antes que cualquier otra. Para la función podría serfunction s($s,$i)
y solo saber que tiene que ser invocado,s($s,0)
pero parece feo, y eso es todo11 bytes, use(&$i),$i
$s
embargo, podríamos usarlo y cambiarlo\n
a un retorno de línea real. Eso lo lleva a143
2 desde el final de la línea y 1 desde el usof
lugar de un cierre:function s($s){for(;$i<strlen($s);++$i)f($i,$s);for(--$i;--$i>=0;)f($i,$s);}function f($i,$s){echo chunk_split($s,1,str_repeat(' ',$i))." ";}
funciones adicionales como esta están permitidas de acuerdo con esta meta publicación: codegolf.meta.stackexchange.com/questions/7614/…