Tarefa:
Eu sei que todos podemos adicionar dois números da maneira mais curta, usando +
. Sua tarefa é criar o código mais longo possível para adicionar dois números de entrada.
Regras:
- Todo o código deve estar no tópico (não o preencha com código de não adição para adicionar comprimento)
- A contagem está em caracteres, mas não conta tabulações, espaços ou novas linhas.
- Não use nomes de variáveis muito longos
- Isso é boliche de código , então a resposta mais longa vence!
number
code-bowling
O médico
fonte
fonte
a + b - b + b...
? Seria infinitoa + b/2
, nãoa + b
(é semelhante à série de Grandi ).Respostas:
C ++ MAIS DE 3x10 ^ + 618 (SEM ESPAÇOS EM BRANCO, guias ou novas linhas)
Esse código levou mais matemática do que lógica! na contagem do número de bytes
CÓDIGO CURTO
SAÍDA
Sério ? a sério! você quer ver a saída? esse código levaria semanas para escrever e meses para compilar!
fonte
x
ouy
não?C - 2.739.341.494.945.868.415.002 (Não incluindo espaço em branco)
Força bruta para a vitória. Manipula apenas números inteiros e preserva o comportamento de estouro. Aqui está um trecho do código:
Obviamente, esse é um caminho muito grande para carregar aqui ou no Pastebin, então aqui está um programa que irá gerar o código fonte da função (direcione a saída para um arquivo - supondo que você tenha espaço em disco):
Estremeço com a duração da função por muito tempo ...
EDIT: recalculou a pontuação (deve estar correta) para fornecer a contagem exata. Prefiro pensar que joguei 10 caracteres com 10² quando removi o espaço em branco.
fonte
else if
.LEFT_SIDE_NEG_2147483648 = -2147483648
) ... é uma boa prática usar nomes descritivos em vez de valores codificados, você sabe.C ++, 3573
3573, então estava ficando chato, mas posso continuar adicionando mais camada de abstração.
fonte
Ruby, 29048 (pode ser o mais alto possível, mas eu precisava obtê-lo abaixo do limite de caracteres para postagens)
E onde eu consegui essa corda enorme, você pergunta? Este é o programa que eu usei para gerá-lo:
Yay para "compressão"! : P
Como você pode ver, defino o limite de comprimento da string como 29000, que está abaixo do limite de comprimento das postagens do Stack Exchange, mas eu poderia fazer isso o mais alto que quisesse.
fonte
PHP - 1299
As regras não proíbem o uso de bibliotecas externas, então aqui está o código usando o SimplePHPEasyPlus :
fonte
C (via perl) - 170,141,183,381,241,069,554,076,045,499,751,727,125 (ou seja, 1,70141183381241e + 38) para entradas não assinadas de 32 bits
Minha filosofia é que, ao implementar a adição do zero, não é aconselhável confiar em clientes pré-computados como 2, 3, 7 ou 65535! 0 e 1 devem ser as únicas constantes de que precisamos, certo?
Portanto, não pré-calculo nenhuma constante - eu as calculo em tempo real, como visto abaixo! Para dar suporte à entrada inteira assinada de 8 bits, você precisará do código-fonte com 20.461.843 caracteres que não sejam espaços em branco. Para implementar a entrada inteira assinada de 32 bits, você precisará do código-fonte de comprimento 1.70141183381241e + 38 ;-)
Pronto para um pequeno trecho do código inteiro assinado de 8 bits? Olha Você aqui:
Note que este código é um pouco jogado - não digo por exemplo:
Não é necessário verificar se x é igual a um por vez, certo? Portanto, meu código é muito mais eficiente † e conciso †, e faz isso:
Eu certamente poderia estender ainda mais o comprimento do código, mudando para o método menos conciso =)
E aqui está o código fonte que eu usei para gerar essas monstruosidades, mas tenha cuidado - representar um número inteiro de 24 bits nesse formato (33 MB cada) resulta em perl consumindo mais de 1 GB de memória na minha máquina. Se você tiver mais de 512 GB de memória à sua disposição, poderá seguir em frente e experimentá-lo com números inteiros de 32 bits =)
Ufa, é isso =)
fonte
Java - 2406 (3220 com espaço em branco)
Todos sabemos que os computadores são bons em lidar com bits e não tão bons em todo o resto. Portanto, meu programa executa a adição usando a adição bit a bit eficiente!
fonte
Java -
309731759Não é o mais longo, mas pode ser a interpretação errada mais plausível.
edit: Opa, acabei de perceber que isso não é trollagem de código .
fonte
for
loop para dizer "replicar isso em todos os bits dos barramentos de entrada". (Imagine uma linguagem com sintaxe processual e execução funcional ... onde a principal ferramenta para a edição era uma representação altamente processual como fluxogramas ... o que posso dizer, foi um esforço mais cedo.)Python 2.7 (adicionando o bom caminho)
o crédito vai para https://stackoverflow.com/questions/366706/bitwise-subtraction-in-python
fonte
raw_input()
. Eu estava sugerindo ao OP que é uma boa prática indicar o idioma.fonte
C # - 5395
Permite emitir código cil para adição usando um método dinâmico. Na verdade, eu emito código, que por sua vez emite código para chamar adição de número inteiro. A função
Add()
abaixo cria um método dinâmico, que quando executado cria um método dinâmico para chamar adição de número inteiro.fonte
{System.SystemException}: {"JIT Compiler encountered an internal limitation."}
Digamos que você queira que o código tenha mais de n caracteres. O código a seguir é muito mais longo.
fonte
C
Não funciona bem para grandes números, mas pode ser substituído por este
fonte