Palindrome Hola Mundo


29

Su tarea es crear un programa que imprima "¡Saludos, planeta!" exactamente a la consola. Parece bastante simple, ¿verdad? Bueno, aquí está el truco. El código debe ser un palíndromo, lo que significa que lee de derecha a izquierda lo mismo que de izquierda a derecha. Las lagunas estándar NO están permitidas.


Esto no parece ser "hola mundo".
Erik the Outgolfer

44
@ ΈρικΚωνσταντόπουλος Es lo mismo que Hello World para todos los efectos. El objetivo es imprimir una cadena corta que consta de dos palabras con la puntuación común en los programas Hello World también. Además de las funciones integradas que imprimen Hello World, las soluciones serán absolutamente idénticas (aparte de la cadena real) independientemente de la cadena real que se imprima. (Y supongo que los "Saludos, Planeta!" Frase fue elegido específicamente para hacer muebles empotrados inútil.)
Martin Ender

1
@ MartinBüttner creo que Hello, world!y Hello World!son las únicas salidas permitidas para un hola-mundo programa.
Erik the Outgolfer

Respuestas:



16

TI-BASIC, 67 bytes

"!tenalP ,sgniteerG"
"Greetings, Planet!"

Esto funciona porque la última línea de un programa se muestra en la pantalla, mientras que la primera cadena se trata esencialmente como un comentario.

Cada letra minúscula se almacena como 2 bytes, y los caracteres restantes son 1 byte. Si tuviera que doblar las reglas e imprimir en mayúsculas, sería de 41 bytes :

"!TENALP ,SGNITEERG"
"GREETINGS, PLANET!"

¿Se puede usar ey i(los números) para reducir aún más el recuento de bytes?
Addison Crump

1
@VTCAKAVSMoACE Lo consideré, pero en cursiva, por lo que se ven, un poco diferentes.
NinjaBearMonkey

Para que quede claro, la primera línea no es un comentario, se almacena en la variable de respuesta.
Julian Lachniet

12

Sé que esto es un poco tarde (y un poco quisquilloso), pero ...

> <> (Pez), 47 45 47 Bytes (realmente 43 45, si no estuviera usando la dirección aleatoria)

x"!tenalP ,sgniteerG"!|o|!"Greetings, Planet!"x

Estas respuestas son un poco diferentes entre sí; existe la posibilidad de que se ejecute cualquier dirección de código .

Entonces, al "imprimir en la consola", supuse que se refería a imprimir en stdout. Esto arroja un error; el error se lanza a stderr DESPUÉS de que la cadena se imprime en stdout.

Para demostrar que esto funcionó en ambos sentidos, utilicé el director de "dirección aleatoria", "x". Fish es un lenguaje bidimensional, por lo tanto, no importa en qué dirección señale el director, el código se ejecutará (eventualmente).

Suponiendo que el primer director apunta a la derecha, los personajes se cargan en la "pila" en orden inverso, luego se imprime el reverso del reverso (o el texto normal).

Suponiendo que ambos directores apuntan a la izquierda, los personajes se cargan una vez más en la "pila" en orden inverso (porque el código lo carga al revés aquí, la dirección es a la izquierda), luego el reverso del reverso (o se imprime el texto normal).

Si el director aleatorizado apunta hacia arriba o hacia abajo, esto no importará: el pez sabe hacer un bucle en la parte inferior o superior del código, apuntando hacia el aleatorizador. De esta manera, continuará girando con los aleatorizadores hasta que apunte hacia adentro, hacia el código a ejecutar.

El !|o|!bit hace lo siguiente, desde ambos lados:

  • !salta la siguiente instrucción (siempre saltará |)

  • |es un reflector; apunta hacia adentro hacia atrás o.

  • o saca el elemento actual de la pila a la consola como un personaje y lo elimina de la pila.

Entonces, esencialmente, este es el truco de "dos espejos en un baño juntos", donde salgo hasta que ya no puedo.

Ahora usando un gato emoji. >o<redirige la salida hacia el interior infinitamente, aún arrojando el error, pero puedo evitar no usar un salto en la reflexión.

Resulta que tenía razón la primera vez: el segundo intento no fue palindrómico , pero fue reflexivo .

Pescado (sin imprimir en stderr), 64 bytes (ew)

x"!tenalP ,sgniteerG"!;oooooooooooooooooo;!"Greetings, Planet!"x

Este tipo es un poco más largo.

Tiene la misma función de flecha aleatoria (para demostrar que funciona en ambos sentidos) y no imprime en stderr.

La diferencia aquí es obvia; Literalmente imprimo cada elemento en la pila, luego finalizo la ejecución con ;.

El !;no finaliza la ejecución inmediatamente, ya que !omite el siguiente elemento (end exec, en este caso) y continúa hasta que llega al otro lado, que actúa como ;!, en el que finaliza la ejecución antes de omitir cualquier cosa.

Sigue el mismo patrón de dirección aleatorio que la respuesta más corta.


Creo que deberías llamar al idioma> <> para distinguirlo de la concha de pescado
Aaron

@ Aaron A menudo se supone que Fish aquí significa> <>, pero he encontrado ese problema antes, lo agregaré. ¡Gracias!
Addison Crump

como supongo, no es previsible si el código completo se ejecutará o no. ¿Qué sucede si el contador del programa está atascado entre dos instrucciones de dirección aleatoria, o simplemente atascado en una de las instrucciones de dirección aleatoria, por ejemplo, gira hacia abajo, llega al final, vuelve a esa instrucción y comienza de nuevo?

@GLASSIC El programa solo saldrá una vez, y el código completo nunca se ejecutará.
Addison Crump

11

Chicle , 38 bytes

0000000: 73 2f 4a 4d 2d c9 cc 4b 2f d6 51 08 c8 49 cc 4b 2d 51 04  s/JM-..K/.Q..I.K-Q.
0000013: 04 51 2d 4b cc 49 c8 08 51 d6 2f 4b cc c9 2d 4d 4a 2f 73  .Q-K.I..Q./K..-MJ/s

10

Macarrones 0.0.2 , 52 bytes

print "Greetings, Planet!""!tenalP ,sgniteerG" tnirp

Una solución que no usa comentarios. (Principalmente porque los macarrones no tienen comentarios ...)


15
¿Macarrones no tiene comentarios? ಠ_ಠ
Alex A.

8

CJam, 41 bytes

Gracias a Dennis por los tres bytes de descuento.

"!tenalP ,sgniteerG";"Greetings, Planet!"

2
Necesitas mover las cuerdas. En este momento, está sacando el resultado correcto e imprimiendo el reverso.
NinjaBearMonkey

@NinjaBearMonkey Whoops. Fijación.
The_Basset_Hound

También funciona en GolfScript.
Ilmari Karonen



5

GolfScript, 41 bytes

"Greetings, Planet!":"!tenalP ,sgniteerG"

Mira mamá, no hay operaciones! Pruébelo en línea en Web GolfScript .

La segunda mitad del código fuente almacena la cadena en la segunda cadena.

"Greetings, Planet!":"!tenalP ,sgniteerG"
"!tenalP ,sgniteerG"

imprimiría

Greetings, Planet!Greetings, Planet!

5

C ++, 129 bytes

Intentar hacer esto sin comentarios me llevó a una profunda y oscura pesadilla de preprocesador sin salida que pudiera ver. En cambio, solo he tratado de hacerlo lo más corto posible.

/**/
#include<cstdio>
int main(){puts("Greetings Planet!");}//*/
/*//};)"!tenalP sgniteerG"(stup{)(niam tni
>oidtsc<edulcni#
/**/

5

Python 3, 57 bytes

print('Greetings, Planet!')#)'!tenalP ,sgniteerG'(tnirp

Solucioné el problema con paréntesis.

Python 2, 53 bytes

print'Greetings, Planet!'#'!tenalP ,sgniteerG'tnirp

Aproveché la ventaja de la falta de paréntesis y espacios requeridos en Python 2, pero no había tanta diferencia.


5

Gelatina, no competidora

25 bytes Esta respuesta no es competitiva, ya que el desafío es anterior a la creación de Jelly.

»1ị“RsẈḄ,#ʠU“Uʠ#,ḄẈsR“ị1»

¡Mira, no hay comentarios! Pruébalo en línea!

Cómo funciona

»1ị“RsẈḄ,#ʠU“Uʠ#,ḄẈsR“ị1»  Main link. No arguments.

   “        “        “  »  Decompress all three strings; yield a list of strings.
    RsẈḄ,#ʠU               (decompresses to 'Greetings, Planet!')
             Uʠ#,ḄẈsR      (decompresses to ' WafdkmC Posited,')
                      ị1   (decompresses to 'Taarhus')

»1                         Take the maximum of the default argument (0) and 1.
  ị                        Select the string at the index to the left.

4

Atascado , 41 Bytes

"Greetings, Planet!"p"!tenalP ,sgniteerG"

Bastante similar a la respuesta de CJam, excepto en Stuck si se emite un comando de impresión, se suprime la impresión automática de la pila.


3

Mathematica, 52 bytes

Print@"Greetings, Planet!""!tenalP ,sgniteerG"@tnirP

También genera un Null "!tenalP ,sgniteerG"[tnirP]que no se imprime.


1
Para su información, muchas de sus respuestas (esta incluida) han sido arrojadas a la cola de baja calidad porque son únicamente un título / puntaje y un código. Aunque no tiene nada de malo, puede considerar agregar más texto (como una explicación) para que no se marquen automáticamente.
Mego

@Mego Ok, pensé que se explicaban por sí mismas.
LegionMammal978

1
No estoy diciendo que la falta de una explicación sea algo malo (aunque las respuestas con explicaciones tienden a obtener más votos positivos), solo le estoy haciendo saber que sus respuestas (válidas) se marcaron automáticamente debido a su longitud. :)
Mego

2
puede guardar 2 bytes con Echoin v10.3.
shrx

3

Fisión , 45 43 bytes

Gracias a jimmy23013 por guardar 2 bytes.

;"!tenalP ,sgniteerG"R"Greetings, Planet!";

Pruébalo en línea!

RInicializa un átomo que se mueve hacia la derecha. "alterna el modo de cadena que simplemente imprime la cadena deseada en STDOUT antes de presionar ;, lo que destruye el átomo y termina el programa. La primera mitad simplemente nunca se ejecuta.


@ jimmy23013 No tengo idea, para ser honesto. Gracias.
Martin Ender

3

05AB1E , 16 bytes

Código:

”!º¥,ÁÙ””ÙÁ,¥º!”

Explicación:

”!º¥,ÁÙ”          # Compressed string which results in "! Crm, Everywhere".
        ”ÙÁ,¥º!”  # Compressed string which results in "Greetings, Planet!".
                  # Top of stack is implicitly outputted.

Pruébalo en línea!


2

STATA, 52 bytes

di "Greetings, Planet!"//"!tenalP ,sgniteerG" id

Una versión un poco más larga (53 bytes) que no usa comentarios es:

#d
di "Greetings, Planet!";"!tenalP ,sgniteerG" id
d#

#d [something]cambia el delimitador (inicialmente un retorno de carro) a ;menos que [algo] sea cr, por lo que el primer comando cambia el delimitador a ;, el segundo imprime la cadena y el tercero (que continúa hasta el final) es aparentemente un nop, aunque no tengo idea de por qué. Habría adivinado que esto arrojaría un error (comando no reconocido "! TenalP, sgniteerG" o algo así), pero aparentemente no.


2

Japt , 29 bytes

Este lenguaje de programación se creó después de que se publicó la pregunta, pero no se hizo para esta pregunta.

`!t?ÓP ,?Ä>ÎG`;`GÎ>Ä?, PÓ?t!`

Pruébalo en línea!

Cada uno ?es un carácter Unicode no imprimible: U + 0082, U + 000F, U + 000F y U + 0082, respectivamente.

Dato curioso: si Japt se hubiera publicado un mes antes, habría ganado legítimamente este desafío.


2

APL, 41 bytes

'Greetings, Planet!'⍝'!tenalP ,sgniteerG'

En APL, se imprime el último valor y el carácter de la lámpara (⍝) comienza un comentario.


Hola y bienvenidos a PPCG! ¡Gran respuesta!
NoOneIsHere


2

TCL, 80 bytes

proc unknown args {puts "Hello World!"}
}"!dlroW olleH" stup{ sgra nwonknu corp

explicación: TCL ejecuta un proceso global unknowncuando encuentra una llamada a un comando indefinido, la primera línea redefine ese proceso a un simple programa "hello world".

Normas de cotización de TCL son muy sutiles, una llave de apertura comienza una palabra citado que se extiende a la siguiente coincidencia de llave de cierre, lo que permite, palabras citadas anidados. Las llaves se tratan como caracteres normales. cinco palabras: }"!dlroW olleH", stup{, sgra, nwonknuy corp. No }"!dlroW olleH"se ha definido ningún comando nombrado , por lo undefinedque se invoca el proceso de la primera línea.

Se publicó una pregunta similar en el StackOverflow de la antigüedad; que desde entonces se ha cerrado y eliminado. Utilicé mi solución como un ejemplo TCL irónico en esta respuesta , y ahora recibo comentarios pidiendo una explicación, así que recreé mi respuesta aquí.



1

Vitsy , 41 bytes

Este lenguaje de programación se creó después de que se publicó la pregunta, pero no se hizo para esta pregunta.

"! tenalP, sgniteerG" Z "¡Saludos, planeta!"

El Zpersonaje muestra todo en la pila a STDOUT.

Pruébalo en línea!


1

Unefunge 98 - 49 bytes

"!tenalP ,sgniteerG<DC1>"k,@,k"<DC1>Greetings, Planet!"

El código anterior contiene dos caracteres no imprimibles con el código 17 (control de dispositivo 1) representado por <DC1>.


1

MSM , 73 bytes

GGreetings, Planet!.................,.................!tenalP ,sgniteerGG

La primera mitad justo antes del medio ,construye una cadena de saludo inversa que incluye el adicional Ga la derecha. El medio lo ,suelta y el resto es un programa canónico de "Hola / Saludo / lo que sea". Se necesitan los caracteres adicionales en ambos extremos, porque el mensaje contiene un ,. El izquierdo se ejecuta y suelta el s. Ambos ,y snecesitan un reemplazo para los puntos de concatenación izquierdos, de ahí el Gs. El ,de la derecha no se ejecuta, sino que se integra en la cadena final.


1

CoffeeScript, 53 bytes

Similar a Ruby y Lua y casi todas las variantes aquí.

alert 'Greetings, Planet!'#'!tenalP ,sgniteerG' trela


1

Bash, 52 48 bytes

echo Greetings, Planet!||!tenalP ,sgniteerG ohce

También funciona en ksh, zsh, yash, dash. Pero no tcsh.

$ cat x.sh
echo Greetings, Planet!||!tenalP ,sgniteerG ohce
$ bash x.sh
Greetings, Planet!
$ ksh x.sh
Greetings, Planet!
$ zsh x.sh
Greetings, Planet!
$ yash x.sh
Greetings, Planet!
$ dash x.sh
Greetings, Planet!
$ tcsh x.sh
tenalP: Event not found.
$

1
Eliminar todas las comillas.
manatwork

1
Oh querido, una respuesta bash fue más corta que python = /. De vuelta a la mesa de dibujo!
Ashwin Gupta

1

Lua, 52 bytes

print"Greetings, Planet!"--"!tenalP ,sgniteerG"tnirp

En la terminal Lua, solo tiene 44 bytes con

="Greetings, Planet!"--"!tenalP ,sgniteerG"=

Mi error. Gracias por la alerta!
Digital Veer

Eliminar todos los paréntesis. Para funciones con un solo parámetro de cadena son opcionales.
manatwork

Lua 5.3 no requiere =en la terminal, por lo que está a 2 bytes de allí. Creo que existió en 2015, aunque no estoy seguro.
Val dice reinstalar a Mónica el

1

Vía Láctea 1.5.10 , 43 41 39 bytes

"Greetings, Planet!"!tenalP ,sgniteerG"

Explicación

"Greetings, Planet!"                       # push the string to the stack
                    !                      # output the TOS
                     tenalP ,sgniteerG"    # throws an error and exits

Uso

python3 milkyway.py <path-to-code>

¿ Realmente necesitas un comentario? Si esto se basa en la pila (sin salida implícita), entonces solo la salida de la pila debería funcionar.
Addison Crump

¡Tienes razón! Gracias. @FlagAsSpam
Zach Gates
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.