Escriba un programa que no tome datos e imprima Hello, World!
en stdout o la alternativa más cercana a su idioma. El problema es que cada línea en su programa solo debe contener caracteres ASCII imprimibles y debe estar en orden lexicográfico, también conocido como ordenado.
Aquí están todos los 95 caracteres ASCII imprimibles en orden:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Entonces, por ejemplo, la línea !!A0~
sería inválida porque A
y 0
están fuera de servicio. La línea !!0A~
sería válida.
Cada línea en su programa puede tener cualquier longitud y puede haber cualquier número de líneas. Las líneas vacías se consideran ordenadas. Cada una de las nuevas líneas en su programa debe ser la misma (sin mezclar \n
y \r\n
). Las pestañas y otros caracteres ASCII no imprimibles están prohibidos.
Debido a la demanda popular , la condición ganadora ha cambiado:
la presentación con la menor cantidad de líneas gana. Tiebreaker va al programa más corto (las nuevas líneas cuentan como caracteres individuales).
Solo se Hello, World!
debe generar una nueva línea final opcional. Tenga en cuenta que HQ9 + no es válido ya que sale hello, world
. Puedo prohibir idiomas similares a HQ9 + que tengan un carácter "¡Hola, mundo!" comandos debido a su trivialidad.
Insinuación:
Esto es definitivamente posible en Unario y Idioma , aunque no muy concisa.
fuente
Respuestas:
Headsecks , 1 línea, 366 bytes
Headsecks es una sustitución trivial de Brainfuck donde lo único que importa es el módulo de punto de código 8. El Brainfuck equivalente es simplemente
Afortunadamente, este enfoque ingenuo simplemente encaja. Hay algún potencial para jugar golf en bytes, pero puede ser difícil.
Probado con este intérprete de Python .
Generando código
fuente
/// , 7 líneas, 22 bytes
Una rara oportunidad para que /// sea competitivo (siempre y cuando nadie comience con Unary y Lenguage ...).
El código primero encuentra a
/
, y analiza elcomo una instrucción de sustitución que elimina todas las líneas nuevas del resto del programa. Luego, el programa simplemente lee
que se imprime textualmente ya que no contiene más barras.
fuente
JavaScript (
676662 líneas,227269 bytes)(Nota: solo probado en Firefox 36 y Safari 8, contiene características menores de ES6 (la
Set
clase))El código anterior básicamente hace:
Obviamente
alert
no está ordenado. Por lo tanto, debemos generar la declaración como una cadena y "evaluarla":¿Cómo generar la cadena? ES5 admite la continuación de línea para que
Pero el código de caracteres
\
aparece antes de todas las letras minúsculas, por lo que tenemos que generar las letras minúsculas utilizando otros métodos.Tomamos prestada alguna idea de JSFuck aquí. Las letras minúsculas involucradas en las declaraciones de alerta son:
Todo esto se puede extraer de los caracteres de los objetos estándar, que se pueden expresar en términos de una secuencia ordenada:
¿Cómo evaluamos la cadena? Seguramente no podemos usarlo
eval(s)
ya que no está ordenado. Alternativamente, podríamos usarFunction(s)()
, pero no podemos usar,Function
ya que tampoco está ordenado. Sin embargo,Function
es el constructor de todas las funciones, lo que significaSet.constructor === Function
.Al agregar el identificador,
constructor
la lista de letras minúsculas se convierte en:que afortunadamente aún podría ser generado por
"truefalseundefinedfunction"
:Después de la prettificación, el código anterior debería leer como:
Actualización: Ahora se llama
E
,L
,O
,R
,T
a varios repetición de$
reducir 4 líneas.fuente
=Z[3*7]
se puede escribir como=Z[~-22]
que solo necesita un salto de línea en lugar de dos.Insomnio , 4 líneas, 59 bytes
Este programa se genera al optimizar el recuento de líneas.
10 líneas, 43 bytes
Este programa anterior se genera al optimizar el recuento de bytes.
fuente
Cygwin bash, 16 líneas, 60 bytes
Esto solo funciona debido al nombre de archivo que no distingue entre mayúsculas y minúsculas en Windows, y al hecho de que Cygwin busca las utilidades sin distinción entre mayúsculas y minúsculas, incluso si no lo configura para reconocer la ruta entre mayúsculas y minúsculas.
Toma nota de eso
ECHO
al final.fuente
> <> , 6 líneas, 111 bytes
Tengo problemas para jugar una línea extra, pero en cualquier caso estoy feliz de haber superado el método de 7 líneas.
Explicación
> <> es un lenguaje 2D basado en pila donde las instrucciones son caracteres únicos y el flujo del programa puede ser arriba, abajo, izquierda o derecha. La
"
instrucción alterna el análisis de cadenas, empujando los caracteres hasta que se alcanza un cierre"
, pero debido a la naturaleza de> <> no existe el "análisis de cadenas de líneas múltiples" como las cadenas de CJam o las cadenas de triple cita de Python. ¡Esto resultó ser un problema importante porque no está permitido comenzar y terminar una línea con"
ay tener otros caracteres intermedios (por ejemplo"some chars"
)!Tenga en cuenta eso
/
y\
refleje el flujo del programa, por lo que en realidad ejecutamos la primera línea, luego todas las líneas en orden inverso, ¡y la mayoría de las líneas se ejecutan realmente hacia atrás!En una nota al margen, aquí hay un intento divertido de> <> menos bytes (23 líneas, 47 bytes):
fuente
CJam,
54 líneas, 162 bytes¡El mismo número de líneas que Insomnia! (pero muchos más bytes)
Pruébalo en línea .
Explicación
CJam imprime automáticamente la pila después.
Gracias a @Optimizer por recordarme que
Sc
funciona, porque de lo contrarioSX|
falla (hace un setwise o, en cambio, da la matriz que consiste en un espacio y 1).fuente
> <> (Pez) , 5 líneas, muchos bytes
¡El código es extremadamente largo, cuando digo
[6535529689086686142930090 '+' signs]
y[6535529689086686142930090 'd' characters]
en la primera línea del código, quiero decir que hay literalmente6535529689086686142930090
signos más en una fila!(Y para las siguientes líneas agregue los espacios de prefijo necesarios).
Una alternativa comprobable más corta que solo imprime
Hi
:Método:
:1(?;:882**%:o-288**,
.(Podemos imprimir una cadena larga arbitraria de más de 2 caracteres con este método).
fuente
[6535529689086686142930090 '+' signs]
y[6535529689086686142930090 'd' characters]
literalmente en la primera línea del código". (Si no está claro lo que quiere decir con que el registro de la segunda pieza de código.)PHP (7/17 líneas, 36/59 bytes):
Debido a la cantidad de respuesta no válida, reescribí esta respuesta.
La versión del navegador? Ido.
Pero tengo 2 soluciones, ambas basadas en bitwise
xor
(^
) de cadenas en PHP.¡Esta es una solución extremadamente poderosa! A veces, permite guardar muchos bytes.
Primero, la respuesta más corta:
Lo sé, se ve horrible, ¡pero funciona!
El siguiente depende de las nuevas líneas.
¡Sí, usa líneas nuevas (
\n
se requiere el estilo / UNIX)!Las nuevas líneas en este se requieren para trabajar.
¡No es perfecto, pero funciona!
Ambas respuestas se basaron en la solución de @ MartinBüttner :
Un agradecimiento especial a @ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ , @CJDennis , @ MartinBüttner y @skagedal por detectar todos mis errores y por sus sugerencias.
fuente
Hello , Wor l d !
. Tenga en cuenta los espacios adicionales! Esta no es una respuesta válida, desafortunadamente.<?php
es inválida! Sin embargo, ¡te perdonaré por esto! OK, acabo de probar<?Php
qué funciona, ¡así que acabo de enterarme de que la etiqueta de inicio no distingue entre mayúsculas y minúsculas!"!<br
- Esto no está ordenado. El segundo tiene como línea 10:."!
- no ordenado.Pyth, 7 líneas, 23 bytes
Bastante simple, solo use una cadena multilínea y elimine las nuevas líneas.
Pruébalo aquí
fuente
Adelante, 41 líneas, 143 bytes
Pruébalo en línea.
Estoy muy orgulloso de esto. Lo saqué bastante rápido una vez que descubrí que podía hacerlo, haciendo que Google buscara idiomas que no distinguen entre mayúsculas y minúsculas, y ya conozco decentemente a Forth. Casi definitivamente se puede acortar, tanto bytes como líneas. Se agradecen las sugerencias. :RE
Este programa esencialmente empuja el valor decimal de cada carácter ASCII, luego imprime cada uno. Intenté optimizar mientras lo escribía, por lo tanto, es menos legible de lo que me gustaría.
fuente
Emit
líneas no funcionan, ya quei
(105) es menor quem
(109).Maravilloso, 9 líneas, 94 bytes
Pruébelo en línea aquí.
Using spaces for blank cells
debe ser verificadoRepresentación visual de la fuente:
Explicación: Cada valor hexadecimal en este programa se mueve hacia abajo cada "marca" (a menos que esté activado
\\
, en cuyo caso se mueve hacia la derecha).++
incrementará el valor,--
disminuirá,~~
aplicará un bit a bit, etc. Los valores que caen de la parte inferior se imprimen como un carácter ASCII.Por ejemplo: Se
33
convierte en en la esquina superior(((0x33 +1 +1) << 1) +1 +1 = 0x6C (l)
.fuente
Perl, 17 líneas
fuente
Rebol - 15 líneas (51 bytes)
Las palabras en Rebol no distinguen entre mayúsculas y minúsculas (por ejemplo
PRINT
,Print
yprint
todas llamarían a la misma función).El código anterior ordenado:
NÓTESE BIEN.
sp
devuelve el espacio char!fuente
{
no puede ser antes de cualquier letra.{,}
. Esto es ahoraSp + 12
(más de 3 líneas) que es equivalente al carácter de espacio + 12 (es decir, coma)Unario , 1 línea, muchos bytes
Todos los personajes de este programa son
0
. La fuente es demasiado larga para poner aquí, pero consiste en una cadena de tantos ceros:Esta es la representación decimal para este número binario:
El cual fue creado a partir de este programa BrainF ***:
Vea cómo lo generé : http://ideone.com/lMT40p
fuente
Lote - 39 líneas (202 bytes)
Quería reducir el tamaño al permitir la expansión demorada ejecutando el código dentro de una
cmd
llamada usando el/v on
interruptor, pero no pude pasar todos los quilates.Sin las nuevas líneas (y quilates para escapar de las nuevas líneas):
fuente
Ruby, 19 líneas, 95 bytes.
Posiblemente la segunda restricción de código más difícil para Ruby que he visto en este sitio, después de la monstruosidad aquí .
Editar para explicación: el único método de salida de Ruby que está ordenado es el
<<
método en STDOUT. Desafortunadamente, la constante para STDOUT es$>
, y>
es ASCII más alto que la mayoría de los símbolos, por lo que no es posible llamar a un método. Necesitamos una declaración de asignación de varias líneas para obtener un nombre de variable más manejable$;
(el punto y coma sigue siendo bastante alto, pero la mayoría de las variables de esta forma no son asignables o solo pueden ser cadenas).Los símbolos (
:Wor
, etc.) son la forma más fácil de hacer un literal, y no veo una forma de quitar nuevas líneas de una cadena, por lo que necesito varias declaraciones de impresión. El espacio y la puntuación no pueden entrar en un símbolo literal, pero afortunadamente elchr
método en números es legal, por lo que puedo obtener un carácter de su valor ASCII.::
es una forma alternativa de llamar a los métodos. El espacio es complicado porque no puedo escribir32
, así que resta 1 de 33 y lo asigno a una variable.fuente
Retina, 12 líneas, 29 bytes (no competitiva)
El lenguaje es más nuevo que el desafío.
Pruébalo en línea
fuente