Wyzwanie polega na utworzeniu najkrótszego kodu w wybranym języku, który zapisuje w .txt
pliku najdłuższy kod do pomnożenia dwóch liczb, przyjmując dwie liczby jako dane wejściowe i wyjściowe .
ŻADNE WEJŚCIE NIE JEST POTRZEBNE DLA KODU, KTÓRY WYKONYWA PRACĘ !
Kod generatora i wygenerowany kod mogą być w dowolnym języku
NIE używaj nieograniczonej liczby serii lub progresji, aby plik tekstowy był duży.
NIE używaj niepotrzebnych instrukcji, aby zwiększyć wynik.
PUNKTACJA
( size of text file generated in bytes ) (without any unnecessary white spaces, tabs or newlines)
-----------------------------------------
( size of your code in bytes )
Zwycięzca
Zwycięzca zostanie wybrany po 1 tygodniu od teraz z najwyższym wynikiem .
EDYCJA: zakres danych wejściowych w kodzie mnożącym dwie liczby powinien zawierać się w przedziale od -32768 do 32767
code-challenge
Mukul Kumar
źródło
źródło
+
się*
w programie generującym on dostarcza, a prawdopodobnie już wiedzą o tym, ponieważ odpowiedział na to pytanie, jak również.Odpowiedzi:
perl / perl, nieograniczony wynik według oryginalnej reguły o nieograniczonym zasięgu
Oto kod, który nie wygrywa:
Dane wyjściowe mają następującą postać:
plik wyjściowy ma długość 181030 bajtów, ale po usunięciu spacji i znaków nowej linii ma tylko 133109 bajtów. więc wynik to 133109/248 = 536,7289 ...
Oto inny kod, który nie wygrywa - jest to ten sam program, z wyjątkiem pierwszych 2 linii:
plik wyjściowy ma długość 718138 bajtów, ale po usunięciu spacji i znaków nowej linii ma tylko 532233 bajtów. więc wynik to 532233/248 = ~ 2146. lepszy! użycie 7 daje wynik ~ 8750, 8 daje ~ 35347, 9 daje ~ 149129, 10 daje 151100000 non-space / 250 = 604,400 ....
oczywiście możemy to robić tak długo, jak chcemy. rozmiar programu źródłowego, n, wzrośnie jako O (log (n)). rozmiar programu wyjściowego to O (2 * n). Granica 2 * n / log (n), gdy n idzie do nieskończoności, jest wyraźnie nieskończonością, więc jeśli po prostu zastąpię moją ulubioną dużą liczbę, googolplex, wygrywam (dopóki ktoś nie zasugeruje googolplex + 1).
źródło
add
która przyjmuje dwa parametry. Następnie wypełnia tę funkcję wyglądającymi instrukcjami zwrotnymireturn 39 if ($i == 13) && ($j == 3);
, używając wszystkich wartości od$l
do$h
dla$i
i$j
. Inteligentne gięcie reguły „tylko niepotrzebne instrukcje”.C, 27297/245 = 111,4
Kod źródłowy (245 bajtów)
Po skompilowaniu i uruchomieniu z dwoma argumentami liczb całkowitych w wierszu poleceń, generuje to kolejny plik C zawierający kod niezbędny do obliczenia ich produktu i kompiluje go z
-E
flagą. Ta flaga określa, że kompilator powinien zatrzymać się po etapie przetwarzania wstępnego i wygenerować przetworzony kod źródłowy (który obejmie całą zawartośćstdio.h
istdlib.h
).Plik wyjściowy (27297 bajtów)
********* LINES 13-1273 OMITTED *********
Wynik uruchomienia kodu wyjściowego
Plik wyjściowy jest zapisywany jako
add.c
, który można skompilować i uruchomić normalnie:źródło
perl, 125 znaków, wynik 1630 326 497,312
To samo podstawowe podejście, co w mojej innej odpowiedzi, ale tym razem ograniczone do -32768 do 32767 zgodnie ze zaktualizowanymi regułami, a wszystkie niepotrzebne białe znaki zostały całkowicie usunięte:
Program wyjściowy zaczyna się tak:
i kończy:
Program wyjściowy ma długość 190 GB. Mówiąc dokładniej, 203790812164 bajtów. Wynik = 203790812164/125 = 1630326497.312
źródło
Skrypt poleceń systemu Windows: ~ 1 000 000 000 pkt
Kod: 158 bajtów
Wyjście: ~ 158000000000 bajtów
Dane wyjściowe składają się w większości z:
źródło