¡¡¡Hola Mundo!!! Distribución de Fibonacci

21
  1. Su programa debería generar exactamente: Hello world!!!con o sin salto de línea después.
  2. Su programa no debe tomar ninguna entrada.
  3. La distribución de caracteres del código fuente debe ser correcta de acuerdo con:
    • El número de caracteres numéricos (0-9) debe ser exactamente un número de secuencia de Fibonacci.
    • El número de otros caracteres no numéricos (0-9) en el código fuente debe ser exactamente el número de secuencia de Fibonacci antes del número de secuencia de Fibonacci anterior.

Cuatro ejemplos de distribución de caracteres válidos en código fuente:

  • 13 caracteres numéricos, 8 no numéricos.
  • 34 caracteres numéricos, 21 no numéricos.
  • 55 caracteres numéricos, 34 no numéricos.
  • 89 caracteres numéricos, 55 no numéricos.

Este es el código de golf, ¡el código más corto en bytes gana! ¡Buena suerte!

Editar: como esta pregunta tiene restricciones en el tamaño del código fuente en combinación con el código de golf, la respuesta aceptada (si más de una comparte la misma longitud de caracteres ganadores) será la respuesta con más votos (y menos recuento de caracteres): 2014- 03-01.

Plarsen
fuente
66
Por lo tanto, todas las soluciones tienen un recuento de caracteres que es un número de Fibonacci.
Howard
1
Aquí hay un programa para validar respuestas (pegue el código en el cuadro de entrada).
Justin
1
¿Es posible hacer esto en menos de 55 caracteres? La salida requerida tiene 14 caracteres, y no puedo pensar en un lenguaje que pueda usar números para generar caracteres sin usar al menos un carácter por carácter.
Justin
2
@Plarsen definitivamente no está bien
John Dvorak
1
Bien, no cambiaré las reglas entonces :)
Plarsen

Respuestas:

27

Símbolo del sistema de Windows: 34, 8 , 5 caracteres (2 a continuación)

* Estos pueden o no estar infringiendo la regla 2, pero aquí está de todos modos

%~099

Nombra el archivo:

&start call echo Hello world!!!&exit -b .cmd


Ahora corrompamos un poco el sistema de archivos: 2 caracteres (o menos si lo desea)

A1

Asigne un nombre al archivo (utilizando su método poco ortodoxo preferido):

"&start call echo Hello world!!!&exit&.cmd

Como funciona esto:

Dado que los scripts cmd se invocan con 'cmd.exe / C "% 1"% *', el comando ejecutado será:

cmd.exe /C "c:\PATH_TO_THE_SCRIPT\"&start call echo Hello world!!!&exit&.cmd"

que será en el siguiente orden:

  • Error al ejecutar "c: \ PATH_TO_THE_SCRIPT \"
  • Abra un nuevo shell de impresión Hola mundo! \ N
  • Salga de la carcasa original
Robert Sørlie
fuente
2
¡Guauu! Creo que obtuvimos un ganador si las reglas no decían nada. +1 de todos modos para el pensamiento fuera de la caja.
Plarsen
2
Codifique golf con Windows CMD ... +1. Además, es discutible que "ninguna entrada" podría haber significado "no leer STDIN": P
Camilo Martin
1
Ese es un truco interesante para otros campos de golf de código también ... escriba el código real en el nombre del archivo y use algo como eval $0ejecutarlo <rolleyes>
Tobia
1
¡¡Eso es imposible!! 5 caracteres? Enfoque realmente interesante
Plarsen
1
De hecho, acabo de publicar una solución de 2 caracteres a continuación.
Tobia
20

MySQL, 34

x'48656C6C6F20776F726C642121'||'!'

Esta es una expresión MySQL que se evalúa Hello world!!!, asumiendo que la sql_modeconfiguración incluye PIPES_AS_CONCAT. Contiene exactamente 21 dígitos y 13 no dígitos.

Si esto califica como una entrada válida, lo dejo al jurado.

Ejemplo

mysql> select x'48656C6C6F20776F726C642121'||'!';
+------------------------------------+
| x'48656C6C6F20776F726C642121'||'!' |
+------------------------------------+
| Hello world!!!                     |
+------------------------------------+
1 row in set (0.00 sec)
Tobia
fuente
55
¿Qué ... Golf de código ganador de CMD y SQL?
Camilo Martin
Los selecty ;son posiblemente parte de la declaración, pero siguen siendo una solución inteligente.
primo
@primo lo son, por eso no estoy seguro de si esto califica. Pero pensé en publicarlo por hilaridad ;-)
Tobia
16

C64 BÁSICO, 55

ingrese la descripción de la imagen aquí

Por diversión y nostalgia!

Gabriele D'Antona
fuente
11

GolfScript, 55 caracteres

[72 101 108 108 111 32 119 111 114 108 100 33 {.}2*]''+

No encontré una manera de tener una solución de 34 caracteres, así que creé esta.

Howard
fuente
10

Befunge 98 - 55

a"!!!dlrow olleH"ek,@1235813213455891442333776109871597

Decidí hacerlo con una nueva línea, ya que no cuesta nada. Los números son los valores concatenados de la secuencia de Fibonacci.

Justin
fuente
8

Python 34-55

print "Hello world%s"%("!"*int(3.141592653589793238462643383279502884197169399375105820))

Sí. Los desperdicio dígitos. ¿Que vas a hacer al respecto?

Reut Sharabani
fuente
¡Quién sabía que pi ~ 3 sería tan útil!
Kyle Kanos
1
La pregunta dice 21 no numéricos más 34 numéricos, su respuesta es 34 no numéricos más 21 numéricos.
user12205
1
el "hola mundo" debería ser "Hola mundo"; eso es capitalizar la h.
Justin
7

C (89 caracteres)

main() {
int i[0000000000000004]={1819043144,1870078063,560229490,2566922529};
puts(i);
}

Si bien lo anterior es válido, desafortunadamente, mis esfuerzos por compactarlo con el siguiente programa no cumplen con las especificaciones. Siento que vale la pena mirarlo y tal vez alguien más pueda acortarlo un poco (64 caracteres, 37 números, 27 no números). Para compilarlo, tendrás que usar clang y con -fms-extensions.

main(){puts((__int128[]){671944380693508453879479574226248i8});}
vmrob
fuente
Literales compuestos , es el nombre de lo que estás buscando. ¡Estoy tratando de usarlos para reducir esto a 21 caracteres ahora!
charmlessCoin
El recuento no numérico más bajo que puedo alcanzar es 26, haciendo iglobal (omitiendo int). Usar longpuede ahorrar comas, pero cuesta más. 21 está muy lejos.
ugoren
Sí, es mucho espacio desperdiciado. Usando ese pequeño truco, puedo hacerlo, main(){puts((int[]){1819043144,1870078063,560229490,8481});}pero todavía son 60 caracteres. Si pudiera eliminar solo unos pocos más ... Editar: wow, ¿entonces los globales no tienen que tener una declaración? ¿Quien sabe?
vmrob
@vmrob, los globales deben tener una declaración. Pero el tipo predeterminado es int, por lo que a;es equivalente a int a;.
Ugoren
@ugoren Sabía que tenían que tener una declaración, ¡pero no me di cuenta de que estaba en default!
vmrob
6

Windows PowerShell (probablemente también Bash), 55

curl -L bit.ly/1b9q8ve?1=123581321345589144233377610987

No dijiste nada sobre el acceso a la red, así que aquí hay una solución sucia. Tengo una URL bit.ly con pocas letras suficientes en el segundo intento. Desafortunadamente, todavía son 21 dígitos, que necesitan 34 dígitos para ser usados ​​o desperdiciados.

John Dvorak
fuente
Sabes que puedes editar los enlaces bit.ly ¿verdad?
Timtech
¿Qué quieres decir con editar? Además, no obtendría esto con menos de 13 letras en cualquier caso.
John Dvorak
Puede golpear el lápiz junto a "Copiar" y editar el enlace. Si lo hace, todas las versiones antiguas seguirán funcionando.
Timtech
1
Acortado a 34! curl 37.187.42.18/?hw=112358132134
Dom Hastings
6

sh, 55

echo Hello world!!! #1234567890123456789012345678901234
usuario12205
fuente
6

Korn Shell, 21

echo $0
#123456789012

El guión debe llamarse "¡Hola, mundo!" :)

Gabriele D'Antona
fuente
5

Bash, 2 caracteres

Muy bien, en el improbable caso de que la respuesta de Robert no sea descalificada, aquí está la mía:

$0

Nombra el archivo echo Hello world!!!y ejecuta con sh.

Tobia
fuente
5

Pitón

print'092020090920200948656c6c6f20776f726c642121212009200909200920'.decode('hex').strip()

dígitos: 55 no dígitos: 34

Elíseo
fuente
Tenga en cuenta que no hay comentarios en la solución. solo codigo.
Elisha
4

PHP (55 bytes)

Este programa usa binario (wow, es la tercera vez que reutilizo el mismo truco). 21 caracteres no numéricos, 34 caracteres numéricos. No hay letras, porque las letras son aburridas.

xxd

0000000: 3c3f 3d7e b79a 9393 90df 8890 8d93 9bde  <?=~............
0000010: dede f53b 2331 3233 3435 3637 3839 3031  ...;#12345678901
0000020: 3233 3435 3637 3839 3031 3233 3435 3637  2345678901234567
0000030: 3839 3031 3233 34                        8901234
Konrad Borowski
fuente
@ JanDvorak: Estoy casi seguro de haber leído "antes o después". Oh bueno, déjame arreglarlo entonces.
Konrad Borowski
4

Mathematica 55

"Hello World!!!"(34+21!)/000000000051090942171709440034

Salida

Hello World!!!
ybeltukov
fuente
4

Sclipting (34 caracteres)

丟0000000000긒괡뉆롲닷댠닶롬뉔밈0000000000併0反

Desafortunadamente, Sclipting no utiliza ningún carácter ASCII, por lo que tengo que rellenar el programa con 21 caracteres numéricos inútiles :(

Timwi
fuente
2

Adelante o Rubí, 55

(34 numéricos + 21 no numéricos)

Adelante

." Hello world!!!" \ 3141592653589793238462643383279502

Rubí

puts"Hello world!!!"#3141592653589793238462643383279502

Usar comentarios para rellenar se siente sucio, pero esas son respuestas válidas.

Piedra de Darren
fuente
2

J (55 caracteres)

(34 numéricos + 21 no numéricos)

(72 101 108 108 111 32 119 111 114 108 100{a.), 3#33{a.
Mort Yao
fuente
0

C #, 233 bytes

233 caracteres
144 numéricos
89 caracteres no numéricos

/*I suck at CodeGolf!!!*/new List<int>{0072,00101,000108,000108,000111,0000032,00000119,00000111,0000000000114,0000000000108,00000000000000100,00000000000000033,00000000000000033,00000000000000033}.ForEach(c=>Console.Write((char)c));

Salidas:

Hello world!!!
Pete Arden
fuente
0

Japt , 55 bytes

"aaaaaaa1234567890123456789012345678901234"`HÁM WŽld!!!

Pruébalo en línea!

Básicamente es un simple mundo hola con algo de basura al principio que se ignora pero hace que el código satisfaga las condiciones.

Halcones
fuente
-1

Lote de Windows

echo Hello World!!!::0123456789012345678901234567890123
Timtech
fuente
12
Guau. Esto es muy diferente de mi solución sh.
user12205
-3

http://esolangs.org/wiki/Hello%2B%2B

h000000000051090942171709440034

la h imprime hola y el resto son solo números

QWERTY
fuente
Esto no se distribuye de acuerdo con Fibonacci, también, la salida no es exactamenteHello world!!!
Timtech