¡¡¡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.


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

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)

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


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.


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.


8

Python 34-55

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

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


¡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});}

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.


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



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.


5

Pitón

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

dígitos: 55 no dígitos: 34


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

@ 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!!!

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 :(


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.


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.

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!!!

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.


-1

Lote de Windows

echo Hello World!!!::0123456789012345678901234567890123

12
Guau. Esto es muy diferente de mi solución sh.
user12205

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.