4, 8, 15, 16, 23, 42
Escriba un programa que genere esta secuencia de números infinitamente. Sin embargo, The Numbers no debe aparecer en su código fuente en ninguna parte.
El siguiente no es un programa Java válido para generar The Numbers porque The Numbers aparece en su código fuente:
class TheNumbers {
public static void main(String[] args) {
for(int n = 0;;) System.out.println(
n == 4 ? n = 8 :
n == 8 ? n = 15 :
n == 15 ? n = 16 :
n == 16 ? n = 23 :
n == 23 ? n = 42 : (n = 4)
);
}
}
La definición de "Los números no deben aparecer en su código fuente" es la siguiente:
- No debes usar el número 4.
- No debes usar el número 8.
- No debe usar el número 1 seguido del número 5.
- No debe usar el número 1 seguido del número 6.
- No debe usar el número 2 seguido del número 3.
Si su idioma ignora ciertos caracteres que se pueden colocar entre los números, no es una sustitución válida. Entonces, por ejemplo, si su idioma interpreta el literal 1_5
como 15
, esto contaría como el número 1 seguido del número 5.
Las bases alternativas se incluyen en la restricción, por ejemplo:
- Binary 100 no se puede usar como sustituto de 4.
- Octal 10 no puede usarse como sustituto del 8.
- El hexadecimal F no se puede usar como sustituto de 15.
Por lo tanto, el siguiente es un programa Java válido (pero no muy inspirado) para generar The Numbers porque The Numbers no aparece en su código fuente:
class TheNumbers {
public static void main(String[] args) {
for(int n = '*';;) {
System.out.println(n -= '&');
System.out.println(n *= 2);
System.out.println(n += 7);
System.out.println(++n);
System.out.println(n += 7);
System.out.println(n += 19);
}
}
}
Tenga en cuenta que en ese programa, '*'
y '&'
se sustituyen por los enteros 42 y 38, porque de lo contrario los números 4 y 8 aparecerían en su código fuente.
La definición de "genera la secuencia infinitamente" está abierta a interpretación. Entonces, por ejemplo, un programa que genera glifos cada vez más pequeños hasta que sean "infinitamente" pequeños sería válido.
Felicitaciones si puede generar la secuencia de alguna manera que no sea básicamente codificar cada número.
- Derivándolo a una fórmula. Mi impresión es que no hay una, pero tal vez la hay o puede ser falsa.
- Arreglando un generador pseudoaleatorio para devolver la secuencia.
Este es un concurso de popularidad, así que sé creativo. La respuesta con más votos el 26 de marzo es la ganadora.
fuente
This isn't an interesting question, IMHO, since the solution is pretty trivial. Please post in the sandbox next time.
sería mucho mejor queThis is a stupid question.
eso, pero esa es solo mi opinión personal.Respuestas:
Java
Decidí agregar otra entrada ya que esta es completamente diferente de la primera (que era más como un ejemplo).
Este programa calcula el promedio de una matriz ingresada por el usuario ...
... o lo hace?
fuente
Pitón
Editar: según la sugerencia de nneonneo, el script ahora no incluye dígitos.
fuente
while True:
para que su respuesta no contenga dígitos en absoluto.while True:
Es más común.Perl
No hay nada oculto en el código fuente. No. Si el código no funciona, escriba
use re "eval";
antes (requerido en Perl 5.18).Explicación en spoiler.
fuente
Brainfuck
¡Soy tan malo en el arte ASCII!
Pruébelo aquí: http://ideone.com/kh3DYI
fuente
Unix C
Hay muchos lugares para encontrar constantes numéricas.
fuente
C#
fuente
a(i)=a(i-1)+a(i-3)+a(i-5)
realmente parece una solución más fácilC#
Usando el hecho de que cualquier secuencia de N elementos puede ser generada por un polinomio N-1 e ingresando los números involucraron muchos pitidos y boops. Como referencia, el polinomio I derivado es
Asigne los factores a las variables nombradas para los números, por simplicidad;)
Primera versión:
Me gustó la implicación del aumento de la tensión a medida que el número de BEEP disminuye después de cada número.
Luego pensé que también podría calcular los factores usando pitidos y boops:
Fuimos un poco por la borda después de eso ...
El uso del operador predeterminado en C # para los tipos de valor permite la inicialización de BEEEP a cero. De esta manera, no se usan literales numéricos en el código. El algoritmo básico es el mismo. pero los factores se calculan en línea.
fuente
re
¿No está permitido usar los números 4, 8, 15, 16, 23 o 42 en mi código? ¡No hay problema, entonces no usaré números en absoluto!
fuente
Javascript + HTML
Anti-golf!
El
<pre>
elemento muestra un número en la secuencia. También contiene todo el código necesario para llegar al siguiente número en la secuencia. Entonces<pre>
se evalúa, lo que da como resultado que el texto de la<pre>
actualización se parezca al siguiente número en la secuencia. Este proceso se repite sin cesar.¡Aquí está en acción!
fuente
C
Ponte tus gafas entrecerradas :-)
fuente
4
sy dos8
s allí.Haskell, 1 LoC
He decidido optar por una frase legible solo para mostrar lo increíble que es Haskell. Además, he decidido evitar todos los dígitos, por si acaso.
Gracias a la evaluación perezosa incorporada, Haskell puede manipular (mapear, dividir, unir, filtrar ...) listas infinitamente largas muy bien. Incluso tiene múltiples elementos integrados para crearlos. Dado que una cadena es solo una lista de caracteres, las cadenas infinitamente largas tampoco son un misterio para Haskell.
fuente
fromEnum
se ve mejorData.Char.ord
y es algo más cortoMathematica
Podemos responder la pregunta centrándonos en los denominadores parciales repetidos de la fracción continua periódica que se muestra a continuación. Son lo que necesitamos.
Después de todo, comprenden la secuencia sin terminación que estamos tratando de producir: 4, 8, 15, 16, 23, 42, 4, 8, 15, 16, 23, 42 ...
En Mathematica se obtiene el irracional cuadrático correspondiente a la fracción continua periódica por
donde el 0 se refiere a la parte entera implícita.
Podemos verificar invirtiendo la operación:
Los 4 y 8 violan una de las reglas del desafío. La subcadena
15
es una violación adicional. Podemos reformatear el cuadrático irracional para satisfacer las reglas.Ahora tomamos la secuencia de interés:
E imprima la lista para siempre ...
fuente
16
fracción mientras escribía un comentario al respecto.C / C ++
Usando sólo los caracteres
L
,O
,S
yT
en varias ocasiones en este orden:fuente
Java
No puedo encontrar un patrón en esa secuencia. Si no hay un patrón reconocible, podríamos simplemente juntar un montón de primos pequeños, meterlos en el RNG incorporado de Java y llamarlo un día. No veo cómo eso podría salir mal, pero de nuevo, soy optimista :)
fuente
while(true)
: ideone.com/1xaPdOBash one-liner
Salto de línea agregado para facilitar la lectura. (Ab) utiliza el hecho de que estos son los primeros seis números de la secuencia OEIS A130826 .
fuente
awk -F"[ ,]" '/%S/ {for (i=3;i<=9;i++) printf $i" "}'
acurl
.yes
y soltar la redirección a/dev/null
concurl -s
. Algo así comoyes $(curl -s "https://oeis.org/search?q=id:A$((130726+100))&t=text" | awk -F"[ ,]" '/%S/ {for (i=3;i<9;i++) printf $i" "}')
yes
ycurl -s
simplemente agregué descaradamente esto a mi respuesta. :-)C sin usar ningún número y sin valores de caracteres
fuente
Me gusta la idea de usar la secuencia
como en esta respuesta . Lo encontré a través de la búsqueda OEIS como secuencia A122115 .
Si pasamos por la secuencia en reversa, encontraremos un quíntuple de inicialización adecuado que no contiene 4, 8, 15, 16 o 23.
Python3:
fuente
JavaScript
Sin números en absoluto es un buen movimiento. Pero en lugar de imprimir la secuencia una vez por pase a través del bucle, solo imprima una vez el número por pase.
La parte inferior de la cadena codifica los números para imprimir y la parte superior de la cadena codifica el siguiente carácter para encontrar. Donde las dos partes se encuentran (una sola
F
) códigos que restablecen el ciclo.fuente
Pitón
Operadores bit a bit y algunas matemáticas simples.
fuente
Rubí
Genera los números incrustando la secuencia igualmente mística 0, ∞, 9, 0, 36, 6, 6, 63 ;
Nada bueno puede venir de esto.
fuente
C (
5450 caracteres)Estoy publicando una respuesta de golf porque jugar golf al menos lo hace divertido.
fuente
a=0;
. El único efecto sería que puede comenzar la secuencia en otro lugar que no sea 4 (probablemente 8). De todos modos, esto arruinará la secuencia cuando sea
desborde. Es un comportamiento técnicamente indefinido, pero el resultado probable es que imprimirá basura la mitad del tiempo.for
no ayuda si no hay inicialización.for(;;)
es el mismo número de caracteres quewhile()
. Interpreté las reglas para que las nuevas líneas tengan que estar allí ... Pero podría usar la recursión de cola con main ...Haskell
http://ideone.com/erQfcd
Editar: Lo que solía generar los coeficientes: https://gist.github.com/ion1/9578025
Editar: Realmente me gustó el programa de agrif y terminé escribiendo un equivalente de Haskell mientras lo descubría. Elegí una base diferente para el número mágico.
http://ideone.com/kzL6AK
Editar: También me gustó su segundo programa y terminé escribiendo una implementación de Haskell de irracionales cuadráticos ;-). Usando la biblioteca y el número mágico de agrif, este programa imprimirá la secuencia.
Así es como se podría buscar el número mágico con la ayuda de la biblioteca:
El valor impreso representa el número
(−644047 + 1 √424477224534)/30815
. Todo lo que necesita hacer es encontrar factores que eliminen las secuencias de dígitos no permitidas en los números sin cambiar el valor de la expresión.fuente
C#
Encontré la semilla después de escuchar una estación de radio en un vuelo sobre el Pacífico.
fuente
Pitón
Si bien muchas personas usaron patrones tomados de OEIS, decidí crear mi propio conjunto de funciones para representar los números.
La primera función que creé fue periódica (). Es una función que se repite cada seis números de entrada utilizando las propiedades cíclicas de las funciones trigonométricas. Dice así:
Entonces, creo polinomio (). Que utiliza el siguiente polinomio:
(En mi código, algunos de los coeficientes se representan como sumas porque contienen los números perdidos como uno de sus dígitos).
Este polinomio convierte la salida de periodic () en su número perdido adecuado, de esta manera:
Al aumentar constantemente i y pasarlo por ambas funciones, obtengo los números perdidos que se repiten infinitamente.
(Nota: uso mucho float () en el código. Esto es para que Python haga la división de punto flotante en lugar de decir 2/3 = 0).
fuente
4
enpolynomial
.Emacs Lisp 73 caracteres
¿La mejor manera de recorrer para siempre? Una lista cíclica!
¡Pero espera hay mas!
? \ ^ D es la mejor manera de insertar el carácter para EOT, sin embargo, si solo estuviera enviando un archivo, no necesitaría el literal "\ ^ D", simplemente podría insertar un '?' seguido de un personaje EOT real, reduciendo así el número real de caracteres necesarios a: 63
Editar
He estado trabajando en "gel", que aún no es un lenguaje real, pero es básicamente una serie de macros de emacs lisp para golf de código. En "gel" esta sería la solución:
y sin esperar:
44 caracteres con buena entrada de personaje. Sería 34 si no fuera por ser un envío web.
fuente
Julia
Al investigar un tiempo, encontré una forma matemática de expresar la secuencia por otras secuencias sin usar ninguno de los números (o formas complicadas de usarlas):
Salida:
fuente
C ++
Un lenguaje agradable y limpio como C ++ puede permitirle diseñar su fuente de una manera ordenada y altamente legible, y tiene la ventaja de ser fácil de copiar a mano con una mínima ambigüedad.
Aquí se alcanza la solución usando solo el número 1.
Prueba: http://ideone.com/fuOdem
fuente
Esquema (Guile)
http://ideone.com/QBzuBC
Podría decirse que esto rompe la regla de "no codificar los números en otras bases", pero creo que es lo suficientemente oscuro como para que no cuente. Como evidencia de esta oscuridad, esos dos números mágicos en la base 51 son:
Editar : mismo truco, representación diferente. De hecho, me gusta más, ya que no depende de una base elegida arbitrariamente. Sin embargo, requiere una implementación de esquema con soporte de precisión infinita para irracionales cuadráticos, que (AFAIK) no existe. Sin embargo, podría implementarlo en algo como Mathematica.
fuente
PHP
Pensé que era hora de que alguien enviara una respuesta php, no la mejor pero sí una divertida
los Ah son los gritos de los pasajeros cuando el avión se estrella
fuente
Perl
fuente