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 n
caracteres e indexación 1:
- Si
n
es par, imprima los caracteresn/2
-th yn/2 + 1
-th. (abcdef == cd
) - Si
n
es extraño, imprime el(n-1)/2 + 1
cará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 >= 3
caracteres largos. - El código debe constar de
>= 3
caracteres únicos. - Las lagunas estándar están prohibidas.
- Este es el código de golf , 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
121
para muchos idiomas.-
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.Respuestas:
JavaScript,
97 bytesSalidas:
NaN
Pruébalo en línea!
fuente
Grass , 17 bytes
Pruébalo en línea!
-2 bytes gracias a jimmy23013.
Salidas
www
. Hierba ignora todos los caracteres aparte dew
,W
yv
. Los dosV
s se ignoran así; están ahí para garantizar que el carácter del medio sea unw
- No tengo idea de cómo salirv
oW
en Grass ... Podría haber usado otro personaje en lugar deV
, peroV
conserva la estética del código.fuente
x
s (o cualquier otro personaje que no sea Grass, que Grass ignora) para mover a unw
lugar correcto.wWWwww wWWwWWWww
V
s porque me parece más bonito. ;-)brainfuck , 17 bytes
Pruébalo en línea!
Con no imprimibles esto se puede reducir a 7 bytes:
␀..␀_.␀
fuente
U
como una instrucción. Funcionalmente, el código es-[>+<---]>.
, por lo que la salida esperada sería.--
, que no genera.U
sy 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)?U-[>+<-UU--]>...U
? En su forma actual, el código solo muestra una Uÿ-.ÿ..ÿ
? Eso es imprimible y corto.Lenguaje de programación Shakespeare , 119 bytes
Pruébalo en línea!
Imprime tres espacios. Sin espacios de impresión:
Lenguaje de programación Shakespeare , 227 bytes
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).
fuente
!
Python 2 ,
1311 bytesPara aclarar el espacio en blanco:
Pruébalo en línea!
-2 bytes, gracias a wastl!
fuente
RProgN 2 , 3 bytes
Pruébalo en línea!
Creo que esto es valido?
fuente
1
y me0
empujan a una pila, ¿luego una impresión pop implícita al final del programa? Sí, es válido[quine]
desafíos, antes de que cambiaran las reglas de quine.tac
Linux.05AB1E ,
75 bytesSalidas
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 :
Salidas
12\n
.Pruébalo en línea.
Respuesta inicial de 7 bytes :
Salidas
?«'
.Pruébalo en línea.
Explicación:
fuente
PHP , 9 bytes
Pruébalo en línea!
fuente
<?
etiqueta, podría usar una de las soluciones triviales de 4 bytes, como1231
: 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 .Jalea , 5 bytes
Pruébalo en línea!
La salida tiene dos caracteres distintos, pero el código también tiene un tercero.
Versión trivial de 4 bytes:
fuente
121
también una respuesta trivial válida?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.
fuente
"
. ¡Bien hecho!Ruby , 6 bytes
Pruébalo en línea!
Esto genera
" "
más una nueva línea. El código termina con a"
, los dos caracteres del medio sony
"
, y comienza con una nueva línea.fuente
Lenguaje de lote DOS / Windows, 9 bytes
fuente
Ruby ,
119 bytesPruébalo en línea!
fuente
Lote, 9 caracteres.
El medio y el último carácter son ambos
h
, y luegoecho
imprime una nueva línea por defecto, que es el primer carácter del guión.fuente
PowerShell, 3 bytes
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.
fuente
0x0a != 0x0d != 0x31
:)Bash (
1511 caracteres)que imprime
|rev
fuente
echo<space>e<space><space>e
saldrá ene<space>e<newline>
lugar dee<space>e
, así que la he rechazado. La nueva línea es parte de la salida, por lo que GrzegorzOledzki está utilizando la-n
opción. Pruebe enecho -n e-e
línea vs Pruebe enecho e e
línea . Y de nuevo, por favor no edite la respuesta de otras personas. Si tiene un campo de golf que sugerir, deje un comentario.printf pfp
, pero solo porque necesitamos dos espacios debido a esa definición de carácter medio, de lo contrario sería 10 ...ArnoldC , 61 bytes
Pruébalo en línea!
Respuesta trivial en ArnoldC. El 31 byte es el espacio justo antes de la cadena literal.
fuente
Baja carga ,
9 bytes7 bytes¡Gracias a Khuldraeseth na'Barya por la solución mejorada!
En cuanto a lo que puedo decir, esto ahora no es mejorable ya que:
Pruébalo en línea!
fuente
Lenguaje de programación Shakespeare ,
163153 bytes-10 bytes gracias a Jo King.
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:
!
.
!
.
B
, por lo tanto, el título de la reproducción esB
y 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
B
y un signo de exclamación al final, decidí que Ajax gritara cada vez más fuerte a través de la escena.fuente
CJam , 7 bytes
Pruébalo en línea!
fuente
0 1 0
es más corto y también tiene tres caracteres distintos (no quiero volver a publicar mi enfoque Jelly: P).Befunge-93 , 7 bytes
Pruébalo en línea!
Explicación
La salida es
0 .
fuente
APL (Dyalog Unicode) ,
54 bytesProgramas completos
Solución aburrida de J.Sallé:
Imprime ese número. Una solución mucho más interesante:
Pruébalo en línea!
APL ignora los ceros iniciales, por lo que este es simplemente un formato escalado para 10 × 10¹ = 100.
fuente
Chef , 447 bytes
Pruébalo en línea!
Una sumisión seria,
196177 bytesgracias a A__
Pruébalo en línea!
fuente
Python 3,
19 bytes13 bytesLa 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.
fuente
print
y un espacio en blanco adentroprint
después")("
. Salidas:)(
con una nueva línea al final.end
parámetro predeterminado de la función de impresión, no cuentan.Espacio en blanco ,
3129 bytes-2 bytes gracias a @RobinRyder .
Se agregaron letras
S
(espacio),T
(tabulación) yN
(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.fuente
Haskell , 17 bytes
Pruébalo en línea!
fuente
MathGolf ,
54 bytes-1 byte utilizando la solución trivial presentada por @ErikTheOutgolfer en su respuesta Jelly , que funciona para cualquier lenguaje con salida implícita sin saltos de línea nueva.
Pruébalo en línea.
Respuesta original de 5 bytes :
Salidas
x ù
.Pruébalo en línea.
Explicación:
fuente
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).
fuente
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)fuente
/'$'-.[newline]\.
Pruébelo en línea!MATLAB, 13
15bytesSalidas
) d
Versión anterior (15 bytes, salida menos estricta):
Salidas
'''
fuente
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.