En esta tarea, se le permite hacer un programa útil para hacer cualquier cosa que pueda escribir dentro de los 100 caracteres. Se le permite usar menos caracteres, pero no más.
Reglas, solo para protegerse de las lagunas estándar que ya no son divertidas:
Su programa no puede acceder a Internet, a menos que realmente tenga que hacerlo. Por ejemplo, el programa que muestra la pregunta más votada en este sitio web puede usar Internet para verificar esta pregunta. Sin embargo, no está permitido navegar en Internet para encontrar su fuente real y ejecutarlo.
Su programa no puede ser un intérprete para el idioma en que fue escrito. Sin embargo, el intérprete Brainfuck en un idioma que no sea Brainfuck estaría bien.
Su programa no puede ejecutar programas externos que hagan exactamente lo que hace su programa. Por ejemplo, no puede ejecutar
vim
y afirmar que su programa esvim
implementación.Su programa no puede ser peligroso para la computadora en la que se ejecuta y otras computadoras. No está permitido escribir programas como
rmdir /
(el ejemplo aquí intencionalmente no funciona, no lo arregles), y afirmas que es un programa útil para eliminar todos los archivos en la computadora.Su programa puede ser tan lento como desee y utilizar tantos recursos como desee, siempre y cuando pueda demostrar que hace lo que tenía que hacer.
No tienes permiso para crear un lenguaje específicamente para esta tarea. Sin embargo, puede hacer un intérprete para su lenguaje inventado en algún otro lenguaje de programación.
fuente
Respuestas:
C - 47 bytes
El siguiente programa genera todos los documentos escritos en la historia de la humanidad, junto con todos los documentos que alguna vez se escribirán y un montón de textos interesantes que ningún ser humano podrá encontrar (junto con un "poco" de basura en el medio). Solo dale algo de tiempo. Además, cada vez que lo ejecutas, ¡generará textos diferentes primero! Si eso no es útil! (¡Y todo eso dentro de la mitad del límite de caracteres!)
Si no te importa que genere algo más cada vez, ¡solo necesitas 41 bytes !
No es del todo compatible con C99, pero se compila sin problemas
gcc.exe (GCC) 4.7.0 20111220
.Las reglas establecen
No hay problema.
Algunas cosas, este programa generará:
Como señala Dennis, la aleatoriedad del algoritmo podría mejorarse un poco (dentro del límite de caracteres) mediante el uso de en
rand()^rand()>>16
lugar derand()
.fuente
rand()
es solo pseudoaleatorio; es posible que no produzca ningún texto útil antes de que se repita.x
, tienex[i] == (x[i - 3] + x[i - 31] + c[i]) % 256
, dondec[i]
es 0 con probabilidad 0.75 y 1 con probabilidad 0.25. Esto significa que no puede generar ninguna de las cosas que mencionaste.rand()^rand()>>16
lugar de simplerand()
. Si está buscando maneras de ahorrar en bytes, elimineint
y%256
.unsigned char
cuando se escribe.BBC BASIC, 84 caracteres
Traza las soluciones para ecuaciones diferenciales de primer y segundo orden.
Toma como entrada del usuario:
Inspirado por un software de resolución de ecuaciones diferenciales llamado Polymath que utilicé cuando estudiaba para ser ingeniero químico. Ingresaríamos diferentes ecuaciones para reactivos y productos y veríamos cómo el sistema de reacción completo cambió con el tiempo. Un software muy simple (no mucho más complejo que este) pero mucho más conveniente para este propósito que Excel. Lamentablemente, no puedo hacer un clon completo de Polymath en 100 caracteres.
fuente
Mathematica 76
Este programa construye un applet que muestra información sobre varias propiedades para cualquiera de los 240 países. Se abre con información sobre la población adulta de Afganistán. El usuario puede cambiar la configuración de país y propiedad a través de listas desplegables.
Mathematica interopera sin problemas con WolframAlpha.
Por esta razón, creo que la presentación cumple con el requisito n. ° 1 del desafío: "Su programa no puede acceder a Internet, a menos que realmente tenga que hacerlo ".
Este applet bastante modesto simplemente hace uso de la funcionalidad existente en el lenguaje Mathematica. Un video corto proporciona información adicional sobre el applet.
A continuación se muestra una lista de las primeras 20 (de 223) propiedades relacionadas con países. Con una programación adicional, se puede obtener información adicional sobre los países y analizar esta información en Mathematica.
fuente
bash, 100 bytes
Este script imprime una secuencia de bytes criptográficamente segura. Toma un argumento opcional que especifica el número de bytes que debe imprimir. Por defecto, la salida será infinita.
Útil en casos en los que leer
/dev/urandom
es demasiado lento.Punto de referencia
Este script genera hasta 1.5 GiB por segundo en mi i7-3770.
En contraste, la lectura de
/dev/urandom
logra generar apenas 1 GiB por minuto .Cómo funciona
head -c${1--1} /dev/zero
genera la cantidad especificada de cero bytes. Si no se especifica ninguna cantidad, es${1--1}
igual a -1 y head genera una cantidad infinita.openssl enc -aes-128-ctr -pass file:/dev/random
usa AES-128 en modo contador para encriptar los bytes cero, leyendo la contraseña/dev/random
.tail -c+17
elimina el encabezado de 16 bytes de la salida.fuente
Javascript
Resuelva cualquier ecuación (bueno, no todas, pero debería funcionar con funciones comunes ...)
Sin ES6 (105 caracteres):
Simplemente dé el lado izquierdo de la ecuación suponiendo que el lado derecho es cero.
Ejemplo:
r("x*x-9")
devoluciones3
r("Math.sin(x)-1")
devuelve1.5707963394347828
(pi / 2)r("Math.pow(2,x)-512")
devoluciones9
Advertencia: puede divergir en algunas funciones (o si no hay solución) y congelar la pestaña del navegador, o devolver NaN.
fuente
C - 99 caracteres
Este programa permite el cifrado y descifrado de cualquier tipo de datos.
Uso
Primero ... compilarlo!
Si desea cifrar el contenido de
mypreciousdata.txt
con la clavemysecretkey
y almacenar el resultado enmyprotecteddata.txt
:Ahora, si desea recuperar los contenidos decodificados de
myprotecteddata.txt
:¡Cuanto más larga sea la llave, más segura!
Explicación
Encuentre el código expandido y comentado a continuación:
fuente
char
tipo (generalmente 256).GolfScript
¡Logré exprimir esto en exactamente 100 caracteres!
Toma entrada de texto cifrado ROT-n y emite el texto descodificado. (Tomado de aquí .) Por ejemplo, cuando se le da la entrada
pmttwxmwxtmwnxzwoziuuqvoxchhtmakwlmowtnabiksmfkpivom
, la salida es8hellopeopleofprogrammingpuzzlescodegolfstackexchange
.fuente
JavaScript
Para generar una identificación única en javascriptProduce algo como:
'h9d2f4aniimma7h1d3pbffi0foi8d3mf'
cadenas de 30-32 caracteres alfanuméricos
Produce algo como:
'uq2sze67hsacq5mi'
Cuerdas de longitud 14-16.
fuente
C ++ 57
Este programa toma una entrada de caracteres y genera su valor ASCII.
fuente
,:
Fortran - 85 bytes
Lee un número e imprime la suma de los dígitos . Útil para los problemas del Proyecto Euler .
fuente