Tarea:
Sé que todos podemos sumar dos números de la manera corta, usando +
. Su tarea es crear el código más largo posible para agregar dos números de entrada.
Reglas:
- Todo el código debe estar en el tema (no lo llene con código de no adición para agregar longitud)
- El recuento está en caracteres, pero no cuente las pestañas, los espacios o las nuevas líneas.
- No use nombres de variables extraños
- Este es el juego de bolos de código , ¡así que gana la respuesta más larga!
number
code-bowling
TheDoctor
fuente
fuente
a + b - b + b...
cuentan? Sería infinitoa + b/2
, noa + b
(es similar a la serie de Grandi ).Respuestas:
C ++ MÁS DE 3x10 ^ + 618 (SIN ESPACIOS BLANCOS, pestañas o líneas nuevas)
¡Este código tomó más matemáticas que lógica! en contar el número de bytes
CÓDIGO CORTO
SALIDA
De Verdad ? ¡seriamente! quieres ver salida? ¡Este código tardaría semanas en escribirse y meses en compilarse!
fuente
x
oy
no es un número entero?C - 2.739.341.494.945.868.415.002 (sin incluir espacios en blanco)
Fuerza bruta para la victoria. Solo maneja enteros y conserva el comportamiento de desbordamiento. Aquí hay un fragmento del código:
Obviamente, esto es demasiado grande para cargarlo aquí o en Pastebin, por lo que aquí hay un programa que generará el código fuente de la función (dirige la salida a un archivo, suponiendo que tenga el espacio en el disco):
Me estremezco por cuánto tiempo sería la función durante largos largos ...
EDITAR: recalculó la puntuación (debe ser correcta) para dar un recuento exacto. Prefiero pensar que jugué golf por 10²² caracteres cuando eliminé el espacio en blanco.
fuente
else if
.LEFT_SIDE_NEG_2147483648 = -2147483648
) ... es una buena práctica usar nombres descriptivos en lugar de valores codificados, ya sabe.C ++, 3573
3573, entonces se estaba volviendo aburrido, pero puedo continuar agregando más capas de abstracción.
fuente
Ruby, 29048 (puede ser tan alto como sea necesario, pero tuve que ponerlo por debajo del límite de caracteres para las publicaciones)
¿Y de dónde saqué esa enorme cuerda, preguntas? Este es el programa que utilicé para generarlo:
¡Yay por "compresión"! :PAGS
Como puede ver, establecí el límite de longitud de la cadena en 29000, que está justo por debajo del límite de longitud para las publicaciones de Stack Exchange, pero podría hacerlo tan alto como quisiera.
fuente
PHP - 1299
Las reglas no prohíben el uso de bibliotecas externas, así que aquí está el código usando SimplePHPEasyPlus :
fuente
C (a través de perl) - 170,141,183,381,241,069,554,076,045,499,751,727,125 (eso es 1.70141183381241e + 38) para entradas sin signo de 32 bits
¡Mi filosofía es que, al implementar la adición desde cero, no es aconsejable confiar en los costos previos calculados como 2, 3, 7 o 65535! 0 y 1 deberían ser las únicas constantes que necesitamos, ¿verdad?
Por lo tanto, no precalculo ninguna constante, las calculo sobre la marcha, como se ve a continuación. Para admitir la entrada de entero con signo de 8 bits, necesitará un código fuente de 20.461.843 caracteres que no sean espacios en blanco. Para implementar una entrada de entero con signo de 32 bits, necesitará un código fuente de longitud 1.70141183381241e + 38 ;-)
¿Listo para un pequeño fragmento del código entero firmado de 8 bits? Aquí estás:
Tenga en cuenta que este código tiene algo de golf, no digo, por ejemplo:
No es necesario verificar si x es igual a uno cada vez, ¿verdad? Entonces, mi código es mucho más eficiente † y conciso †, y hace esto en su lugar:
Ciertamente podría extender aún más la longitud del código cambiando al método menos conciso =)
Y aquí está el código fuente que usé para generar estas monstruosidades, pero tenga cuidado: representar un número entero de 24 bits en este formato (33 MB cada uno) da como resultado que Perl coma más de 1 GB de memoria en mi máquina. Si tiene más de 512 GB de memoria a su disposición, debería poder seguir adelante y probarlo con enteros de 32 bits =)
Menos mal, eso es =)
fuente
Java - 2406 (3220 con espacios en blanco)
Todos sabemos que las computadoras son buenas para manejar bits y no tan buenas para todo lo demás. ¡Por lo tanto, mi programa realiza la adición usando una adición eficiente a nivel de bits!
fuente
Java -
309731759No es la más larga, pero podría ser la interpretación errónea más plausible.
editar: ¡Vaya! Acabo de notar que esto no es trolling de código .
fuente
for
bucle para decir "replicar esto en todos los bits de los buses de entrada". (Imagínese un lenguaje con una sintaxis de procedimiento y ejecución funcional ... donde la principal herramienta para la edición era una representación altamente procedimental como diagramas de flujo ... ¿qué puedo decir, que fue un esfuerzo temprano.)Python 2.7 (agregando el buen camino)
el crédito va a https://stackoverflow.com/questions/366706/bitwise-subtraction-in-python
fuente
raw_input()
. Estaba insinuando al OP que es una buena práctica indicar el idioma.fuente
C # - 5395
Vamos a emitir código cil para sumar usando un método dinámico. En realidad, emito código, que a su vez emite código para llamar a la suma de enteros. La
Add()
siguiente función crea un método dinámico, que cuando se ejecuta crea un método dinámico para llamar a la suma de enteros.fuente
{System.SystemException}: {"JIT Compiler encountered an internal limitation."}
Supongamos que desea que el código sea más largo que n caracteres. El siguiente código es mucho más largo.
fuente
do
No funciona bien para grandes cantidades, pero puede ser reemplazado por esto
fuente