Me tomó mucho tiempo hacer esto, por favor. (Comentarios de YouTube # 1)


84

Espera ... esto no es trolling.


Antecedentes

En estos días en YouTube, las secciones de comentarios están llenas de tales patrones:

S
St
Str
Stri
Strin
String
Strin
Stri
Str
St
S

donde Stringes un simple marcador de posición y se refiere a cualquier combinación de caracteres. Estos patrones suelen ir acompañados de un It took me a lot of time to make this, pls likeo algo, y a menudo el OP tiene éxito en acumular una serie de Me gusta.


La tarea

Aunque tiene un gran talento para acumular votos positivos en PPCG con sus encantadoras habilidades de golf, definitivamente no es la mejor opción para hacer comentarios ingeniosos o hacer memes de referencia en las secciones de comentarios de YouTube. Por lo tanto, sus comentarios constructivos hechos con un pensamiento deliberado acumulan algunos 'me gusta' en YouTube. Quieres que esto cambie. Por lo tanto, recurre a hacer los patrones cliché mencionados anteriormente para lograr su máxima ambición, pero sin perder tiempo tratando de escribirlos manualmente.

En pocas palabras, su tarea es tomar una cadena, digamos s, y generar 2*s.length - 1subcadenas de s, delimitadas por una nueva línea, para cumplir con el siguiente patrón:

(para s= "Hola")

H
He
Hel
Hell
Hello
Hell
Hel
He
H

Entrada

Una sola cuerda s. Se aplican los valores predeterminados de entrada de la comunidad. Puede suponer que la cadena de entrada solo contendrá caracteres ASCII imprimibles.


Salida

Varias líneas separadas por una nueva línea, que constituyen un patrón apropiado como se explicó anteriormente. Se aplican los valores predeterminados de salida de la comunidad. Se permiten líneas en blanco iniciales y finales (que no contienen caracteres o caracteres que no se pueden ver, como un espacio) en la salida.


Caso de prueba

Un caso de prueba de varias palabras:

Input => "Oh yeah yeah"

Output =>

O
Oh
Oh 
Oh y
Oh ye
Oh yea
Oh yeah
Oh yeah 
Oh yeah y
Oh yeah ye
Oh yeah yea
Oh yeah yeah
Oh yeah yea
Oh yeah ye
Oh yeah y
Oh yeah 
Oh yeah
Oh yea
Oh ye
Oh y
Oh 
Oh
O

Tenga en cuenta que hay distorsiones aparentes en la forma de salida del caso de prueba anterior (por ejemplo, la línea dos y la línea tres de la salida parecen iguales). Esos son porque no podemos ver los espacios en blanco finales. Su programa NO necesita tratar de corregir estas distorsiones.


Criterio ganador

Este es el , por lo que gana el código más corto en bytes en cada idioma.


19
Estoy planeando hacer más comentarios relacionados con YouTube en el futuro; de ahí el YouTube Comments #1en el título.
Arjun

1
¿Se permite devolver una serie de líneas?
alguien

2
¿Podemos tomar la entrada como una matriz de caracteres y devolver una matriz de matrices de caracteres?
Shaggy


3
¿Puede ser la entrada ""? ¿Qué tal un solo personaje "H"? Si es así, ¿cuál debería ser el resultado para ambos casos?
AdmBorkBork

Respuestas:


103

brainfuck , 32 bytes

,[[<]>[.>]++++++++++.,[>>]<[-]<]

Pruébalo en línea!

El mismo bucle se usa para ambas mitades del patrón.

Explicación:

,             Take first input character as initial line
[             Until line to output is empty:
  [<]>        Move to beginning of line
  [.>]        Output all characters in line
  ++++++++++. Output newline
  ,           Input next character
  [>>]        Move two cells right if input character nonzero
  <[-]        Otherwise remove last character in line
  <           Move to new last character in line
]

2
Eso es simplemente increíble. Estaba tratando de hacer algo en el cerebro, pero salió unas 10 veces este tiempo y todavía no funcionó correctamente.
ElPedro

34
¡Nunca pensé que vería un desafío en el que la respuesta de brainfuck en realidad fuera un puntaje competitivo, un trabajo increíble!
Signos de interrogación

54

JavaScript (ES6), 36 bytes

f=([c,...r],s=`
`)=>c?s+f(r,s+c)+s:s

Pruébalo en línea!

Comentado

f = (             // f is a recursive function taking:
                  //   the input string split into:
  [c,             //     c   = next character (may be undefined if we've reached the end)
      ...r],      //     r[] = array of remaining characters
  s = `\n`        //   the output string s, initialized to a linefeed
) =>              // 
  c ?             // if c is defined:
    s +           //   append s (top of the ASCII art)
    f(r, s + c) + //   append the result of a recursive call to f, using r[] and s + c
    s             //   append s again (bottom of the ASCII art)
  :               // else:
    s             //   append s just once (this is the final middle row) and stop recursion

3
muy buena respuesta: D
lois6b

10
@MartinBarker En Windows, estoy usando Notepad ++ con el final de línea predeterminado activado Unix (LF). Problema resuelto de una vez por todas. :)
Arnauld

3
¡Increíble! ¿Puedes escribir una explicación de esto para aquellos que son novatos en JS?
Akhoy

3
@ Akhoy He agregado una versión comentada.
Arnauld

3
Gracias. Mucho más claro ahora.
Akhoy

47

05AB1E (heredado) ,  4  3 bytes

Tachado ya &nbsp;4&nbsp;no es 4 :)

η.∊

Pruébelo en línea o verifique todos los casos de prueba .

Explicación:

η     # Get the prefixes of the (implicit) input-string
 .∊   # Vertically mirror everything with the last line overlapping
      # (which implicitly joins by newlines in the legacy version of 05AB1E)
      # (and output the result implicitly)

En la nueva versión de 05AB1E, y »se requiere explícito después de η, por lo que uso la versión heredada de 05AB1E aquí para guardar un byte.


77
Hmm, esto parece 6 bytes en UTF8:\xce\xb7\x2e\xe2\x88\x8a
rubenvb

10
@rubenvb En UTF-8 es de hecho más. 05AB1E utiliza, al igual que algunos de los lenguajes de programación utilizados en otras respuestas (es decir, Jelly; Japt; Charcoal), es su propio código fuente (que es CP-1252 en el caso de 05AB1E), donde cada uno de los 256 caracteres que conoce es un solo byte
Kevin Cruijssen

Muy bien, lo suficientemente justo :).
Rubenvb

@KevinCruijssen PHP parece pensar que estos caracteres no son válidos para CP-1252, pero podrían ser un error de PHP: 3v4l.org/UC1QE
hanshenrik

77
@hanshenrik Buena pregunta. De hecho, no es CP-1252, sino la codificación 05AB1E , que es la codificación personalizada que utiliza. Los bytes de este código en hexadecimal son 08 2e 17, que puede ejecutar y verificar con la --osabiebandera: tio.run/…
Adnan

21

IBM PC DOS, ensamblaje 8088,  44  43

d1ee ad8b d6b4 0948 8af8 8ac8 d0e1 49b3 243a cf7d 024e
4e46 861c cd21 861c 52ba 2901 cd21 5ae2 eac3 0d0a 24

Desmontado:

    SHR  SI, 1              ; point SI to DOS PSP at 80H (SI intialized at 100H)
    LODSW                   ; load arg length into AL, advance SI to 82H
    MOV  DX, SI             ; save start of string pointer
    MOV  AH, 9              ; DOS API display string function
    DEC  AX                 ; remove leading space from string length
    MOV  BH, AL             ; save string len in BH (AL gets mangled by INT 21H,9)
    MOV  CL, AL             ; set up loop counter in CL
    SHL  CL, 1              ; number of lines = 2 * string length - 1
    DEC  CX
    MOV  BL, '$'            ; end of string marker
LINE_LOOP:
    CMP  CL, BH             ; if CL >= string length, ascend
    JGE  ASCEND
    DEC  SI                 ; descend by backing up two places (always increments)
    DEC  SI                 ; (this is fewer bytes than 'SUB SI, 2' or two branches)
ASCEND:
    INC  SI                 ; increment current string position
    XCHG BL, [SI]           ; swap current string byte with end of string delimiter
    INT  21H                ; write substring to console
    XCHG BL, [SI]           ; restore string byte
    PUSH DX                 ; save output string pointer
    MOV  DX, OFFSET CRLF    ; load CRLF string
    INT  21H                ; write to console
    POP  DX                 ; restore output string pointer
    LOOP LINE_LOOP          ; move to next line
    RET
CRLF DB 0DH,0AH,'$'

Explicación

Bucle 2 * input length - 1para cada fila. La función de visualización de cadenas ( INT 21H,9) de la API de DOS escribe una $cadena terminada en la pantalla, por lo que cada vez que se realiza el bucle, el carácter después del último que se muestra se intercambia con el terminador de fin de cadena.

El contador de bucle se compara con la longitud de la cadena, y si es mayor (es decir, la parte ascendente de la salida), la posición de cadena / intercambio se incrementa, de lo contrario, se reduce (en realidad, -1-1+1es menos bytes que una estructura de ramificación if / else).

Programa ejecutable independiente, toma la cadena de entrada de la línea de comando.

Salida

ingrese la descripción de la imagen aquí

Descargar YT2.COM (43 bytes)


1
La mayoría de los sabores de DOS tienen SI = 100h al cargar un archivo COM. Esto puede ahorrarle un byte al reemplazar la primera instrucción con SHR SI, 1.
Gastropner

@gastropner muy inteligente! Resulta que el original no se ejecutará en DOS 1.0 de todos modos ya que cuenta con CH siendo 0 (costaría +2 bytes para inicializar, lo que no vale la pena solo para DOS 1). Actualizado con nueva versión!
640 KB

¿Tiene que ingresar la fecha cada vez que abre la terminal?
user14492

1
@ user14492 ha, no! ¡Olvidé recortar esa parte de la captura de pantalla de DOS!
640 KB el

19

Python 2 , 60 52 bytes

f=lambda s,n=1:s[n:]and[s[:n]]+f(s,n+1)+[s[:n]]or[s]

Pruébalo en línea!

Python 3.8 (prelanzamiento) , 50 bytes

f=lambda s,n=1:s>(x:=s[:n])and[x,*f(s,n+1),x]or[s]

Pruébalo en línea!


2
¿Depende esto de una característica próxima de 3.8? Cual característica?
alexis

77
@alexis Esto es usando una expresión de asignación : x:=s[:n].
Arnauld

1
Ah, lo veo ahora, gracias :-) He leído sobre la característica antes, esperando ansiosamente. Todavía lo extraño de mis días C ...
alexis

1
Sin embargo, estos no imprimen la salida. Simplemente hacen la matriz, ¿verdad?
Jaden Travnik

@JadenTravnik Python duplica automáticamente el resultado de la última expresión si se ejecuta de forma interactiva a través de una consola
Xeverous

18

MATL , 8 bytes

nZv"G@:)

Pruébalo en línea!

:)Me gusta esta publicación para el smiley en el código que me tomó mucho tiempo hacer.

n  % Length of the input string
Zv % Symmetric range ([1 2 ... n ... 1])
"  % For each k in above range
G  % Push input
@: % Push [1 2 ... k]
)  % Index

17

J , 11 bytes

Función de prefijo tácito anónimo. Devuelve una matriz de caracteres rellena de espacio.

[:(}:,|.)]\

Pruébalo en línea!

]\ la lista de prefijos

[:(... ) aplique la siguiente función a esa lista

|. la lista inversa

, antepuesto con

}: la lista restringida (sin el último elemento)


18
[:(y te }:,|ves tan triste ...
Adám

Pero es (}: que es una persona feliz con un bigote elegante
DonFusili

13

Perl 6 , 31 bytes

{[\~](@_)[0...@_-1...0]}o*.comb

Pruébalo en línea!

Bloque de código anónimo que toma una cadena y devuelve una lista de líneas.

Explicación:

{                      }o*.comb   # Pass the list of characters into the codeblock
 [\~](@_)                 # Triangular reduce by concatenation
                          # e.g. The list [1,2,3,4] turns into [1,12,123,1234]
         [0...@_-1        # Return the elements from 0 to length of string minus 1
                  ...0]   # And back down to 0

55
Es curioso que en estos días incluso el golf Perl se encuentre entre los concursantes más legibles.
dejó de girar en contra del reloj el

77
@ceasedtoturncounterclockwis Bueno, este es Perl 6. La respuesta de Perl 5 sigue siendo ilegible
Jo King

12

Japt -R , 4 bytes

å+ ê

Reducción acumulativa en una cadena.

-1 byte gracias a @Shaggy

Pruébalo en línea!


Escéptico sobre el "-R" que debe incluirse en la cadena (sin él, la salida no funciona)
Flying Thunder

3
@FlyingThunder Sé un escéptico no más :) mira aquí
Quintec

@Quintec, he decidido vincular las banderas en los encabezados de mi solución a esa meta publicación para tratar de evitar este tipo de comentarios.
Shaggy

1
La convención bastante segura es <language> + -flago <language> -flag. Además, | Se me olvidó acumulada Reducir era una cosa, te juro que salté sobre él cada vez que lo vi
ASCII de sólo

@ Solo ASCII Igual, solo lo recordaba porque estaba pensando en cómo resolvería esto en APL y dije "Me pregunto si Japt tiene esto incorporado". Además, ¿no usé <language> -flag?
Quintec

11

Japt -R , 9 7 bytes

-2 bytes gracias a Shaggy

Êõ@¯XÃê

Pruébalo en línea!



1
@Shaggy oh espera ... Ães una cosa
solo ASCII

Otros 300 representantes en camino tan pronto como esta pregunta sea elegible para una recompensa.
Shaggy


1
@Quintec, la reducción acumulativa también funciona en cadenas, por lo que no necesita dividir al principio. También diría que es lo suficientemente diferente como para justificar publicarlo usted mismo.
Shaggy


10

Haskell 52 50 44 bytes

f x=unlines$init<>reverse$scanr(\_->init)x x

Pruébalo en línea!


Bienvenido al sitio. initsrequiere que se use una importación, por lo que tendrá que agregar import Data.Listo algo similar.
Wheat Wizard

@ SriotchilismO'Zaic No estaba seguro de si eso era necesario para contar o no. Añadido, gracias!
Joseph Sible

44
También debo mencionar que tenemos una sala de chat para hablar de golf de Haskell. Si tiene alguna idea o pregunta, es un gran lugar.
Wheat Wizard

1
No puedo creer que se te ocurrió exactamente lo que iba a publicar:import Data.List putStr.unlines.((++)<*>reverse.init).tail.inits
Axman6

9

R , 79 65 62 58 bytes

write(substring(s<-scan(,""),1,c(1:(r=nchar(s)),r-1:r)),1)

Pruébalo en línea!

-14 por el conocimiento superior de la función de Giuseppe

-3 con indexación más limpia

-4 gracias al movimiento de Nick Kennedy y Giuseppe hacia scanywrite

Evitar bucles (y substr) es bueno.


2
los bucles son completamente innecesarios, como están sapply, substringharán lo que quieras (con una línea vacía final adicional), ¡y por 65 bytes ! Definitivamente no habría pensado substringsi no hubiera visto tu buen uso de substraquí.
Giuseppe

1
Jaja, buena captura! Creo que he aprendido más sobre funciones alternativas para el mismo trabajo de sus ediciones que en cualquier otro lugar en este momento.
Criminalmente

2
Jaja, R tiene una cantidad estúpida de sinónimos con diferencias sutiles. Cada vez que siento que conozco la mejor herramienta para el trabajo, encuentro algo más que es un poco mejor en un caso extraño ...
Giuseppe

3
¿Qué tal probarlo en línea! usando scany write? ¡Solo 59 bytes!
Nick Kennedy

1
@NickKennedy 58 bytes si reemplaza ""con 1.
Giuseppe

7

Jalea , 5 4 bytes

-1 byte gracias a @JonathanAllan !

¹ƤŒḄ

Pruébalo en línea! Creo que esta es mi segunda respuesta Jelly? No sé si esto es óptimo. Estoy más convencido de que es óptimo. Devuelve una matriz de líneas.

Explicación

¹ƤŒḄ     input: "Hi!"
¹Ƥ       prefixes of the input: [["H"], ["H", "i"], ["H", "i", "!"]]
  ŒḄ     bounce, using each array: [["H"], ["H", "i"], ["H", "i", "!"], ["H", "i"], ["H"]]

Otro enfoque, propuesto por @JonathanAllan, es ;\ŒḄ, que reduce de forma acumulativa ( \) la concatenación ( ;), que es otra forma de generar prefijos.


Se nos permite producir una serie de líneas, por lo que puede Ysalirse del código (yo haría el pie de página ÇYo ÇŒṘpara evitar la impresión aplastante implícita de un programa completo). En una nota al margen, esto también se implementa de manera equivalente ;\ŒḄpara el mismo recuento de bytes (también puede pasar el argumento ya "blah"que Jelly interpreta esto como una lista de caracteres; el suyo es en realidad una lista de listas de caracteres, como verá si haces el pie de página ÇŒṘ)
Jonathan Allan

@ JonathanAllan gracias! muy interesante :)
Conor O'Brien

7

Python 3.8 (prelanzamiento) , 48 bytes

lambda s,r='':(l:=[r:=r+c for c in s])+l[-2::-1]

Pruébalo en línea!

Utiliza expresiones de asignación con :=para acumular una lista de prefijos y luego nuevamente para guardar el resultado para concatenar su reverso (sin el primer carácter).

Python 2 , 51 bytes

f=lambda s,l=[]:s and f(s[:-1],[s]+l)or l+l[-2::-1]

Pruébalo en línea!

Casi tenemos la siguiente buena solución de 45 bytes, pero tiene la cadena original dos veces y no veo una forma corta de solucionarlo.

f=lambda s,l=[]:s and f(s[:-1],[s]+l+[s])or l

Pruébalo en línea!


¿No necesitaría agregar un poco de nueva línea e imprimir para obtener el resultado deseado?
Jaden Travnik

Algo como print('\n'.join(f(s))) ?
Jaden Travnik

@JadenTravnik Los valores predeterminados de la comunidad (que sigue este desafío) permiten funciones además de programas. Y el autor del desafío dijo en los comentarios que están de acuerdo con una lista de cadenas dentro de la unión según lo permitido por defecto , aunque a mí mismo no me gusta esto por defecto y lo he votado negativamente. Ver también el resumen de reglas de Python .
xnor

Huh Ok, gracias por señalar eso. Im nuevo ¯_ (ツ) _ / ¯. Si ese es el caso, aquí hay una solución competitiva de 45 bytes:x=[s[:i+1]for i in range(len(s))];x+x[-2::-1]
Jaden Travnik

@JadenTravnik No hay problema, lamentablemente las reglas están dispersas por todo el lugar. Sin embargo, su ejemplo es un fragmento que no está permitido. Necesita hacer entrada y salida como s=input();x=[s[:i+1]for i in range(len(s))];print x+x[-2::-1]. Vea los ejemplos en la parte superior aquí .
xnor

6

Carbón de leña , 5 bytes

G^Lθθ

Pruébalo en línea! El enlace es a la versión detallada del código. Explicación: dibuja un polígono relleno, ^especifica que los lados están abajo a la derecha y abajo a la izquierda (el polígono se cierra automáticamente), Lθespecifica la longitud de esos lados como la longitud de la entrada original y el final θespecifica la cadena de relleno.


6

C # (Visual C # interactivo Compilador) , 123 109 94 84 74 bytes

Asume que podemos devolver una matriz de matriz de caracteres (creo que podemos hacerlo, ya que una matriz de caracteres es una representación válida para una cadena y una matriz de cadenas es una representación válida para varias líneas)

a=>new int[a.Length*2-1].Select((b,i)=>a.SkipLast(Math.Abs(a.Length-i-1)))

Pruébalo en línea!


5

Adjunto , 15 bytes

Bounce@Prefixes

Pruébalo en línea!

Bastante simple. Bounces (se agrega al reverso sin centro) Prefixesde la entrada.

Alternativamente, 21 bytes: Bounce@{_[0..0:~-#_]} reiniciando el prefijo.


5

Brachylog (v2), 6 bytes

a₀ᶠ⊆.↔

Pruébalo en línea!

Envío de funciones, devolviendo una serie de líneas. Basada en la respuesta de @ Fatalize .

Explicación

a₀ᶠ⊆.↔
    .↔  Find a palindrome
   ⊆      that contains, in order,
  ᶠ       all
a₀        prefixes of {the input}

El orden de desempate aquí se establece mediante el que, cuando se usa con este patrón de flujo, prefiere la salida más corta posible, se rompe al colocar los elementos dados lo antes posible . El resultado más corto posible es lo que queremos aquí (debido a que no es posible tener prefijos duplicados), y colocar los elementos dados (es decir, los prefijos) lo antes posible los colocará en la primera mitad (redondeada) salida. Dado que también estamos exigiendo que se coloquen en el mismo orden, obtenemos exactamente el patrón que necesitamos a pesar de que la descripción que le dimos a Brachylog es muy general; los desempates resultan exactamente correctos, lo que hace que Brachylog elija la salida que queremos en lugar de alguna otra salida que obedezca a la descripción.


5

PowerShell, 89 87 66 bytes

-2 bytes gracias a @AdmBorkBork

param($a)0..($d=$a.Length-1)|%{$b+=,-join$a[0..$_]};$b+$b[--$d..0]

Pruébalo en línea!

En realidad no funcionó como se especificó antes, ¡perdón por eso! Lo edité y también logré eliminar algunos bytes.


Puede en --$dlugar de ($d-1)guardar una pareja al final.
AdmBorkBork

@AdmBorkBork Gracias.
Gabriel Mills

Esto no funciona para la entrada de un solo carácter, lamentablemente.
AdmBorkBork


4

APL (Dyalog Unicode) , SBCS de 9 bytes

Función de prefijo tácito anónimo. Devuelve la lista de cadenas.

(⊢,1↓⌽),\

Pruébalo en línea!

,\ la lista de prefijos (encendido, la concatenación acumulativa)

(... ) aplique la siguiente función a esa lista:

 la lista invertida

1↓ suelte el primer elemento

, anteponer

 la lista no modificada




4

SNOBOL4 (CSNOBOL4) , 118 bytes

	N =INPUT
	L =1
1	X =LT(X,SIZE(N)) X + 1	:F(D)
O	N ARB . OUTPUT POS(X)	:($L)
D	X =GT(X) X - 1	:F(END)
	L ='D'	:(O)
END

Pruébalo en línea!

Parece que hay un error en esta implementación de SNOBOL; intentar reemplazar la etiqueta Dcon la etiqueta 2causa un error, aunque el manual de Vanilla SNOBOL indica que (énfasis agregado)

Si hay una etiqueta, debe comenzar con el primer carácter de la línea. Las etiquetas proporcionan un nombre para la declaración y sirven como objetivo para la transferencia de control desde el campo GOTO de cualquier declaración. Las etiquetas deben comenzar con una letra o dígito, opcionalmente seguido de una cadena arbitraria de caracteres. El campo de etiqueta termina con el carácter en blanco, tabulador o punto y coma. Si el primer carácter de una línea está en blanco o tabulador, el campo de etiqueta está ausente.

Mi suposición es que el intérprete CSNOBOL solo admite una sola etiqueta que comienza con un número entero.


4

APL + WIN, 31 bytes

Solicitudes de entrada de cadena:

 ⊃((⍳n),1↓⌽⍳n)↑¨(¯1+2×n←⍴s)⍴⊂s←⎕

Explicación:

(¯1+2×n←⍴s)⍴⊂s create a nested vector of the string of length =1+2x length of string

((⍳n),1↓⌽⍳n)↑¨ progressively select elements from each element of the nested vector 
              following the pattern 1  2 ...to n to n-1 ... 1

⊃ convert nested vector into a 2d array.

4

F # (.NET Core) , 67 61 bytes

let l=s.Length
[1..l*2-1]|>Seq.map(fun i->s.[..l-abs(i-l)-1])

Pruébalo en línea!

La entrada es un string y la salida es aseq<string>

Otra solución podría ser let f(s:string)=for i=1 to s.Length*2-1 do printfn"%s"s.[..s.Length-abs(i-s.Length)-1]para 80ish bytes ... No estoy seguro de que valga la pena analizarlo.


4

sed , 31 35 bytes

:x
h
s/.\n.*\|.$//
/^$/{x;q}
H
G
bx

Pruébalo en línea!

Explicación

Al comienzo de cada iteración del bucle, el espacio del patrón es un "fragmento central" de la salida deseada, y cada bucle agrega una copia acortada en la parte superior e inferior.

:x                 
h                  Copy the current chunk to hold space
s/.\n.*\|.$//      Remove the last letter of the first line, and all other lines (if there are any)
/^$/{x;q}          If pattern space is empty we're done; output hold space
H                  Add the shortened line to the end of hold space
G                  and add the new hold space to pattern space.
bx                 

1
Buena, pero la línea media (la entrada original completa) parece salir 3 veces. Al menos con GNU sed. Lo mismo en TIO. ¿Qué sedimplementación usa y cómo le pasa la entrada? (Por cierto, cambiar la sustitución para s/.\n.*\|.$//arreglarlo.)
manatwork

2
Ah, tienes razon. No es un problema con mi sedimplementación (usando GNU versión 4.2.1), simplemente no noté el error. He jugado con otras soluciones y no puedo encontrar nada que agregue menos de cuatro bytes, así que estoy adoptando tu solución, gracias.
Sophia Lechner

4

Python 2 , 131 100 84 bytes

Mi primera respuesta en Code Golf!

-47 bytes en general gracias a @ SriotchilismO'Zaic

a,b=[],len(x)
for i in range(2*b-1):
 if i<b:a+=x[i]
 else:a=a[:-1]
 print''.join(a)

Pruébalo en línea!


1
¡Bienvenido a PCG! Asegúrese de leer el recorrido y el código de conducta . ¡Buena solución!
akozi

2
Para python, puede usar ;s en lugar de líneas nuevas para evitar la sangría. Tampoco hay necesidad de espacios entre printy''
Wheat Wizard

Gracias por los consejos @ SriotchilismO'Zaic, ¡realmente me ayudó a reducir mi número de bytes!
Yoni Matz

2
Y una última cosa, si crea auna cadena en lugar de una lista, ya no la necesita joiny puede simplemente print a.
Wheat Wizard

44
No es válido, debe ser un programa o función completa, mientras que usted supone que la entrada está en x.
Solo ASCII

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.