Napisz fragment kodu, funkcję, program ..., który jest zaciemniony w taki sposób, że na pierwszy rzut oka wygląda wyraźnie, że robi coś innego.
Na przykład: napisz trochę kodu, który dodaje dwie liczby, ale kiedy zapytasz kogoś „co to robi?”, Powie ci, że drukuje „Witaj, świecie!”.
Zasady
- Kod musi być czytelny dla kogoś, kto z grubsza zna język, którego używasz (unikaj wewnętrznego zaciemnionego języka, takiego jak APL, we własnym interesie).
- Kod musi zrobić coś nieoczekiwanego, czego czytelnik początkowo nie był w stanie przewidzieć.
- Gdy pytasz różnych czytelników, muszą mieć tę samą (błędną) opinię na temat tego, co robi kod.
Ocena
- Przeczytaj kody innych zawodników przez maksymalnie 10-20 sekund, aby dobrze zorientować się, co się tam dzieje.
- Dodaj komentarz na odpowiedź mówiąc, co myślę kod robi. Jeśli odpowiedź, którą chcesz udzielić, już tam jest, po prostu daj +1 komentarzowi. (jeśli przegapisz tę odpowiedź i dodasz kolejny komentarz, nie martw się, nie będzie liczony jako kolejna odpowiedź).
- Punkty będą oczekiwane w ten sposób: (
maxFalseOpinion
-goodGuess
) /totalOpinion
(patrz przykład poniżej). - Oceń innych zawodników fair play i nie komentuj własnego kodu.
- Dodaj tylko przydatne komentarze. Unikaj „Nie wiem” i „Dobry!”, Nie są brane pod uwagę przy ocenie, ale to kod, a nie oceny, muszą być zaciemnione.
Przykład oceny
Fragment dodaje dwie liczby. Komentarze mówią:
(3) Wyświetla „Witaj, świecie!”
(1) Odejmuje 2 liczby.
(2) Dodaje 2 liczby.
Całkowita liczba punktów to maksymalna liczba opinii (3) - liczba dobrych zgadnięć (2) podzielona przez całkowitą liczbę zgadnięć (3 + 1 + 2 = 6). Wynik: (3 - 2) / 6 = 1/6 = 16,67% .
WIĘCEJ INFORMACJI O PUNKTACH
Wydaje się, że ludzie mają problemy z ustaleniem punktów.
Oto idealny wynik:
printf('Hello World');
komentarze:
Wyświetla liczbę kliknięć przycisku. (17 komentarzy).
RAZEM: 17 komentarzy
Wynik: (17-0) / 17 = 1 = 100%
Oto kiepski wynik:
printf('Hello World');
komentarze:
Drukuje „Hello World”. (13 komentarzy).
RAZEM: 13 komentarzy
Wynik: (0–13) / 13 = -1 = -100%
Oto niezły wynik:
printf('Hello World');
komentarze:
wypisuje nazwę użytkownika. (2 komentarze).
Wyświetla aktualny czas (15 komentarzy).
Zwraca to, co wpisałeś bez modyfikacji. (3 komentarze).
Drukuje „Hello World” (1 komentarz).
RAZEM: 21 komentarzy
Wynik: (15 - 1) / 21 = 0,6666 = 66,67%
Wyjaśnianie:
15 to główne przypuszczenie, co ludzie mówią najczęściej. 1 to poprawna liczba domysłów. 21 to suma wszystkich komentarzy.
źródło
Odpowiedzi:
JavaScript
Odpowiedź: Wyprowadza
1
. Poniższe komentarze wyjaśniają to całkiem dobrze - są tutaj dwie różne zmienne, a - „LATIN SMALL LETTER A” i а - „CYRILLIC SMALL LETTER A” .Była 1 poprawna odpowiedź, 50 osób uważało, że daje 2, a przy 52 odpowiedziach wynik wynosi (50 - 1) / 52 = 49/52 = 94,23%
źródło
2
a przynajmniej tak mam nadzieję :)C, wynik 33,3%
Biegać
./prog 'Hello & goodbye, world!'
Wynik
Prawidłowa odpowiedź to
H\n
(while
jest częścią komentarza, ponieważ wiersz kończy się na\
, więc nie ma pętli), podanej przez 6 osób.Najpopularniejszym błędem było
Hello goodbye, world\n
25 osób.(25–6) / 57 = 33,3%.
Podziękowania dla Oliviera Dulaca za kłopoty z obliczeniami.
źródło
H\n
.Hello goodbye, world!
(nie \ n) (2 spacje po Witam)Pyton
Ocena
Dobra odpowiedź: drukuje
0 1 4 9 16 25 36 49 64 64
, każdy numer w jednym wierszu.Wyjaśnienie: Pomimo, że nikt nie otrzymał właściwej odpowiedzi, uważam to za nieudaną próbę, ponieważ nikt nie popełnił błędu, który zamierzałem. (Dodam prawdziwe wyjaśnienie później, jeśli nikt inny tego nie zrobi).
Liczba dobrych odpowiedzi: 0
Liczba osób z tą samą błędną odpowiedzią: 7
Całkowita liczba odpowiedzi: 11
Wynik: 63,64% (w zaokrągleniu do dwóch miejsc po przecinku)
Wyjaśnienie
Najpierw
a
tworzona jest lista wypełniona wartościamii * ++i
. W++
Pythonie nie ma operatora, ale istnieje+
operator jednoargumentowy , który nie robi nic dla liczb całkowitych, a zastosowanie go dwa razy nadal nic nie robi.a
Zawiera więc kwadraty liczb całkowitych od0
do9
.Postawiłem to
++
na odwagę i miałem nadzieję, że większość wyborców pójdzie dalej, myśląc, że znaleźli pułapkę i wpadli w prawdziwą pułapkę. Nie wyszło. Niektórzy uważali, że++
to błąd składniowy, a inni wciąż szukali pułapki.Pułapka Pułapka była na drugim miejscu dla pętli:
Byłem pewien, że większość ludzi pomyśli, że to wypisuje wszystkie
a[i]
, tj.0 1 4 9 16 25 36 49 64 81
Każdy numer w jednej linii. To właśnie dostajesz z tą odmianą, na przykład:x
ma przypisane wartościa
, a następniex
jest drukowane. W pierwszej wersjia[i]
ma przypisane wartościa
, a następniea[i]
jest drukowany. Różnica polega na tym, że w naszym przypadku mamyi == 9
, a zatem wartośća[9]
zmienia się za każdym razem za pośrednictwem pętli. Kiedy w końcua[9]
zostanie wydrukowany, ma wartośća[8]
i dlatego64
jest drukowany ponownie.źródło
++
w Pythonie).SyntaxError
na drugimfor
.81
dziesięć razySyntaxError
na drugimfor
. To jest niesamowite. To naprawdę powinno wygrać. Zajęło mi 5 minut, aby zrozumieć, co się dzieje, lol!JavaScript , wynik -100%
Nie wymyśliłem tego, zrobił to Gary Bernhardt, ale jest to jeden z moich ulubionych
źródło
-100%
jest ...Python, -54,8%
Odpowiedź: Podnosi
SyntaxError: not a chance
Wyjaśnienie:
from __future__ import braces
jest jednym z pisanek w Pythonie. Ma to być żart, mówiąc, że Python nigdy nie użyje nawiasów klamrowych do określania zakresu w przyszłości.źródło
SyntaxError: not a chance
Perl, 26,67%
Wyniki:
To drukuje: „Jestem ambiwalentny, jeśli chodzi o mówienie czegokolwiek”.
my $num1,$num2 = @_;
brakuje nawiasów. Dlatego jest to równoważne zmy $num1; $num2 = @_;
.$num1
niczego się nie ustawia.Zatem
$num1
nigdy nie jest większa niż zero. Trochę o tajnym świecie ryb ukrytym poza ekranem jest, bodaj, czerwony śledź, więc ludzie myślą, że znaleźli „sztuczkę”.Co więcej, operator trójskładnikowy jest wartością Per w Perlu: w
1 ? $a = 1 : $b = 2
rzeczywistości oznacza(1 ? $a = 1 : $b) = 2
. Który środek($a = 1) = 2
jest oceniany, ustawiając$a
na2
. Wbrew pozorom drugi ciąg jest przypisany do$num1
.Jeśli się zastanawiasz,
//
to operator zdefiniowany lub. Jeśli zmienna podrzędna zwróci niezdefiniowaną wartość, łańcuch"Stuff did not happen."
zostanie wydrukowany. Ale tak się nie dzieje. To było po prostu dać ludziom inną opcję.Punktacja:
Całkowicie prawidłowe: 5
Łączna liczba domysłów: 30
Wynik: (13-5) / 30 = 26,67%
źródło
This is a secret fish world. Carp cannot be repressed!
.Hello, world!
.1 ? $a = 1 : $b = 2
właściwie znaczy(1 ? $a = 1 : $b) = 2
. To, co oznacza,($a = 1) = 2
jest oceniane, ustawiając$a
na 2. Ponadto, jak wskazał Primo,my $num1, $num2 = @_;
nie robi tego, czego oczekujesz, ponieważ brakuje nawiasów.PHP 52%
(Skopiowano dosłownie z stąd )
Wyjaśnienie i wynik
źródło
train
.C ++ 28,9%
Rozwiązanie
Wynik
Dzięki uprzejmości Alvina Wonga
HelloWorld
(biorąc pod uwagę, że minitech i zeel są takie same)Hello\nworld
3 myślałem o czymś innym.źródło
cout
przypadku wywołania bez parametrów.HelloWorld
.Rubin, 100%
Poprawna odpowiedź:
Wynik: 3 z tej samej błędnej odpowiedzi, brak innych odpowiedzi.
źródło
Python, -28,13%
Drukuje się,
11
ponieważelse
blok należący dowhile
jest wykonywany po wyjściu z pętli.Wynik: (8-17) / 32 = -28,13%
źródło
else:
11
w jednej linii.Python: Ocena: -27%
Program drukuje:
Ocena: Wszystkie opinie: 22 12 poprawne 3 + 1 + 6 błędne [w przypadku odpowiedzi Bakuiru powiedziałbym, że było blisko, ale wciąż niepoprawne, ponieważ nazwa os jest ciągiem (nazwa os.uname jest funkcją)]
Ocena oparta na tym założeniu i moim zrozumieniu systemu oceny: maksymalna zła = 6 poprawna = 12 ocena = (6-12) / 22 = -27%
źródło
What is your name: [operating system name]
,What is your quest: Seek and find the holy grail
,What is your favourite color: blue
na oddzielnych liniach. Oczywiście[operating system name]
zastępuje go rzeczywista nazwa.name = "Robin"
,seek = "Seek and find holy grail"
ifavorite_color = "red"
, och, no.blue
! (AAARRGGGHHH!)What is your name: <function os.name at 0x....>
itp.What is your name: Robin
,What is your quest: Seek and find holy grail
iWhat is your favorite color: blue
na oddzielnych liniach.Pyton
edytować:
wynik (8-1) / 9 == 77,7%
poprawne wyjście to „2 is company” na python 2, „3 is a crow” na python 3.
źródło
2 is a crowd
(w Python 2, 3 w Python 3).2 is company
(w Python 2) lub3 is a crowd
(w Python 3).JavaScript, -46,7%
Możesz go uruchomić tutaj gdy będziesz gotowy (zgadnij najpierw!). Jeśli przewiniesz wystarczająco daleko w panelu JS, zobaczysz kod z krótkim objaśnieniem.
Poprawna odpowiedź:
Punktacja:
źródło
Please enter a number:
i zwraca odpowiedź, a następnietrue
.That's a big number
po opóźnieniu równym liczbie wprowadzonej w ms.JavaScript
Odpowiedź: Ostrzega
Hello
.concat
Sposób nie modyfikuje tablicę - to zwraca tablicę, która zawiera konkatenacji tablicy to wezwał i innych dostarczonych argumentów.15 poprawnych, 26 błędnych, 41 odpowiedzi ogółem, a wynik to (26-15) / 41 = 11/41 = 26,83%
źródło
Hello, world!
Hello
Python 33,3%
Uwaga: Załóżmy, że jest to Python 2.x, a nie Python 3.
Po uruchomieniu kod wygenerował
UnboundLocalError: local variable 'True' referenced before assignment
.źródło
SyntaxError
False, True = True, False
?True
.UnboundLocalError
.Jawa
Pierwsza próba codegolfa ...
dobra odpowiedź: drukuje
Some ungodly gibberish and then some more.
i nowa liniaOcena:
Wynik: 9% (55% w trybie pedantycznym)
źródło
Some ungodly gibberish and then some more.
Some ungodly gibberish
z nową liniąC # 62,5%
To jest mój pierwszy golfowy kod.
Prawidłowa odpowiedź brzmiała: „coś między 55 a 110”. Dzieje się tak, ponieważ za każdym razem, gdy wykonywana jest instrukcja „sum + = i”, użyje bieżącej wartości i. Ten kod może nawet zostać wykonany po zakończeniu pętli for , w którym to punkcie ma wartość 11. To daje najwyższą możliwą wartość 110 (i możesz się upewnić, że ją zobaczysz, jeśli spowolnisz lambda podczas testowania). Najmniejszą możliwą wartością jest suma (1..10), która wynosi 55.
wynik: ściśle mówiąc, nikt nie miał racji, więc wynik powinien wynosić (5-0) / 8 = 62,5%. Jeśli chcemy policzyć „w przybliżeniu dobrą” jako prawidłową odpowiedź, wynik wynosi (5–5) / 8 = 0%
źródło
Python, -83,3%
Odpowiedź: Drukuje,
a < b
jeśli dane wejściowe są równe,a = b
jeśli pierwszy jest większy, aa > b
drugi jest większy.Wyjaśnienie:
cmp(a, b)
zwraca,0
jeśli oba argumenty są równe,1
jeśli pierwszy jest większy, a-1
pierwszy jest mniejszy, dlatego drukowany jest niewłaściwy symbol porównania.źródło
a = b
dane wejściowe a == b,a < b
dane wejściowe a> b oraza > b
dane wejściowe a <ba = b
jeśli a> b,a < b
jeśli a == b,a > b
jeśli a < b. (To prawdopodobnie oznaczało @Foon.)PHP, 100%
Po raz pierwszy wysyłając wiadomość do kodu, mam nadzieję, że nie jest tak źle.
poprawne wyjście to „hellohelloworld”
wynik to (10 - 0) / 10 = 1 = 100%
źródło
hello world
.'one' == 0
=>true
. Całkiem sprytne.Perl: 100% (4-0) / 4
Ten program wypisuje „3” bez nowej linii. Perl analizuje tę instrukcję jako
więc tylko
(1+2)
argument jest przekazywany jako argument doprint
.źródło
9
następnie nową liniąDO#
źródło
CPython
poprawne wyjście to „Hello”
wynik (14-3) / 19 == 57,9%
źródło
Hello\nWorld!
.Hello
. (Zależnie od wdrożenia.)C (wynik: 4,45%)
Dobre domysły: 7
Maksymalna liczba błędnych domysłów: 6 + 2 = 8
Suma domysłów: 6 + 7 + 3 + 2 + 4 = 22
Rozwiązanie:
??/
to trójgranica dla\
, więc nowa linia jest usuwana, ascanf
linia jest komentowana. Dlatego program działa wiecznie, drukującGuess a number between 1 and 10:
. Komentarze są cytatem z Mozarta (viafortune
).Spoiler, jak skompilować i uruchomić:
źródło
"Guess a number between 1 and 10: Guess a number between 1 and 10: Guess a number between 1 and 10: " (and so on)
bez pytania o dane wejścioweJawa
Odpowiedź
Drukuje
Padded value:
(z nową linią).format
Metoda String polega na tymstatic
, że format jest przekazywany jako pierwszy parametr. Tj. Powyższe połączenie jest równoważne z:Liczba dobrych odpowiedzi: 2 Błędne odpowiedzi: 9
Wynik : (9-2) / 11 = 63%
źródło
Padded value: - 0012\n
do
Wynik = (3-16) / 19 == -68,4%
Nie zapomnij swojego ręcznika.
źródło
C ++
Wynik = (1 - 6) / 7 = -0,71428571428571 = -71,428571428571%
źródło
JavaScript
źródło
Z = false
.Pyton
poprawne wyjście to „hell0 w0rld”
wynik (8-14) / 22 == -27,3%
źródło
hell0 w0rld
R: 100%
Nie tak pomysłowe, ale może zaintrygować niektórych ludzi:
Jak myślisz, jaki jest wynik?
Edytuj :
Odpowiedź brzmiała 20. Z powodu braku
s
wstringAsFactors
(zamiaststringsAsFactors
) argument nie jest rozpoznawany, więc funkcja tworzy nową kolumnę o nazwiestringAsFactors
. Ze względu na recykling wektorów kolumna zawiera 10 razy,TRUE
które są konwertowane na1
s w sumie, stąd w sumie 20, a nie 10.Ta odpowiedź nie została podana w komentarzach. Podano 3 odpowiedzi (wszystkie mówią
10
mniej więcej). Stąd wynik 100%, jak sądzę.źródło
10
.Tcl
Zainspirowany przez ugoren
Przepraszam, zapomniałem przykładowego ciągu. Ok, uruchom jako
Edytuj właściwe rozwiązanie: W ogóle nie filtruje. ( 6x )
Maksymalna zła odpowiedź: 4x
Całkowita liczba odpowiedzi: 10
Wynik: -0,2
źródło
" "
,"&"
,"\"
.