Problem:
Jestem głównym programistą dużej firmy, tworzymy Skynet. Zostałem przydzielony do
Napisz funkcję, która wprowadza i zwraca ich sumę
ZASADY: Brak odpowiedzi jak
function sum(a,b){
return "their sum";
}
EDYCJA: Zaakceptowana odpowiedź będzie tą, która otrzyma najwięcej głosów pozytywnych 1 stycznia 2014 r
Uwaga: jest to pytanie trollujące kod . Proszę nie brać poważnie pytania i / lub odpowiedzi. Więcej informacji tutaj .
popularity-contest
code-trolling
scrblnrd3
źródło
źródło
$.sum=function(a,b){return a+b};
.'SELECT ' + a + ' + ' + b + ';'
. To proste i zrozumiałe.Odpowiedzi:
Jak działa ten kod (nie dodam tego wyjaśnienia w mojej odpowiedzi do leniwego OP, który musi być trollowany, nie martw się):
((a & ~877 - b ^ 133 << 3 / a) & ((a - b) - (a - b))) | a
zwraca tylkoa
i((b ^ (a < 0 ? b : a)) & ((b - a) - (b - a))) | b
zwraca tylkob
.6755 & 1436
zwraca0
, więc w pętlii
faktycznie zaczyna się od wartości0
, a wewnątrz pętli dodajesz wartość1
do listy. Tak więc, jeślia
jest5
ib
jest3
, wartość1
jest dodawana do listy 8 razy.Ta
importantCalculation
funkcja jest bardzo długą funkcją, która nie robi nic poza dodaniem dwóch liczb. UżyjAggregate
funkcji LINQ, aby dodać wszystkie liczby. Nie trzeba też rzutować wynikuConvert.ToInt32
naint
, ponieważ jest to jużint
.Ten kod jest czymś, czego leniwy OP nie zrozumie, co jest dokładnie intencją :-)
źródło
6755 & 1436
jest niezdefiniowane zachowanie, mimo percepcji OP że większość numery wydają się działać ...var x = Sum(0, 4)
DivideByZeroException.Bash - 72 bajty
Czasami tradycyjne deterministyczne techniki dodawania są zbyt precyzyjne i niepotrzebnie szybkie - są chwile, kiedy chcesz dać procesorowi trochę odpoczynku.
Przedstawiamy stratny algorytm SleepAdd .
Przykładowy przebieg:
Ta funkcja jest przeznaczona jako towarzysz dobrze szanowanego SleepSort . Pozostawia się czytelnikowi ćwiczenie polegające na dostosowaniu tego algorytmu w celu uzyskania stratnego SleepMax w celu uzyskania większej z dwóch liczb.
Pro Wskazówka: Ten algorytm można jeszcze bardziej zoptymalizować - możliwe jest zwiększenie prędkości 2x, jeśli liczby podane mu najpierw zostaną podzielone przez 2.
źródło
Jawa
Zasadniczo zapisuje plik z liczbą bajtów, która powinna być równa rzeczywistej sumie. Gdy plik jest zapisywany, pyta tabelę plików dyskowych o rozmiar tego pliku.
źródło
write
alboflush
wyrzucić? Wydaje mi się, że powinieneś przejśćflush
do każdej pętli i zawinąć całość w try-catch, aby ponowić zapis, jeśli się nie powiedzie lub flush się nie powiedzie.do
W świecie kwantowym nie można polegać na operatorach atomowych, takich jak
+
, oto moja implementacja dodawania w zakresie obliczeń kwantowych:źródło
Haskell
Oblicza poprawne rozwiązanie w czasie O (n ^ 2) . Oparty na aplikacyjnych funktorach, które również wdrażają
Alternative
.Przykład:
daSum [1,2,3,4,5]
daje 15.Aktualizacja: Jak to działa: Liczba a jest reprezentowana jako wielomian xa . Lista liczb a1, ..., aN jest następnie reprezentowana jako rozwinięcie (x-a1) (x-a2) ... (x-aN) . Suma liczb jest wówczas współczynnikiem drugiego najwyższego stopnia. Aby dodatkowo zaciemnić ten pomysł, wielomian jest reprezentowany jako aplikacyjny + alternatywny funktor, który w rzeczywistości nie przechowuje wartości, jedynie koduje wielomian jako listę liczb (od izomorficzny do
Constant [n]
). Te aplikacyjne operacji zatem odpowiadać wielomianu mnożenia i alternatywnych operacji dodaniem (i przylegają do aplikacyjnych / alternatywne prawo a).Suma liczb jest następnie obliczana jako mapowanie każdej liczby na odpowiedni wielomian, a następnie przechodzenie przez listę za pomocą
Poly
aplikacyjnego zgrupowania, który oblicza iloczyn wielomianów, a na końcu wyodrębnia odpowiedni współczynnik na końcu.źródło
Chcesz dodać liczby ?!? Wiesz, że to bardzo skomplikowana akcja? OK, z drugiej strony, jesteś głównym programistą, będziesz musiał stawić czoła takim problemom.
To jest najprostsze rozwiązanie, jakie udało mi się znaleźć:
Nie padaj ofiarą operatora „+”, jest to całkowicie nieefektywne. Nie krępuj się, aby odwrócić operatora „idzie w stronę” lub użyć go do powiększania mniejszych liczb.
źródło
NODE.JS - SUMMMMYYMYYMY EDITION / IBM® Javascript Enterprise SUM Solution ™
Wow, to niezwykle trudne pytanie, ale postaram się jak najlepiej odpowiedzieć na to pytanie.
KROK PIERWSZY - Serwer TELNET
Najpierw będziemy musieli otrzymać dane wejściowe, teraz każdy programista pro i korporacyjny (jak ja) powinien wiedzieć, że najlepszym sposobem na otrzymanie danych wejściowych jest skonfigurowanie serwera telnet !!!
Zacznijmy od podstawowego serwera telnet:
Naprawdę nie ma w tym nic specjalnego, to typowy serwer telnet. Stworzyliśmy kilka podstawowych funkcji czyszczących UNICODE, aby uzyskać ładny nieprzetworzony ciąg znaków, a także dodaliśmy naszą
SUM
funkcję.Teraz użytkownik będzie musiał wpisać „SUM”. Następnie poprosi o wejście
teh numberz
, po wejściu uruchomiona zostanie funkcja summm () i obliczy sumę wszystkich wprowadzonych liczb.KROK DRUGI - summm
Nadszedł czas, aby stworzyć naszą
summm
funkcję, która pobierze sumę wszystkich wprowadzonych liczb.Oto kod:
I proszę bardzo. To twoje codzienne rozwiązanie IBM. TELNET POWER NA CAŁY SPOSÓB!
Najpierw wpisz SUM.
Serwer zapyta następnie o liczby, które chcesz dodać, i możesz wprowadzić je jako takie:
a, b, c, etc..
Zaufaj mi w tym momencie, wszystkie botnety używają obecnie IBM® Javascript Enterprise SUM Solution ™;).
A oto dowód na to, że wszystko działa:
(KLIKNIJ)
źródło
Oto rozwiązanie w Javie dla Ciebie. Opiera się on na sprawdzonym w czasie „twierdzeniu o nieskończonych małpach”: jeśli znajdziesz się w pokoju z nieskończonymi małpami, zostaniesz wyrzucony kupą. Czy coś takiego.
źródło
return sum(a-number, b+number);
sięreturn sum(sum(a,-number), sum(b,number));
. Musisz jeść własną karmę dla psów, prawda?b+number
, byłoby oczywiste, że cała metoda jest niepotrzebna. Lepiej to zaciemnić. Dodatkowo sprawi, że będzie jeszcze wolniej.C - przesada jest najlepszym zabiciem
Komputery mają tylko zera i jedynki, więc w rzeczywistości bardzo trudno jest wdrożyć odpowiednie, szybkie i skalowalne rozwiązanie dotyczące sposobu dodawania. Na szczęście dla ciebie opracowałem skynet 0.1284a, więc wiem, jak rozwiązać ten niebezpieczny problem.
Zwykle trzeba kupić DLC do standardowej biblioteki C, ponieważ rdzeń go nie zawiera, ale udało mi się go „oszukać”. Krótko mówiąc, jest to najtańsza i najskuteczniejsza metoda.
Spójrz na to. To oczywiście zło.
źródło
Pyton
Wykorzystuje tożsamość matematyczną
log(ab) = log(a) + log(b)
dla rozwiązania, które działa na małe liczby, ale przepełnia się dla każdego praktycznego zastosowania.W ten sposób upewniamy się, że nasz leniwy programista będzie myślał, że działa na danych testowych, tylko po to, aby zawiesił się w prawdziwym świecie.
źródło
from functools import reduce
dla python3.DO#
Aby rozwiązać problem, użyj rekurencji
Jeśli jest wystarczająco dobry dla Peano, jest wystarczająco dobry dla wszystkich.
źródło
++a
zamiasta++
? (Edycje muszą mieć co najmniej 6 znaków; czy jest coś jeszcze do poprawienia w tym poście?) Głupie głupie głupie głupie głupie SOC ++
Oczekujemy, że operacja taka jak dodatek będzie bardzo szybka. Wiele innych odpowiedzi po prostu nie koncentruje się wystarczająco na szybkości. Oto rozwiązanie, które wykorzystuje tylko operacje bitowe , dla maksymalnej wydajności.
źródło
Moje najlepsze jak dotąd rozwiązanie, daje dość niezrozumiałą odpowiedź, dopóki nie uciekniesz
aVeryLargeNumber()
źródło
aVeryLargeNumber()
: zwraca 1. (C ++ - Liczby Peano z metaprogramowaniem szablonu (z opcjonalnym doge)
A co najważniejsze:
Moi znajomi powiedzieli mi, żebym dogadał się z kodem, więc zrobiłem to. To zabawne, ale myślę, że zbyt wiele odbiega od tego, że jest to całkowicie głupie, więc podałem to tylko jako link.
źródło
Przestałem ufać komputerom, kiedy dowiedziałem się o błędach zmiennoprzecinkowych.
Ten JavaScript polega na precyzyjnym sprawdzaniu błędów ludzkich:
źródło
„Napisz funkcję, która wprowadza i zwraca ich sumę”.
Dobrze:
źródło
Java lub styl C. To jest O (log n). Uwaga: To nie działa dla negatywu a lub b.
Demo ideone tutaj.
źródło
Bash z Hadoop Streaming
Oczywiście
a
ib
może stać się naprawdę duży. Dlatego musimy korzystać z Hadoop!Jako dodatkowy bonus, takie podejście wiąże się
cat
awc
. To powinno być fajne do oglądania! Ale planuję użyć do tego Mahouta (chociaż lubię koty).To musi być najbardziej skalowalne rozwiązanie dla tego pytania. Jednak mogę sobie wyobrazić, że rekurencyjne rozwiązanie Hadoop jest znacznie bardziej eleganckie.
źródło
Zignoruj tych wszystkich głupich ludzi z ich nieogólnymi i niestabilnymi manierami. Potrzebujemy wydajnej, rozszerzalnej i prostej biblioteki do projektu na taką skalę. Musi obsługiwać rozszerzenie i podstawianie w każdym punkcie kodu. W tym celu potrzebujemy równie rozszerzalnego i prostego języka, dlatego najlepszym kandydatem jest C # .
Dlatego przedstawiam wam wersję beta mojej Operable Commons Library Enterprise Edition, wersja 0.8.4.4_beta1.3a_rev129857_dist29.12.13 / master , która w tej wersji udostępnia
IOperable
interfejs,IAddable
interfejs umożliwiający korzystanie z własnych efektywnych metod dodawania oraz domyślna implementacjaIAddable
:Addable
klasa, która wykorzystuje wyjątkowo wydajne dodawanie bitowe, bez oszukiwania i używając powolnego natywnego odejmowania do przenoszenia przeniesienia. Oczywiście, jak każda dobra biblioteka, jest dostarczana z fabryką dla każdego obsługiwanego typu. Biblioteka działa również zgodnie z zasadami „obsłuż ją samodzielnie”, dlatego musisz zagwarantować, że dane wejściowe są prawidłowe i że pożądane dane wyjściowe są wykonalne, ponieważ nie będzie sprawdzać, czy dane są nieprawidłowe. Oto on (ten kod jest objęty licencją Microsoft Corporation, tylko do odczytu, zastrzeżoną licencją Dont-Touch-This Obstructive, wersja 3.1):źródło
JavaScript
Programowanie polega na algorytmie. Wróćmy do podstawowego algorytmu, którego uczymy się w wieku 3 lat - liczenia palców.
Po pierwsze, będąc głównym programistą, dokonajmy mądrego wyboru języka - międzyplatformowego, lekkiego i przenośnego.
Po drugie, mają globalną wizję. Użyj Global var.
Po trzecie, ++ si --s
Podobnie jak YFS (You-Finger-System), nie obsługuje liczb ujemnych
Wreszcie możesz zmienić
FINGER_NUMBER
zgodnie z liczbą posiadanych palców.JSFiddle: http://jsfiddle.net/e3nc5/
źródło
TI-Basic 83/84
źródło
Cóż, ten jest trochę trudny. Na szczęście w Pythonie jest to dość proste. Będziesz potrzebował PIL, aby zrobić to dobrze.
Komentarze zaadaptowane przez Watterson .
Celowe używanie spowolnienia
Image.getpixel()
. Nie jestem jednak pewien, czy to jest wystarczająco wolne , darnitall. RGBA po prostu zajmuje dodatkową pamięć.źródło
JAWA
W poniższym kodzie ... oznacza kod, który byłem zbyt leniwy, aby pisać, ale powinieneś być w stanie zrozumieć. Aby zrobić to naprawdę stylowo, wymagałby programu do generowania kodu. Granice 0 i 10 można zmienić na cokolwiek. Im większe limity, tym więcej kodu i komputer może z łatwością wypełnić ... s.
źródło
Lua
źródło
Kod jest gotowy. Bądź bardzo ostrożny. Ten kod jest bardzo złożony i prawdopodobnie ma skłonność do stania się inteligentną świadomą i samoświadomą istotą. Jest to ściśle tajny, ściśle tajny kod.
źródło
C ++
Oczywiście będziesz potrzebować magii szablonu :
źródło
JAWA
Trudny problem
Wiadomo, że w informatyce występują problemy, w których weryfikacja odpowiedzi jest łatwiejsza niż ich znalezienie. Powinieneś więc użyć losowego algorytmu do odgadnięcia rozwiązania, a następnie zweryfikować go (skutecznie!) I mieć nadzieję, że uzyskasz odpowiedni wynik w rozsądnym czasie:
źródło
Ta funkcja jest objęta patentem mojej firmy, mogę dostarczyć jej zaciemnioną licencjonowaną kopię:
JavaScript:
Stosowanie:
źródło
Pyton
Programowanie dotyczy tolerancji na uszkodzenia. Poniżej przedstawiono implementację sumy, która doda wszystko bez kłopotów. Przejrzyste posortuje elementy w kolejności, którą można dodać. W przypadku, gdy nie można go dodać, oznacza to go jako
NaN
.źródło
Fortran
Oczywiście najskuteczniejszym sposobem jest przesunięcie bitów. Można to łatwo zrobić za pomocą C + Fortran za pośrednictwem
iso_c_binding
modułu:gdzie jest procedura C.
Musisz najpierw skompilować kod C (np.
gcc -c mycfile.c
), A następnie skompilować kod Fortran (np.gfortran -c myf90file.f90
), A następnie uczynić plik wykonywalny (gfortran -o adding myf90file.o mycfile.o
).źródło