Das Problem:
Ich bin der Hauptentwickler für ein großes Unternehmen, wir machen Skynet. Ich wurde zugeteilt
Schreiben Sie eine Funktion, die ihre Summe eingibt und zurückgibt
REGELN: Keine Antworten wie
function sum(a,b){
return "their sum";
}
BEARBEITEN: Die akzeptierte Antwort ist die mit den meisten positiven Stimmen am 1. Januar 2014
Hinweis: Dies ist eine Code-Trolling- Frage. Bitte nehmen Sie die Frage und / oder die Antworten nicht ernst. Mehr Infos hier .
popularity-contest
code-trolling
scrblnrd3
quelle
quelle
$.sum=function(a,b){return a+b};
.'SELECT ' + a + ' + ' + b + ';'
. Es ist einfach und verständlich.Antworten:
Wie dieser Code funktioniert (ich würde diese Erklärung nicht in meine Antwort auf das faule OP einfügen, das überwacht werden muss, keine Sorge):
((a & ~877 - b ^ 133 << 3 / a) & ((a - b) - (a - b))) | a
kehrt einfach zurücka
und((b ^ (a < 0 ? b : a)) & ((b - a) - (b - a))) | b
kehrt einfach zurückb
.6755 & 1436
Gibt zurück0
, sodass in der Schleifei
tatsächlich mit dem Wert begonnen0
wird und Sie innerhalb der Schleife den Wert1
zur Liste hinzufügen . Wenn alsoa
ist5
undb
ist3
, wird der Wert1
8 Mal zur Liste hinzugefügt.Die
importantCalculation
Funktion ist eine sehr lange Funktion, die nichts anderes tut, als zwei Zahlen zu addieren. Mit der LINQ-Aggregate
Funktion addieren Sie alle Zahlen. Es ist auch unnötig, das Ergebnis vonConvert.ToInt32
auf eine zu setzenint
, da es bereits eine istint
.Dieser Code ist etwas, das der Lazy OP nicht verstehen würde, was genau die Absicht ist :-)
quelle
6755 & 1436
undefiniertes Verhalten ist, obwohl OP davon ausgeht, dass die meisten Zahlen zu funktionieren scheinen ...var x = Sum(0, 4)
DivideByZeroException.Bash - 72 Bytes
Manchmal sind traditionelle deterministische Additionstechniken zu präzise und unnötig schnell - manchmal möchten Sie der CPU eine kleine Pause gönnen.
Einführung des verlustbehafteten SleepAdd-Algorithmus .
Probelauf:
Diese Funktion ist als Begleiter des angesehenen SleepSort gedacht . Es ist eine Übung für den Leser, diesen Algorithmus anzupassen, um einen verlustbehafteten SleepMax zu erzeugen, um die größere von zwei Zahlen zu erhalten.
Pro-Tipp: Dieser Algorithmus kann weiter optimiert werden - eine zweifache Geschwindigkeitserhöhung ist möglich, wenn die ihr zugewiesenen Zahlen zuerst durch 2 geteilt werden.
quelle
Java
Dies schreibt im Grunde eine Datei mit der Anzahl von Bytes, die gleich der tatsächlichen Summe sein sollte. Wenn die Datei geschrieben wird, fragt sie die Festplattendateitabelle nach der Größe dieser Datei.
quelle
write
oderflush
werfen? Es sieht für mich so aus, als ob Sie sichflush
in jede Schleife begeben und das Ganze in einen Try-Catch einwickeln sollten, um den Schreibvorgang erneut zu versuchen, wenn er fehlschlägt oder der Flush fehlschlägt.C
In der Quantenwelt kann man sich nicht auf Atomoperatoren verlassen
+
, hier ist meine Implementierung der Addition in Bezug auf das Quantencomputing:quelle
Haskell
Ermittelt die richtige Lösung in O (n ^ 2) Zeit. Basierend auf anwendbaren Funktoren , die auch implementiert werden
Alternative
.Beispiel:
daSum [1,2,3,4,5]
ergibt 15.Update: So funktioniert es: Eine Zahl a wird als Polynom xa dargestellt . Eine Liste von Zahlen a1, ..., aN wird dann als die Erweiterung von (x-a1) (x-a2) ... (x-aN) dargestellt . Die Summe der Zahlen ergibt dann den zweithöchsten Koeffizienten. Um die Idee weiter zu verschleiern, wird ein Polynom als anwendbarer + alternativer Funktor dargestellt, der eigentlich keinen Wert enthält, sondern nur das Polynom als Liste von Zahlen codiert (isomorph zu
Constant [n]
). Die anwendbaren Operationen entsprechen dann der Polynommultiplikation und den alternativen Operationen zur Addition (und sie halten sich auch an anwendbare / alternative Gesetze).Die Summe der Zahlen wird dann berechnet, indem jede Zahl in das entsprechende Polynom
Poly
abgebildet wird und dann die Liste unter Verwendung des anwendbaren Frunktors durchlaufen wird, der das Produkt der Polynome berechnet und schließlich den richtigen Koeffizienten am Ende extrahiert.quelle
Sie möchten Zahlen hinzufügen ?!? Ihnen ist bewusst, dass dies eine sehr komplizierte Aktion ist? OK, auf der anderen Seite sind Sie der Hauptentwickler, Sie werden auf solche Probleme stoßen müssen.
Dies ist die einfachste Lösung, die ich finden konnte:
Fallen Sie nicht dem Operator "+" zum Opfer, es ist völlig ineffizient. Drehen Sie den Operator "Gehe zu" um oder verwenden Sie ihn für kleinere Zahlen, die größer werden.
quelle
NODE.JS - SUMMMMYYMYYMY EDITION / IBM® Javascript Enterprise SUM Solution
Wow, das ist eine sehr schwierige Frage, aber ich werde mein Bestes geben, um dies zu beantworten.
SCHRITT 1 - TELNET Server
Zuerst müssen wir die Eingaben empfangen, jetzt sollte jeder Pro und Enterprise-Codierer (wie ich) wissen, dass der beste Weg, Eingaben zu empfangen, darin besteht, einen Telnet-Server einzurichten !!!
Beginnen wir mit dem grundlegenden Telnet-Server:
Es ist wirklich nichts Besonderes daran, das ist ein typischer Telnet-Server. Wir haben einige grundlegende UNICODE-Reinigungsfunktionen erstellt, um einen schönen Roh-String zu erhalten, und wir haben auch unsere
SUM
Funktion hinzugefügt .Nun muss der Benutzer 'SUM' eingeben. Sie werden dann zur Eingabe aufgefordert
teh numberz
, sobald die summm () -Funktion ausgeführt wird, und die Summe aller eingegebenen Zahlen wird berechnet.SCHRITT ZWEI - Zusammenfassung
Es ist jetzt Zeit, unsere
summm
Funktion zu erstellen , die die Summe aller eingegebenen Zahlen ergibt.Hier ist der Code:
Und los geht's. Es ist Ihre alltägliche IBM Lösung. TELNET POWER DEN GANZEN WEG!
Zuerst geben Sie SUM ein.
Der Server fragt dann nach den Nummern, die Sie hinzufügen möchten, und Sie können sie als solche eingeben:
a, b, c, etc..
Vertrauen Sie mir in diesem Fall, alle Botnets verwenden heutzutage IBM® Javascript Enterprise SUM Solution;).
Und hier ist der Beweis, dass alles funktioniert:
(KLICKBAR)
quelle
Hier ist eine Lösung in Java für Sie. Es basiert auf dem bewährten "Satz von unendlichen Affen": Wenn Sie sich in einem Raum mit unendlichen Affen befinden, werden Sie mit Kot überhäuft. Oder etwas ähnliches.
quelle
return sum(a-number, b+number);
durchreturn sum(sum(a,-number), sum(b,number));
. Du musst doch dein eigenes Hundefutter essen, oder?b+number
, dann wäre es offensichtlich, dass die gesamte Methode nicht notwendig ist. Besser, das zu verschleiern. Außerdem wird es noch langsamer.C - Overkill ist am besten töten
Computer haben nur Nullen und Einsen, daher ist es sehr schwierig, eine geeignete, schnelle und skalierbare Lösung für das Hinzufügen zu implementieren. Zum Glück habe ich skynet 0.1284a entwickelt, damit ich weiß, wie ich dieses gefährliche Problem lösen kann.
Normalerweise müssten Sie die C-Standardbibliothek DLC kaufen, da der Core diese nicht enthält, aber ich habe es geschafft, meinen Weg daraus zu "schummeln". Kurz gesagt, dies ist die billigste und effektivste Methode.
Schau es dir an. Es ist offensichtlich böse.
quelle
Python
Verwendet die mathematische Identität
log(ab) = log(a) + log(b)
für eine Lösung, die für kleine Zahlen funktioniert, aber für jede praktische Anwendung überläuft.Auf diese Weise wird sichergestellt, dass unser fauler Programmierer glaubt, dass es mit Testdaten funktioniert, und dass es in der realen Welt abstürzt.
quelle
from functools import reduce
Füge einfach für python3 hinzu.C #
Sie sollten die Rekursion verwenden, um Ihr Problem zu lösen
Wenn es gut genug für Peano ist, ist es gut genug für alle.
quelle
++a
statt seina++
? (Änderungen müssen aus mindestens 6 Zeichen bestehen; gibt es in diesem Beitrag noch etwas zu verbessern?) Dumm dumm dumm dumm dumm SOC ++
Wir erwarten, dass eine Operation wie Addition sehr schnell ist. Viele der anderen Antworten konzentrieren sich einfach nicht genug auf die Geschwindigkeit. Hier ist eine Lösung, die nur bitweise Operationen verwendet , um maximale Leistung zu erzielen.
quelle
Meine bisher beste Lösung gibt eine ziemlich unverständliche Antwort, bis Sie ausgeführt werden
aVeryLargeNumber()
quelle
aVeryLargeNumber()
: Es gibt 1 (ich dies , wenn die OP Pings ich entfernen würde.)C ++ - Peano-Nummern mit Template-Metaprogrammierung (mit optionalem Doge)
Und im Ernst:
Meine Freunde sagten mir, ich solle den Code doggieren, also tat ich es. Es macht Spaß, aber ich denke, es nimmt zu viel von der Tatsache ab, dass dies so dumm ist, also habe ich es nur als Link eingefügt.
quelle
Ich habe aufgehört, Computern zu vertrauen, als ich von Fließkommafehlern erfuhr.
Dieses JavaScript basiert auf einer präzisen Überprüfung menschlicher Fehler:
quelle
"Schreiben Sie eine Funktion, die ihre Summe eingibt und zurückgibt."
Okay:
quelle
Java oder C-Style. Dies ist O (log n). Hinweis: Dies funktioniert nicht bei negativem a oder b.
Ideone Demo hier.
quelle
Schlag mit Hadoop Streaming
Offensichtlich
a
undb
kann sehr groß werden. Deshalb müssen wir Hadoop!Als zusätzlichen Bonus beinhaltet dieser Ansatz a
cat
und awc
. Das sollte Spaß machen! Aber ich plane, Mahout in Zukunft dafür zu verwenden (obwohl ich Katzen mag).Dies muss die skalierbarste Lösung für diese Frage sein. Ich kann mir jedoch vorstellen, dass eine rekursive Hadoop-Lösung viel eleganter ist.
quelle
Ignoriere all diese albernen Leute mit ihren nicht generischen und nicht testbaren Manieren. Für ein Projekt dieser Größenordnung benötigen wir eine performante, erweiterbare und einfache Bibliothek. Es muss die Erweiterung und Ersetzung an jedem Punkt des Codes unterstützen. Dafür brauchen wir eine ebenso erweiterbare und einfache Sprache, deshalb ist C # der beste Kandidat .
Aus diesem Grund präsentiere ich Ihnen die Beta-Version meiner Operable Commons Library Enterprise Edition, Version 0.8.4.4_beta1.3a_rev129857_dist29.12.13 / master , die in dieser Version eine
IOperable
Schnittstelle bereitstellt, eineIAddable
Schnittstelle, sodass Sie Ihre eigenen effizienten Additionsmethoden verwenden können, und eine Standardimplementierung vonIAddable
: theAddable
Klasse, die eine äußerst effiziente bitweise Addition verwendet, ohne zu schummeln und die langsame native Subtraktion zum Verschieben des Übertrags verwendet. Natürlich enthält es, wie jede gute Bibliothek, eine Factory für jeden unterstützten Typ. Die Bibliothek folgt auch den Grundsätzen der "Selbstverwaltung". Sie müssen also sicherstellen, dass die Eingabe gültig und die gewünschte Ausgabe möglich ist, da sie nicht auf ungültige Daten überprüft. Hier ist es (Dieser Code ist lizenziert unter der schreibgeschützten Dont-Touch-This Obstructive License, Revision 3.1 der Microsoft Corporation):quelle
JavaScript
Beim Programmieren dreht sich alles um Algorithmen. Kehren wir zum grundlegenden Algorithmus zurück, den wir im Alter von drei Fingern lernen.
Als führender Entwickler müssen wir zunächst eine kluge Sprachauswahl treffen - plattformübergreifend, leicht und portabel.
Zweitens haben Sie eine globale Vision. Verwenden Sie Global var.
Drittens ++ s und --s
Genau wie YFS (You-Finger-System) unterstützt dies keine negativen Zahlen
Schließlich können Sie
FINGER_NUMBER
entsprechend der Anzahl der Finger ändern , die Sie haben.JSFiddle: http://jsfiddle.net/e3nc5/
quelle
TI-Basic 83/84
quelle
Nun, das ist ein bisschen knifflig. Glücklicherweise macht es Python einigermaßen einfach. Sie benötigen PIL , um dies richtig zu machen.
Kommentare von Watterson angepasst .
Absichtlich das langsame verwenden
Image.getpixel()
. Ich bin mir nicht sicher, ob es langsam genug ist, verdammt. RGBA, nur um zusätzlichen Speicher zu belegen.quelle
JAVA
Im folgenden Code steht ... für Code, für den ich zu faul war, um ihn zu schreiben, aber Sie sollten es herausfinden können. Um dies wirklich mit Stil zu tun, wäre ein Code-Generierungsprogramm erforderlich. Die Grenzen 0 und 10 können beliebig geändert werden. Je größer die Grenzwerte, desto mehr Code und ein Computer könnten die ... s leicht ausfüllen.
quelle
Lua
quelle
Der Code ist fertig. Sei sehr vorsichtig damit. Dieser Code ist äußerst komplex und neigt wahrscheinlich dazu, ein intelligentes bewusstes und selbstbewusstes Wesen zu werden. Es ist hoch eingestufter streng geheimer Code.
quelle
C ++
Natürlich brauchen Sie Template-Magie :
quelle
JAVA
Schweres Problem.
Es ist bekannt, dass es in der Informatik Probleme gibt, deren Antworten zu überprüfen, anstatt sie zu finden. Verwenden Sie daher einen Zufallsalgorithmus, um die Lösung zu erraten, und überprüfen Sie sie (effizient!). Hoffen Sie, dass Sie in angemessener Zeit das richtige Ergebnis erzielen:
quelle
Diese Funktion steht unter dem Patent meiner Firma. Ich kann Ihnen eine verschleierte lizenzierte Kopie davon zur Verfügung stellen:
Javascript:
Verwendungszweck:
quelle
Python
Die Programmierung ist fehlertolerant. Das Folgende ist eine Implementierung der Summe, die alles hinzufügt, ohne sich aufzuregen. Die Elemente werden transparent in der Reihenfolge sortiert, in der sie hinzugefügt werden können. Falls es nicht addierbar ist, wird es als gekennzeichnet
NaN
.quelle
Fortran
Offensichtlich ist der effizienteste Weg, um Ihre Bits zu verschieben. Dies kann mit C + Fortran einfach über das
iso_c_binding
Modul erfolgen:wo die C-Routine ist
Sie müssen zuerst den C-Code kompilieren (z. B.
gcc -c mycfile.c
), dann den Fortran-Code kompilieren (z. B.gfortran -c myf90file.f90
) und dann die ausführbare Datei erstellen (gfortran -o adding myf90file.o mycfile.o
).quelle