Imprima el último, medio y primer carácter de su código


60

El desafío es simple: imprima el último, el medio y el primer carácter del código fuente de su programa, en ese orden.

El carácter del medio se define de la siguiente manera, suponiendo una longitud de fuente de ncaracteres e indexación 1:

  • Si nes par, imprima los caracteres n/2-th y n/2 + 1-th. ( abcdef == cd)
  • Si nes extraño, imprime el (n-1)/2 + 1carácter número -th. ( abcde == c)

Reglas

  • Sin entrada, imprima el último, el medio y el primer carácter en su código fuente, en el formulario [last][middle][first]. Esto tendrá 3-4 caracteres de longitud.
  • La salida no debe contener ningún espacio en blanco al final. Sin embargo, si el espacio en blanco es un primer, medio o último carácter, debe imprimirse como tal.
  • El código fuente debe tener n >= 3caracteres largos.
  • El código debe constar de >= 3caracteres únicos.
  • Las lagunas estándar están prohibidas.
  • Este es el , por lo que la solución más corta en caracteres gana.

Muestras

# Form: [code] --> [output]
xyz --> zyx
abcd --> dbca
1 --> # not allowed: too short
abcde --> eca
aaabb --> # not allowed: not enough unique characters
System.out.print("S;pr"); --> ;prS
this is a test --> ts t
123[newline]45 --> 53[newline]1

Propuesta de desafío


66
Tal vez solo soy yo, pero "El código debe consistir en> = 3 caracteres únicos". sugiere que todos los caracteres del programa deben ser únicos, mientras que solo necesita tener al menos 3 caracteres distintos.
Grzegorz Oledzki

44
@Belhenix Menos de tres caracteres únicos permiten soluciones tan simples como 121para muchos idiomas.
Khuldraeseth na'Barya

2
Si alguien puede encontrar un lenguaje basado en la pila que se usa -para la negación e imprime implícitamente con un salto de línea, \n1-es un byte de tres. Mi búsqueda hasta ahora ha sido infructuosa.
Khuldraeseth na'Barya

3
@Belhenix Whitespace es ciertamente posible, tiene suficientes caracteres válidos únicos (espacio, salto de línea, pestaña).
bigyihsuan

2
No puedo cambiarlo ahora con 58 respuestas, pero requerir "la primera letra del código debe ser diferente de la última letra del código" habría descartado muchas respuestas triviales, incluida la respuesta principal actual. Esa puede haber sido la intención de "> = 3 caracteres únicos", pero ese requisito no es realmente muy difícil.
manassehkatz

Respuestas:


171

JavaScript, 9 7 bytes

N=>a=-N

Salidas: NaN

Pruébalo en línea!


44
Muy inteligente. Este era el tacto que estaba tratando de tomar, pero simplemente no podía encontrar un lenguaje con una salida de error lo suficientemente cortante.
ouflak

49
Esta es una de las mejores respuestas de Javascript que he visto aquí
Daniel

21

Grass , 17 bytes

wWWwwwVVwWWwWWWww

Pruébalo en línea!

-2 bytes gracias a jimmy23013.

Salidas www. Hierba ignora todos los caracteres aparte de w, Wy v. Los dos Vs se ignoran así; están ahí para garantizar que el carácter del medio sea un w- No tengo idea de cómo salir vo Wen Grass ... Podría haber usado otro personaje en lugar de V, pero Vconserva la estética del código.


1
" Afortunadamente, el personaje del medio terminó siendo aw y no av o W - No tengo idea de cómo generar v o W en Grass ... " Lol. xD Traté de hacer algo similar en Whitespace con solo tres caracteres (espacio, tabulación, nueva línea), pero desafortunadamente no tuve tanta suerte. Afortunadamente, simplemente puedo agregar un montón de no-op para solucionarlo.
Kevin Cruijssen

@KevinCruijssen Si el personaje del medio hubiera sido cualquier otra cosa, probablemente habría agregado en el medio un montón de xs (o cualquier otro personaje que no sea Grass, que Grass ignora) para mover a un wlugar correcto.
Robin Ryder

Ah, soy un idiota. También puedo insertar un carácter que no sea un espacio en blanco que Whitespace ignorará. ;) -2 bytes gracias a ti.
Kevin Cruijssen

1
17 bytes :wWWwww  wWWwWWWww
jimmy23013

@ jimmy23013 ¡Gracias! Y gracias por publicar tu consejo ; ¡Lo necesitaba para entender lo que hiciste! Cambié los espacios a Vs porque me parece más bonito. ;-)
Robin Ryder

17

brainfuck , 17 bytes

U-[>+<-UU--]>...U

Pruébalo en línea!

Con no imprimibles esto se puede reducir a 7 bytes: ␀..␀_.␀


1
Dentro de las reglas, pero BF no se usa Ucomo una instrucción. Funcionalmente, el código es -[>+<---]>., por lo que la salida esperada sería .--, que no genera.
bigyihsuan

16
@bigyihsuan pero el código fuente aún contiene los Usy este intérprete los ignora felizmente. ¿No deberían contarse todas las respuestas que tengan comentarios o espacios múltiples (o cualquier otra cosa que no necesariamente le importe al idioma)?
dzaima

1
¿No debería ser U-[>+<-UU--]>...U? En su forma actual, el código solo muestra una U
Helena

1
@Flater Sí, aquí se utilizan para facilitar el desafío, pero ¿no es ese el propósito de la etiqueta de código de golf ? Muchas respuestas aquí solo hacen que su trabajo sea más fácil al agregar espacios en blanco iniciales / finales, y en general en el código de golf aquí, todo lo que siga las reglas está permitido (y si tuviera que adivinar, si hubiera una regla que prohíbe los caracteres no utilizados (definiendo cuál objetivamente) ya sería prácticamente imposible) significaría que el desafío aún podría estar flotando en el puntaje 0, y probablemente también se cerrará).
dzaima

2
¿Por qué no lo usas simplemente ÿ-.ÿ..ÿ? Eso es imprimible y corto.
Dorian

17

Lenguaje de programación Shakespeare , 119 bytes

 ,.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]
Ajax:  You big big big big big cat.Speak thy.Speak thy.Speak thy. 

Pruébalo en línea!

Imprime tres espacios. Sin espacios de impresión:

Lenguaje de programación Shakespeare , 227 bytes

,.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]Ajax:You is the sum of a big big big big big big cat a big pig.
You is the sum of you a large huge large big pig.
Speak thy.Speak thy.You is the sum of you a big pig.Speak thy.

Pruébalo en línea!

Al igual que mi respuesta INTERCAL libre de nueva línea, esta se construye para hacer que el último carácter del programa sea el mismo que el del medio (aunque en este caso no es también el primero), al anular el golf de la segunda mitad del código hasta que partido. (No estoy seguro si podría haber construido 46 en menos bytes o no, o si podría haber jugado golf otras partes de la primera mitad más).


2
No esperaba que Shakespeare apareciera para esto. Esto es genial
bigyihsuan

1
¡Ojalá pudiera hacer +1 solo por aprender este idioma!
Stilez

1
incluso en los mensajes de salida de depuración del intérprete en línea, el sentido del humor de los autores muestra: Advertencia en la línea 2: 'mente' esperada
dlatikay

1
163 bytes para la segunda versión terminando con un!
Robin Ryder

1
@UnrelatedString OK, gracias! Hecho .
Robin Ryder

14

Python 2 , 13 11 bytes


print' t' 

Para aclarar el espacio en blanco:

$ xxd solution.py
0000000: 0a70 7269 6e74 2720 7427 20           .print' t'
$ python2 solution.py | xxd
0000000: 2074 0a                                t.

Pruébalo en línea!

-2 bytes, gracias a wastl!


66
Ambos generan espacios en blanco al final (nueva línea), que no está permitido. Alternativa a Python 2: ¡ Pruébelo en línea!
wastl

Además, no creo que esto sea válido: Python requiere que tengas una nueva línea vacía al final de tu código.
Geza Kerecsenyi

55
@GezaKerecsenyi Según tengo entendido, una nueva línea al final del código fuente es solo una recomendación. Ver PEP8.
mypetlion

1
@GezaKerecsenyi Solo una guía
mbomb007

@wastl Gracias! Fijo.
TFeld

11

RProgN 2 , 3 bytes

1
0

Pruébalo en línea!

Creo que esto es valido?


Estoy adivinando 1y me 0empujan a una pila, ¿luego una impresión pop implícita al final del programa? Sí, es válido
bigyihsuan

2
@bigyihsuan, eso es lo que supongo también; No sé el idioma, solo recuerdo que hace cosas como esta: p
dzaima

@dzaima Jaja, cuando publicas una respuesta y ni siquiera sabes cómo funciona. xD De hecho, he visto RProgN varias veces antes con viejos [quine]desafíos, antes de que cambiaran las reglas de quine.
Kevin Cruijssen

Creo que esto es políglota en tacLinux.
tsh

11

05AB1E , 7 5 bytes


„ RR

Salidas R \n.

-2 bytes inspirándose en la respuesta Batch de @Neil , ¡así que asegúrese de votarlo también!

Pruébalo en línea.

Alternativa de 5 bytes por @Grimy :


12,1

Salidas 12\n.

Pruébalo en línea.

Respuesta inicial de 7 bytes :

'?„«'«?

Salidas ?«'.

Pruébalo en línea.

Explicación:

          # No-op newline
 R       # Push 2-char string " R"
   R      # Reverse this string to "R "
          # (output the result implicitly with trailing newline)

          # No-op newline
12,       # Print 12 with trailing newline
   1      # Push a 1 (no implicit printing, since we already did an explicit print)

'?       '# Push 1-char string "?"
  „«'    '# Push 2-char string "«'"
     «    # Concatenate them both together
      ?   # Output without trailing newline


8

PHP , 9 bytes

<?=";;<";

Pruébalo en línea!


3
En realidad, dado que PHP genera código como texto hasta la primera <?etiqueta, podría usar una de las soluciones triviales de 4 bytes, como 1231: cualquier cosa sin un carácter especial como primero y último, cualquier otro 2 caracteres en el medio. Su respuesta puede ser la respuesta PHP de código real más corta .
manassehkatz


7

Excel, 9 bytes

=("))=" )

Tantos paréntesis.

Nota: El carácter medio devuelto puede ser cualquier carácter, ya que es la mitad del código.


Paréntesis! (Bombilla) Me quedé atrapado con el último personaje que necesitaba ser ". ¡Bien hecho!
Wernisch

¡Gracias! Era algo que también estaba tratando de resolver, y luego recordé que los paréntesis funcionarían.
William Porter

6

Ruby , 6 bytes


p " "

Pruébalo en línea!

Esto genera " "más una nueva línea. El código termina con a ", los dos caracteres del medio son y ", y comienza con una nueva línea.


3
Me gusta tu insignia, creo que es una escala de grises xor en N². Generé casi la misma imagen para ayudarme con un problema del Proyecto Euler Nim. ¿Tu insignia tiene una historia?
Damien

1
¡Buena atrapada! Simplemente me gusta "garabatear" durante las reuniones generando imágenes usando frases sencillas; xor fue uno de los primeros favoritos.
histocrat

6

Lenguaje de lote DOS / Windows, 9 bytes

@echo @o@

¡Bienvenido a Code Golf & Coding Challenges Stack Exchange, +1 para una buena primera publicación!
A _


5

Lote, 9 caracteres.


@echo hh

El medio y el último carácter son ambos h, y luego echoimprime una nueva línea por defecto, que es el primer carácter del guión.


5

PowerShell, 3 bytes

00000000: 0a0d 31                                  ..1

Funciona solo en Microsoft Windows.

La salida es, lamentablemente, de 8 bytes en UTF-16. Pero la pregunta dice salida de los caracteres, y no los bytes. Podría decirse que UTF-16 es solo una de las formas compatibles para representar los caracteres en PowerShell. No se interpretan de manera diferente a un archivo ASCII.


es una respuesta inteligente
mazzy

1
permitido porque 0x0a != 0x0d != 0x31:)
bigyihsuan

5

Bash ( 15 11 caracteres)

echo -n e-e

que imprime

e-e
  • -4 caracteres al no usar |rev

1
@racraman Tu edición sugerida de echo<space>e<space><space>esaldrá en e<space>e<newline>lugar de e<space>e, así que la he rechazado. La nueva línea es parte de la salida, por lo que GrzegorzOledzki está utilizando la -nopción. Pruebe en echo -n e-elínea vs Pruebe en echo e elínea . Y de nuevo, por favor no edite la respuesta de otras personas. Si tiene un campo de golf que sugerir, deje un comentario.
Kevin Cruijssen

también 11 bytes con printf pfp, pero solo porque necesitamos dos espacios debido a esa definición de carácter medio, de lo contrario sería 10 ...
pLumo

5

ArnoldC , 61 bytes

IT'S SHOWTIME
TALK TO THE HAND "D I"
YOU HAVE BEEN TERMINATED

Pruébalo en línea!

Respuesta trivial en ArnoldC. El 31 byte es el espacio justo antes de la cadena literal.


5

Baja carga , 9 bytes 7 bytes

¡Gracias a Khuldraeseth na'Barya por la solución mejorada!

W(SSW)S

En cuanto a lo que puedo decir, esto ahora no es mejorable ya que:

  • El primer carácter tiene que ser un carácter no operativo, ya que cualquier otra instrucción genera un error debido a que la pila está vacía, con la excepción de un corchete de apertura. Sin embargo, no puede ser eso, ya que no hay forma de generar un soporte de apertura por sí solo en Underload.
  • Debe usar al menos 5 caracteres para agregar los 3 caracteres de salida a la pila.
  • Necesita usar S para generarlo.

Pruébalo en línea!


¡Bienvenido a Code Golf SE! Puede guardar un par de bytes omitiendo la copia, así .
Khuldraeseth na'Barya

5

Lenguaje de programación Shakespeare , 163 153 bytes

-10 bytes gracias a Jo King.

B,.Ajax,.Page,.Act I:.Scene I:.[Enter Ajax and Page]Ajax:You is
the sum ofa Big Big Big BIG BIG cat a
CAT.Speak thy.You is twice you.Speak thy!SPEAK THY!

Pruébalo en línea!

Mi primera respuesta SPL! Salidas !BB.

Hay otra respuesta SPL por Cadena no relacionada; en esa respuesta, solo generan espacios en 119 bytes, o generan caracteres no espaciales en 227 bytes. Este viene en el medio, y también genera caracteres que no son espaciales.

Aquí se usan dos trucos:

  1. !.!25 5+1.
  2. Duplicar 33 da 66, el punto de código de B, por lo tanto, el título de la reproducción es By necesito que el segundo "grande" sea "Grande", lo que funciona ya que SPL no distingue entre mayúsculas y minúsculas.

Como necesitaba ese capital By un signo de exclamación al final, decidí que Ajax gritara cada vez más fuerte a través de la escena.


4

CJam , 7 bytes

'@'' _@

Pruébalo en línea!


44
Bastante seguro 0 1 0es más corto y también tiene tres caracteres distintos (no quiero volver a publicar mi enfoque Jelly: P).
Erik the Outgolfer

1
@EriktheOutgolfer Bueno, aunque !. Pero eso es igual que su respuesta, así que lo dejaré como está
Luis Mendo

2
Sí, es por eso que comenté, realmente no quería publicar lo mismo dos veces. (Hm ... esta podría ser la solución óptima para muchos idiomas). De todos modos, ¡el tuyo podría ser aplicable en otros lugares también!
Erik the Outgolfer

4

Befunge-93 , 7 bytes

.",  @0

Pruébalo en línea!

Explicación

La salida es 0 .

.       pop value (0) from stack, output as number with a trailing space
 "      toggle string mode, wraps around and pushes every char to the stack
  ,     pop value (".") from stack, output as character 
        spaces are no-ops
     @  end the program
      0 trailing 0 to match the output

4

APL (Dyalog Unicode) , 5 4 bytes

Programas completos

Solución aburrida de J.Sallé:

1231

Imprime ese número. Una solución mucho más interesante:

010E1

Pruébalo en línea!

APL ignora los ceros iniciales, por lo que este es simplemente un formato escalado para 10 × 10¹ = 100.


4

Chef , 447 bytes

Last Middle First Milkshake.

This recipe prints its last, middle and first character.
You could also use it to make a milkshake. 

Ingredients.
76 ml milk
32 ml chocolate syrup
46 teaspoons vanilla ice cream

Method.
Liquefy vanilla ice cream.
Put the milk into 1st mixing bowl.
Put the chocolate syrup into 1st mixing bowl.
Put the vanilla ice cream into 1st mixing bowl.
Pour contents of the 1st mixing bowl into the 1st baking dish.

Serves 1.

Pruébalo en línea!

Una sumisión seria, 196 177 bytes

gracias a A__

R.

Ingredients.
82 l a
103 l b
46 l c

Method.
Put a into mixing bowl.
Put b into mixing bowl.
Put c into mixing bowl.
Pour contents of mixing bowl into baking dish.

Serves 1.

Pruébalo en línea!


Ver los programas de Chef me hace preguntarme cuál es el mínimo para ello.
bigyihsuan

@bigyihsuan ver mi edición
user24343

Puede eliminar todos los "the" y hacer que el programa siga funcionando .
A _

Yo creé un programa de trabajo. (177 bytes)
A _

4

Python 3, 19 bytes 13 bytes


print( ')(')

La función de impresión agrega una nueva línea de forma predeterminada, por lo que el código comienza con una nueva línea. El último carácter del código es un ")", por lo que se imprime primero. Para que el número de caracteres sea desigual, se inserta un espacio antes del argumento de la función de impresión. Por favor, disculpe la salazidad del código.

Salidas: )(\n

Pruébalo en línea.


1
Dependiendo de cómo funcionen las reglas, podría tener 13 bytes jugando con su respuesta: `print (") (")` Tenga en cuenta que hay una nueva línea arriba printy un espacio en blanco adentro printdespués ")(". Salidas: )( con una nueva línea al final.
Hoog

¡Gracias, hasta 13 bytes! Como la pregunta se refiere específicamente a espacios en blanco pero no a nuevas líneas, supondré que las nuevas líneas finales, como el endparámetro predeterminado de la función de impresión, no cuentan.
jaaq

Esto imprime una nueva línea final pero no lo tiene en cuenta.
A _

No estoy seguro si las nuevas líneas cuentan como espacios en blanco, pero agregué la segunda versión también de 13 bytes.
jaaq

1
Sí, las nuevas líneas cuentan como espacios en blanco, al igual que las pestañas y espacios, entre otros
Jo King

4

Espacio en blanco , 31 29 bytes

[S aS S T   S S S S S N
_Push_32][S N
S _Duplicate_32][S N
S _Duplicate_32][T  N
S S _Print_as_character][T  N
S S _Print_as_character][T  N
S S _Print_as_character]

-2 bytes gracias a @RobinRyder .

Se agregaron letras S(espacio), T(tabulación) y N(nueva línea) solo como resaltado.
[..._some_action]agregado solo como explicación.

Pruébelo en línea (solo con espacios en bruto, pestañas y nuevas líneas).

Contiene un no-op a(puede ser cualquier carácter que no sea un espacio en blanco) para hacer que la longitud sea impar. Se agrega antes de la primera mitad del programa, por lo que el carácter del medio también es un espacio, ya que el carácter del medio se habría convertido en una nueva línea si estuviera en la segunda mitad del programa. Todos los caracteres que no son espacios en blanco se ignoran en los programas de espacios en blanco.




3

Brain-Flak , 11 bytes

(((())))

Pruébalo en línea!

Explicación

Necesitamos poner 3 cosas en la pila. La forma más rápida de hacerlo es poner 3 1s (o ceros) en la pila. Ahora, dado que (el punto de código 1) no hace nada en Brain-Flak, podemos agregarlos al programa en el primer lugar intermedio y último. Ahora, esto se siente un poco engañoso, así que aquí hay dos respuestas más que son menos engañosas en mi opinión.

Imprime llaves, 31 bytes

( (((((()()()()()){}){}){}))())

Pruébalo en línea!

Esta respuesta imprime llaves para que los caracteres impresos sean realmente relevantes para el código, tiene un carácter de relleno para que la longitud sea impar, por lo que solo tenemos que imprimir 1 carácter central.

Contiene solo llaves, 32 bytes

(((()((((()(()()){}){}){}){}))))

Pruébalo en línea!

Este es un programa solo con llaves, tanto la fuente como (en consecuencia) la salida están formadas completamente por llaves (el personaje Brain-Flak realmente se preocupa).


3

AsciiDots - 9 bytes

.---$'.$.

Salida: .$.

El código comienza con a ., termina con a .y el carácter del medio es a $. La comilla simple en el medio establece el modo de impresión de puntos para simplemente leer los caracteres directamente en la secuencia de salida.

Es posible que esto se haga más pequeño, pero estoy empezando a dudar de que sí. Para imprimir tres caracteres, se debe usar la comilla simple, ya que la comilla doble requeriría el final de la cadena para poder salir. Sin embargo, esto significa que la comilla simple tiene que a) ir seguida de tres caracteres yb) no puede ser el carácter central. Para reducir esto a siete bytes, estaba considerando intentar reutilizar el inicio del punto como uno de los caracteres impresos (algo así como el programa de quine de AsciiDot). Sin embargo, descubrí que la secuencia más corta disponible para imprimir era($'que habría tenido que imprimir cuatro caracteres en el espacio de tres, o tres caracteres en el espacio de cuatro. También probé algunos métodos alternativos hacky como intentar imprimir el valor del punto (que es 0) como uno de los caracteres. Si bien puede haber algún sistema que funcione, he encontrado que estos son bastante complejos y grandes. Por lo tanto, creo que lo anterior es la solución más pequeña. (Actualizaré si encuentro algo más pequeño)


¡Bienvenido a Code Golf SE! Estuve jugando con esto durante unos minutos y llegué a la misma conclusión que tú. Bonito primer post!
Khuldraeseth na'Barya

1
Alternativa de 9 bytes - ¡ /'$'-.[newline]\.Pruébelo en línea!
Alion

3

MATLAB, 13 15 bytes

disp(  ') d')

Salidas ) d

Versión anterior (15 bytes, salida menos estricta):

'''';1;''''''''

Salidas '''


Ahora veo, ahora se preocupa.
Wheat Wizard

¿Esta salida no deja espacio en blanco?
Sanchises

@Sanchises no, size (ans) == 3
Oct18 es día de silencio el SE

Sí, pero la salida real es ans =\n '''\n. Por lo general, eso no es un problema, pero este desafío parece establecer un estándar más estricto. Pero entonces puedo estar interpretando mal el desafío.
Sanchises

@Sanchises hm, ya veo. podría malinterpretar lo que codegolf considera "salida", entonces, su salida parece ser literalmente la salida, formateada por MATLAB
18 de octubre es un día de silencio el
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.