Zadanie:
Wiem, że wszyscy możemy dodać dwie liczby w krótkim czasie, używając +
. Twoim zadaniem jest stworzenie najdłuższego kodu, który można dodać do dwóch liczb wejściowych.
Zasady:
- Cały kod musi dotyczyć tematu (nie wypełniaj go kodem nie dodawanym, aby dodać długość)
- Liczba jest wyrażona w znakach, ale nie liczy tabulatorów, spacji ani znaków nowej linii.
- Nie używaj obcych długich nazw zmiennych
- To jest kręgle kodu , więc wygrywa najdłuższa odpowiedź!
number
code-bowling
Doktor
źródło
źródło
a + b - b + b...
liczy? Byłoby to nieskończonea + b/2
, a niea + b
(jest podobne do serii Grandi ).Odpowiedzi:
C ++ WIĘCEJ NIŻ 3x10 ^ + 618 (BEZ BIAŁYCH PRZESTRZEŃ, tabulatorów lub nowych linii)
Ten kod wymagał więcej matematyki niż logiki! w zliczaniu liczby bajtów
KRÓTKI KOD
WYDAJNOŚĆ
Naprawdę poważnie! chcesz zobaczyć wynik? napisanie tego kodu zajęłoby tygodnie, a miesiące skompilowanie!
źródło
x
luby
nie?C - 2 739 341,494,945,868,415,002 (bez białych spacji)
Brutalna siła dla zwycięstwa. Obsługuje tylko liczby całkowite i zachowuje zachowanie związane z przepełnieniem. Oto fragment kodu:
Jest to oczywiście zbyt duży sposób na przesłanie albo tutaj, albo na Pastebin, więc oto program, który wygeneruje kod źródłowy funkcji (przekieruj wyjście do pliku - zakładając, że masz miejsce na dysku):
Drżę na widok tego, jak długa byłaby funkcja długich tęsk ...
EDYCJA: Przelicz wynik (powinien być poprawny), aby podać dokładną liczbę. Wolę myśleć, że zagrałem w golfa o 10 m², kiedy usunąłem białe znaki.
źródło
else if
.LEFT_SIDE_NEG_2147483648 = -2147483648
) ... dobrą praktyką jest używanie nazw opisowych zamiast wartości zakodowanych na stałe , wiesz.C ++, 3573
3573, wtedy robiło się nudno, ale mogę nadal dodawać kolejne warstwy abstrakcji.
źródło
Ruby, 29048 (może być tak wysoki, jak to konieczne, ale musiałem uzyskać go poniżej limitu znaków dla postów)
A skąd mam ten ogromny sznurek, pytasz? Oto program, którego użyłem do jego wygenerowania:
Yay za „kompresję”! : P
Jak widać, ustawiłem limit długości łańcucha na 29000, co jest nieco poniżej limitu długości postów Stack Exchange, ale mogłem ustawić go tak wysoko, jak chciałem.
źródło
PHP - 1299
Reguły nie zabraniają korzystania z bibliotek zewnętrznych, więc oto kod używający SimplePHPEasyPlus :
źródło
C (via perl) - 170,141,183,381,241,069,554,076,045,499,751,727,125 (to 1,70141183381241e + 38) dla 32-bitowych wejść niepodpisanych
Moja filozofia jest taka, że wdrażając dodawanie od zera, nie jest mądrze polegać na wstępnie obliczonych kosztorysach, takich jak 2, 3, 7 lub 65535! 0 i 1 powinny być jedynymi stałymi, których potrzebujemy, prawda?
Dlatego nie obliczam żadnych stałych - obliczam je w locie, jak pokazano poniżej! Aby obsługiwać 8-bitowe liczby całkowite ze znakiem, potrzebujesz kodu źródłowego o długości 20 461 843 znaków niebiałych spacji. Aby zaimplementować 32-bitową liczbę całkowitą ze znakiem, potrzebujesz kodu źródłowego o długości 1,70141183381241e + 38 ;-)
Gotowy na mały fragment 8-bitowego podpisanego kodu liczb całkowitych? Tu masz:
Pamiętaj, że ten kod jest nieco golfowy - nie mówię np .:
Nie trzeba za każdym razem sprawdzać, czy x jest równe jeden, prawda? Więc mój kod jest znacznie bardziej wydajny † i zwięzły †, i zamiast tego robi to:
Mógłbym z pewnością rozszerzyć długość kodu, zmieniając metodę na mniej zwięzłą =)
A oto kod źródłowy, którego użyłem do wygenerowania tych potworności, ale uważaj - reprezentacja 24-bitowej liczby całkowitej w tym formacie (33 MB każdy) powoduje, że perl zjada ponad 1 GB pamięci na moim komputerze. Jeśli masz do dyspozycji ponad 512 GB pamięci, powinieneś być w stanie spróbować z 32-bitowymi liczbami całkowitymi =)
Uff, to wszystko =)
źródło
Java - 2406 (3220 z białymi znakami)
Wszyscy wiemy, że komputery dobrze radzą sobie z bitami i nie są tak dobre we wszystkim innym. Dlatego mój program wykonuje dodawanie przy użyciu wydajnego dodawania bitowego!
źródło
Java -
309731759Nie najdłuższy, ale może być najbardziej prawdopodobną błędną interpretacją.
edytuj: Ups, właśnie zauważyłem, że to nie trollowanie kodu .
źródło
for
pętla, która by powiedziała „powiel to we wszystkich bitach magistrali wejściowych”. (Wyobraź sobie język ze składnią proceduralną i działaniem funkcjonalnym ... gdzie głównym narzędziem do edycji było wysoce proceduralne przedstawienie jako schematy blokowe ... co mogę powiedzieć, to był wczesny wysiłek.)Python 2.7 (dodając dobry sposób)
kredyt trafia do https://stackoverflow.com/questions/366706/bitwise-subtraction-in-python
źródło
raw_input()
. Mówiłem PO, że dobrą praktyką jest określenie języka.źródło
C # - 5395
Pozwala emitować kod cil do dodania przy użyciu metody dynamicznej. Właściwie emituję kod, który z kolei emituje kod w celu wywołania dodania liczby całkowitej. Poniższa funkcja
Add()
buduje metodę dynamiczną, która po uruchomieniu tworzy metodę dynamiczną do wywoływania dodawania liczb całkowitych.źródło
{System.SystemException}: {"JIT Compiler encountered an internal limitation."}
Powiedz, że chcesz, aby kod był dłuższy niż n znaków. Poniższy kod jest znacznie dłuższy.
źródło
do
Nie działa dobrze w przypadku dużych liczb, ale można to zastąpić
źródło