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.
code-golf
restricted-source
hello-world
palindrome
lirtosiast
fuente
fuente
Hello, world!
yHello World!
son las únicas salidas permitidas para un hola-mundo programa.Respuestas:
/// , 37 bytes
fuente
TI-BASIC, 67 bytes
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 :
fuente
e
yi
(los números) para reducir aún más el recuento de bytes?Sé que esto es un poco tarde (y un poco quisquilloso), pero ...
> <> (Pez),
474547 Bytes (realmente4345, si no estuviera usando la dirección aleatoria)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áso
.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)
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.
fuente
Chicle , 38 bytes
fuente
Macarrones 0.0.2 , 52 bytes
Una solución que no usa comentarios. (Principalmente porque los macarrones no tienen comentarios ...)
fuente
CJam, 41 bytes
Gracias a Dennis por los tres bytes de descuento.
fuente
Foo, 39 bytes
Pruébalo en línea.
fuente
!tenalP ,sgniteerG"Greetings, Planet!
Guarda algunos bytes.JavaScript, 56 bytes
Esto puede ejecutarse en cualquier navegador.
fuente
print/tnirp
conalert/trela
, funciona en otros motores, también.alert`Greetings, Planet!`//`!tenalP ,sgniteerG`trela
es de 52 bytesGolfScript, 41 bytes
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.
imprimiría
fuente
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.
fuente
Python 3, 57 bytes
Solucioné el problema con paréntesis.
Python 2, 53 bytes
Aproveché la ventaja de la falta de paréntesis y espacios requeridos en Python 2, pero no había tanta diferencia.
fuente
Gelatina, no competidora
25 bytes Esta respuesta no es competitiva, ya que el desafío es anterior a la creación de Jelly.
¡Mira, no hay comentarios! Pruébalo en línea!
Cómo funciona
fuente
Atascado , 41 Bytes
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.
fuente
Mathematica, 52 bytes
También genera un
Null "!tenalP ,sgniteerG"[tnirP]
que no se imprime.fuente
Echo
inv10.3
.Fisión ,
4543 bytesGracias a jimmy23013 por guardar 2 bytes.
Pruébalo en línea!
R
Inicializa 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.fuente
05AB1E , 16 bytes
Código:
Explicación:
Pruébalo en línea!
fuente
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 [something]
cambia el delimitador (inicialmente un retorno de carro) a;
menos que [algo] seacr
, 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.fuente
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.
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.
fuente
APL, 41 bytes
En APL, se imprime el último valor y el carácter de la lámpara (⍝) comienza un comentario.
fuente
GolfScript , 41 bytes
Pruébalo en línea!
fuente
TCL, 80 bytes
explicación: TCL ejecuta un proceso global
unknown
cuando 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
,nwonknu
ycorp
. No}"!dlroW olleH"
se ha definido ningún comando nombrado , por loundefined
que 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í.
fuente
Barril , 41 bytes
Pruébalo en línea!
fuente
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.
El
Z
personaje muestra todo en la pila a STDOUT.Pruébalo en línea!
fuente
Unefunge 98 - 49 bytes
El código anterior contiene dos caracteres no imprimibles con el código 17 (control de dispositivo 1) representado por
<DC1>
.fuente
MSM , 73 bytes
La primera mitad justo antes del medio
,
construye una cadena de saludo inversa que incluye el adicionalG
a 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 els
. Ambos,
ys
necesitan un reemplazo para los puntos de concatenación izquierdos, de ahí elG
s. El,
de la derecha no se ejecuta, sino que se integra en la cadena final.fuente
CoffeeScript, 53 bytes
Similar a Ruby y Lua y casi todas las variantes aquí.
fuente
Ruby, 43 bytes
fuente
Bash,
5248 bytesTambién funciona en ksh, zsh, yash, dash. Pero no tcsh.
fuente
Lua, 52 bytes
En la terminal Lua, solo tiene 44 bytes con
fuente
=
en la terminal, por lo que está a 2 bytes de allí. Creo que existió en 2015, aunque no estoy seguro.Vía Láctea 1.5.10 ,
434139 bytesExplicación
Uso
fuente