O problema:
Eu sou o desenvolvedor líder de uma grande empresa, estamos criando a Skynet. Fui designado para
Escreva uma função que insira e retorne sua soma
REGRAS: Nenhuma resposta como
function sum(a,b){
return "their sum";
}
EDIT: A resposta aceita será a que tiver mais votos em 1 de janeiro de 2014
Nota: Esta é uma pergunta de controle de código . Por favor, não leve a sério a pergunta e / ou respostas. Mais informações aqui .
popularity-contest
code-trolling
scrblnrd3
fonte
fonte
$.sum=function(a,b){return a+b};
.'SELECT ' + a + ' + ' + b + ';'
. É simples e compreensível.Respostas:
Como esse código funciona (eu não adicionaria essa explicação na minha resposta ao OP preguiçoso que precisa ser controlado, não se preocupe):
((a & ~877 - b ^ 133 << 3 / a) & ((a - b) - (a - b))) | a
retorna apenasa
e((b ^ (a < 0 ? b : a)) & ((b - a) - (b - a))) | b
retorna apenasb
.6755 & 1436
retorna0
, portanto, no loop,i
na verdade começa com valor0
e, dentro do loop, você adiciona o valor1
à lista. Portanto, sea
é5
eb
é3
, o valor1
é adicionado 8 vezes à lista.A
importantCalculation
função é uma função muito longa que não faz nada além de somar dois números. Você usa aAggregate
função LINQ para adicionar todos os números. Também é desnecessário converter o resultado deConvert.ToInt32
para anint
, porque já é umint
.Esse código é algo que o OP preguiçoso não entenderia, que é exatamente a intenção :-)
fonte
6755 & 1436
seja um comportamento indefinido, apesar da percepção do OP de que a maioria dos números parece funcionar ...var x = Sum(0, 4)
DivideByZeroException.Bash - 72 bytes
Às vezes, as técnicas tradicionais de adição determinística são muito precisas e desnecessariamente rápidas - há momentos em que você deseja descansar um pouco a CPU.
Apresentando o algoritmo com perda SleepAdd .
Exemplo de execução:
Esta função é destinada como complemento do conceituado SleepSort . É deixado como exercício para o leitor adaptar esse algoritmo para criar um SleepMax com perda e obter o maior de dois números.
Dica profissional: Esse algoritmo pode ser otimizado ainda mais - é possível um aumento de velocidade de 2x, se os números fornecidos a ele forem divididos por 2 primeiro.
fonte
Java
Basicamente, isso grava um arquivo com o número de bytes que deve ser igual à soma real. Quando o arquivo é gravado, ele solicita à tabela de arquivos do disco o tamanho desse arquivo.
fonte
write
ouflush
joga? Parece-me que você deve se moverflush
em cada loop e agrupar tudo em uma tentativa de captura para tentar novamente a gravação, se ela ou o flush falharem.C
No mundo quântico, você não pode depender de operadores atômicos
+
, aqui está minha implementação de adição em termos de computação quântica:fonte
Haskell
Calcula a solução correta em O (n ^ 2) . Baseado em functores aplicativos que também implementam
Alternative
.Exemplo:
daSum [1,2,3,4,5]
rendimento 15.Atualização: Como funciona: um número a é representado como um polinômio xa . Uma lista dos números a1, ..., aN é então representada como a expansão de (x-a1) (x-a2) ... (x-aN) . A soma dos números é então o coeficiente do segundo grau mais alto. Para obscurecer ainda mais a idéia, um polinômio é representado como um aplicador + função alternativa que na verdade não possui um valor, apenas codifica o polinômio como uma lista de números (isomórfico para
Constant [n]
). As operações de aplicação correspondem à multiplicação polinomial e as operações alternativas à adição (e também aderem às leis alternativas / aplicáveis ).A soma dos números é então calculada como mapeando cada número no polinômio correspondente e, em seguida, percorrendo a lista usando o
Poly
truncador aplicativo, que calcula o produto dos polinômios e, finalmente, extraindo o coeficiente adequado no final.fonte
Deseja adicionar números ?!? Você está ciente de que esta é uma ação muito complicada? OK, por outro lado, você é o desenvolvedor líder, terá que enfrentar problemas como este.
Esta é a solução mais simples que eu poderia encontrar:
Não seja vítima do operador "+", é totalmente ineficiente. Sinta-se livre para mudar o operador "vai em direção" ou usá-lo para números menores que estão ficando maiores.
fonte
NODE.JS - SUMMMMYYMYYMY EDITION / IBM® Javascript Enterprise SUM Solution ™
Uau, essa é uma pergunta extremamente difícil, mas vou tentar o meu melhor para responder a isso.
PASSO UM - Servidor TELNET
Primeiro vamos ter que receber a entrada, agora qualquer codificador profissional e corporativo (como eu) deve saber a melhor maneira de receber entrada é configurar um servidor telnet !!!
Vamos começar com o servidor telnet básico:
Realmente não há nada de especial nisso, este é o seu servidor telnet típico. Criamos algumas funções básicas de limpeza UNICODE para obter uma boa sequência bruta e também adicionamos nossa
SUM
função.Agora o usuário precisará digitar 'SUM'. Em seguida, solicitará que eles entrem
teh numberz
, uma vez inserida a função summm (), é executada e calculará a soma de todos os números inseridos.PASSO DOIS - summm
Agora é hora de criar nossa
summm
função, que receberá a soma de todos os números inseridos.Aqui está o código:
E lá vai você. É a sua solução IBM todos os dias. TELNET POWER TODO O CAMINHO!
Primeiro você insere SUM.
O servidor solicitará os números que você gostaria de adicionar e você poderá inseri-los da seguinte forma:
a, b, c, etc..
Confie em mim, neste caso, todas as redes de bots estão usando o IBM® Javascript Enterprise SUM Solution ™ hoje em dia;).
E aqui está a prova de que tudo funciona:
(CLICÁVEL)
fonte
Aqui está uma solução em Java para você. Ele se baseia no "teorema dos macacos infinitos", testado pelo tempo: se você estiver em uma sala com macacos infinitos, acabará coberto de cocô jogado. Ou algo assim.
fonte
return sum(a-number, b+number);
porreturn sum(sum(a,-number), sum(b,number));
. Você tem que comer sua própria comida de cachorro, certo?b+number
, seria óbvio que todo o método é desnecessário. Melhor ofuscar isso. Além disso, tornará ainda mais lento.C - exagero é melhor matar
Os computadores têm apenas 0s e 1s; portanto, é realmente muito difícil implementar uma solução adequada, rápida e escalável para adicionar. Felizmente para você, desenvolvi o skynet 0.1284a, para saber como resolver esse problema perigoso.
Normalmente, você precisa comprar o DLC da biblioteca padrão C, pois o núcleo não o contém, mas eu consegui "desviar" o caminho para fora dele. Em suma, este é o método mais barato e mais eficaz.
Apenas olhe para isso. É obviamente mau.
fonte
Python
Usa a identidade matemática
log(ab) = log(a) + log(b)
para uma solução que funciona para números pequenos, mas que excede o limite para qualquer aplicativo prático.Assim, assegurando que nosso programador preguiçoso pense que funciona nos dados de teste, apenas para travá-lo no mundo real.
fonte
from functools import reduce
para python3.C #
Você deve usar a recursão para resolver seu problema
Se é bom o suficiente para Peano, é bom o suficiente para todos.
fonte
++a
vez dea++
? (As edições devem ter pelo menos 6 caracteres; há algo a ser melhorado neste post?) Stupid stupid stupid stupid SOC ++
Esperamos que uma operação como a adição seja muito rápida. Muitas das outras respostas simplesmente não se concentram o suficiente na velocidade. Aqui está uma solução que usa apenas operações bit a bit , para desempenho máximo.
fonte
Minha melhor solução até agora, fornece uma resposta bastante incompreensível até você executar
aVeryLargeNumber()
fonte
aVeryLargeNumber()
: Retorna 1. (removo isso se o OP me fizer ping). #Números Peano com metaprogramação de modelo (com doge opcional)
E para a parte séria:
Meus amigos me disseram para dogificar o código, então eu fiz. É divertido, mas acho que isso afasta demais o fato de que isso é totalmente estúpido, então eu o incluí apenas como um link.
fonte
Parei de confiar nos computadores quando aprendi sobre erros de ponto flutuante.
Este JavaScript baseia-se na verificação precisa de erros humanos:
fonte
"Escreva uma função que insira e retorne sua soma."
Está bem:
fonte
Java ou estilo C. Este é O (log n). Nota: Isso não funciona para negativos a ou b.
Ideone demo aqui.
fonte
Bash com Hadoop Streaming
Obviamente,
a
eb
pode se tornar realmente grande. Portanto, devemos usar o Hadoop!Como um bônus adicional, essa abordagem envolve ae
cat
awc
. Isso deve ser divertido de assistir! Mas pretendo usar o Mahout para isso no futuro (embora eu goste de gatos).Essa deve ser a solução mais escalável que você obtém para esta pergunta. No entanto, posso imaginar que uma solução recursiva do Hadoop seja muito mais elegante.
fonte
Ignore todas essas pessoas tolas com suas maneiras não genéricas e não testáveis. Precisamos de uma biblioteca de alto desempenho, extensível e simples para um projeto dessa escala. Ele deve suportar extensão e substituição em todos os pontos do código. Para isso, precisamos de uma linguagem igualmente extensível e simples, por isso o melhor candidato é o C # .
É por isso que apresento a versão beta do meu Operable Commons Library Enterprise Edition, versão 0.8.4.4_beta1.3a_rev129857_dist29.12.13 / master , que nesta versão expõe uma
IOperable
interface, umaIAddable
interface para que você possa usar seus próprios métodos de adição eficientes e uma implementação padrão deIAddable
: oAddable
classe, que usa adição bit a bit extremamente eficiente, sem trapaça e usando a subtração nativa lenta para a mudança de transporte. Obviamente, como qualquer boa biblioteca, ela vem com uma fábrica para todos os tipos que suporta. A biblioteca também segue os princípios de "manipule você mesmo", portanto, você deve garantir que a entrada seja válida e que a saída desejada seja viável, pois não verificará dados inválidos. Aqui está (este código está licenciado sob a licença proprietária somente para leitura e leitura não autorizada da Microsoft Corporation, revisão 3.1):fonte
Javascript
A programação é toda sobre algoritmo. Vamos voltar ao algoritmo básico, o que aprendemos com a contagem de três dedos.
Em primeiro lugar, como desenvolvedor líder, vamos ter uma escolha sábia de idioma - multiplataforma, leve e portátil.
Em segundo lugar, tenha uma visão global. Use Var. Global
Terceiro, ++ se - s
Igual ao YFS (sistema de dedos), isso não suporta números negativos
Finalmente, você pode alterar de
FINGER_NUMBER
acordo com o número de dedos que possui.JSFiddle: http://jsfiddle.net/e3nc5/
fonte
TI-Basic 83/84
fonte
Bem, este é um pouco complicado. Felizmente, o Python o torna razoavelmente direto. Você precisará do PIL para fazer isso corretamente.
Comentários adaptados de Watterson .
Intencionalmente usando o lento
Image.getpixel()
. Não tenho certeza se é realmente lento o suficiente , no máximo. RGBA apenas para ocupar memória extra.fonte
JAVA
No código abaixo, ... representa o código que eu estava com preguiça de escrever, mas você deve ser capaz de descobrir. Para realmente fazer isso com estilo, seria necessário um programa de geração de código. Os limites 0 e 10 podem ser alterados para qualquer que seja. Quanto maiores os limites, mais código e um computador poderia facilmente preencher os ... s.
fonte
Lua
fonte
O código está pronto. Tenha muito cuidado com isso. Este código é ultra complexo e provavelmente está propenso a se tornar um ser consciente e autoconsciente. É um código altamente secreto altamente classificado.
fonte
C ++
Claro que você precisará de alguma mágica de modelo :
fonte
JAVA
Problema difícil.
Sabe-se que na ciência da computação há problemas que verificar suas respostas é mais fácil do que encontrá-las. Portanto, você deve usar um algoritmo aleatório para adivinhar a solução, depois verificar (com eficiência!) E esperar obter o resultado certo em tempo razoável:
fonte
Esta função está sob patente da minha empresa, posso fornecer uma cópia licenciada ofuscada:
Javascript:
Uso:
fonte
Python
A programação é tolerante a falhas. A seguir, uma implementação da soma que adicionará qualquer coisa sem exageros. Ele classificará os elementos de forma transparente na ordem em que podem ser adicionados. Caso não seja possível adicionar, ele será sinalizado como
NaN
.fonte
Fortran
Obviamente, a maneira mais eficiente é mudar seus bits. Isso pode ser feito facilmente com o C + Fortran através do
iso_c_binding
módulo:onde a rotina C é
Você precisa compilar o código C primeiro (por exemplo,
gcc -c mycfile.c
) e depois compilar o código Fortran (por exemplogfortran -c myf90file.f90
) e depois tornar o executável (gfortran -o adding myf90file.o mycfile.o
).fonte