Fórmula autorreferencial de Tupper (copiada de Wikipedia)
La fórmula autorreferencial de Tupper es una fórmula definida por Jeff Tupper que, cuando se representa en dos dimensiones en una ubicación muy específica en el plano, se puede "programar" para reproducir visualmente la fórmula en sí. Se utiliza en varios cursos de matemática y ciencias de la computación como un ejercicio de fórmulas gráficas.
¿Dónde está la función del piso?
Sea k
el siguiente número de 543 dígitos:
960939379918958884971672962127852754715004339660129306651505519271702802395266424689642842174350718121267153782770623355993237280874144307891325963941337723487857735749823926629715517173716995165232890538221612403238855866184013235585136048828693337902491454229288667081096184496091705183454067827731551705405381627380967602565625016981482083418783163849115590225610003652351370343874461848378737238198224849863465033159410054974700593138339226497249461751545728366702369745461014655997933798537483143786841806593422227898388722980000748404719
Si uno gráficas El conjunto de puntos (x, y)
en 0 <= x < 106
y k <= y < k + 17
que satisface la desigualdad dada anteriormente, las miradas gráfico resultante de este tipo (nota que los ejes en esta parcela se han invertido, de lo contrario la imagen se revele boca abajo):
¿Y qué?
Lo interesante de esta fórmula es que se puede usar para graficar cualquier imagen posible de 106x17 en blanco y negro. Ahora, buscar en realidad sería extremadamente tedioso, por lo que hay una manera de averiguar el valor k donde aparece su imagen. El proceso es bastante simple:
- Comience desde el píxel inferior de la primera columna de su imagen.
- Si el píxel es blanco, se agregará un 0 al valor k. Si es negro, agregue un 1.
- Mueva hacia arriba la columna, repitiendo el paso 2.
- Una vez al final de la columna, pase a la siguiente columna y comience desde abajo, siguiendo el mismo proceso.
- Después de analizar cada píxel, convierta esta cadena binaria a decimal y multiplique por 17 para obtener el valor k.
¿Cual es mi trabajo?
Su trabajo es crear un programa que pueda tomar cualquier imagen de 106x17 y generar su valor k correspondiente. Puede hacer los siguientes supuestos:
- Todas las imágenes serán exactamente 106x17
- Todas las imágenes solo contendrán píxeles negros (# 000000) o blancos (#FFFFFF), nada en el medio.
También hay algunas reglas:
- La salida es simplemente el valor k. Debe estar en la base adecuada, pero puede estar en cualquier formato.
- Las imágenes deben leerse desde PNG o PPM.
- No hay lagunas estándar.
Imágenes de prueba
[ ] debería producir ~ 1.4946x10 542
[ ] debería producir ~ 7.2355x10 159
[ ] debería producir 2 1801 * 17
[ ] debería producir (2 1802 -1) * 17
Echa un vistazo a este Gist para las soluciones exactas.
Este es el código de golf , por lo que gana el menor número de bytes.
Enlaces Útiles
quine
alguna parte.