Napisz program, który pozornie dodaje cyfry 2 i 2 i wyświetla dane wyjściowe 5. Jest to zawiły zawód.
Twój program nie może wygenerować żadnych błędów. Uważaj na dziury w pamięci! Wejście jest opcjonalne.
Ponowne zdefiniowanie 2 + 2 jako 5 nie jest zbyt kreatywne! Nie myśl o tym podwójnie, spróbuj czegoś innego.
echo "2+2=5";
Odpowiedzi:
Jawa
Refleksja jest rzeczywiście właściwym sposobem na nadużywanie Javy ... ale musisz sięgnąć głębiej niż tylko ulepszyć niektóre wartości.
Wynik:
Wyjaśnienie:
Ostrzeżenie: wykonanie tego w prawdziwym kodzie sprawi, że ludzie będą bardzo niezadowoleni.
Demo kodu na ideone .
źródło
Integer[] array = (Integer[]) c.get(cache); fisherYatesShuffle(array);
Wyobraź sobie, ile rzeczy by sięHaskell
Uwielbiam, jak możesz rzucać cokolwiek w ghci i to całkowicie się z nim toczy.
źródło
let 2+2=5 in 5+5
zrobić? ಠ_ಠNon-exhaustive patterns in function +
- Definiuję tutaj nową funkcję (+), a jeśli podłączę coś, co nie2+2
jest, spowoduje to błąd, ponieważ nigdy nie określiłem, co powinno się w takim przypadku zdarzyć.do
Całkiem tania sztuczka, ale jestem pewien, że złapię większość z was.
Wypróbuj tutaj
źródło
GolfScript
Wydruki
5
.źródło
Jawa
Zawsze musicie zaokrąglać swoje dwójki, ludzie
Wynik:
Wyjaśnienie:
źródło
Math.ceil(two + two); // round just in case
Widzę, co tam zrobiłeśtwo
. Java klasy produkcyjnej toTwo two = Two.two.two();
Two.two jest typu TwoFactory.BBC BASIC
EDYCJA: Dla Andrei Faulds i Squeamish Ossifrage, bardziej przekonująca wersja z użyciem innego tłumacza: http://sourceforge.net/projects/napoleonbrandy/
Oryginalny obraz przy użyciu emulatora pod adresem http://bbcbasic.co.uk/bbcwin/bbcwin.html . (z nieco innym kodem) można zobaczyć w historii edycji.
źródło
2+3=5
i2+2=5'
VDU 23,52,126,96,124,6,6,102,60,0
Brainfuck
Wynik:
Wypróbuj tutaj .
Wiem, że może to zabrzmieć trochę zbyt prosto, ale starałem się być kreatywny, jak sugerowano w oryginalnym poście.
źródło
+++++.
, możesz pomalować wszystko.Grzmotnąć
Ponieważ jest to konkurs popularności , powinienem użyć długiej metody ...
Dla osób, które nie znają Bash:
$((...expr...))
to składnia do oceny wyrażeń arytmetycznych.$(bc<<<...expr...)
robi to samo, używającbc
kalkulatora wiersza poleceń.Wynik
Wyjaśnienie
źródło
15
zamiast16
w wierszu 4. Na szczęście nadal działało z powodubc
zaokrąglenia((v = v * 5))
lub((v *= 5))
+=
natychmiast to zauważyłem .v=2
iv+=2
): do kogoś, kto nie zna obsługi zmiennych Bash, byłoby to równoważne2+2
, ale tak naprawdę jest"2"+"2"
, tj"22"
. pozostałe komentarze w kodzie są błędne tylko z tego powodu. Wiem, że nie wszyscyPyton
Zainspirowany odpowiedzią Java:
Bardziej zaciemniona wersja
Powyżej 2 + 2
Jak wspomniano OP, 2 + 2 może być trochę nudne; oto więc czystszy, wieloplatformowy kod o wielu szerokościach do nadużyć.
Działa z Python 2.7 ... zignoruj tę linię na końcu. Działa w systemie Windows 64-bit i Ubuntu 32-bit, dwa systemy, do których mam łatwy dostęp.
Nic dziwnego, że możemy przełamać asocjacyjną właściwość dodawania, gdzie ( a + b ) + c = a + ( b + c ), jak widać w pierwszej i drugiej
1+2+3
linii, ale w niewytłumaczalny sposób również przełamujemy właściwość przemienną (gdzie a + b = b + a ; 2. i 3. linia). Zastanawiam się, czy interpreter Pythona po prostu ignoruje zbędne nawiasy wokół wyrażeń dodawania.źródło
exec('\x66\x72\x6f\x6d\x20\x63\x74\x79\ \x70\x65\x73\x20\x69\x6d\x70\x6f\ \x72\x74\x20\x63\x5f\x69\x6e\x74\ \x38\x3b\x20\x69\x6d\x70\x6f\x72\ \x74\x20\x73\x74\x72\x75\x63\x74\ \x3b\x20\x63\x5f\x69\x6e\x74\x38\ \x2e\x66\x72\x6f\x6d\x5f\x61\x64\ \x64\x72\x65\x73\x73\x28\x69\x64\ \x28\x34\x29\x20\x2b\x20\x73\x74\ \x72\x75\x63\x74\x2e\x63\x61\x6c\ \x63\x73\x69\x7a\x65\x28\x27\x50\ \x50\x27\x29\x29\x2e\x76\x61\x6c\ \x75\x65\x3d\x35')
Jest zmodyfikowaną pierwszą wersją. Zrobiłem to, aby móc umieścić go w $ PYTHONSTARTUP w / etc / profile jako czerwony zespół w konkursach hakerskich.JavaScript:
Sprawdź to na http://jsfiddle.net/qhRJY/
źródło
JavaScript
Możesz to zobaczyć na innym kalkulatorze tutaj .
źródło
PHP
Który produkuje:
źródło
PHP
przykład:$a=2;echo "2+2=".$a++ + $a++;
JavaScript
źródło
=
zamiast==
, łatwy do zobaczenia i szczerze mówiąc raczej nieinspirowany.=
tylko jako przydziału, ale operator porównania (np. Pascal, SQL, VB)DO#
źródło
;
potem, co było całkowicie celowe, ponieważ używałem pustej pętli do przesuwania kursora. Przez przypadek usunąłem średnik, wszystko wybuchło i nie mogłem zrozumieć, dlaczego.Dekorowanie kodu JavaScript w sztuce ASCII jest niebezpieczne.
źródło
--
operator był do zaakceptowania, ponieważ powinien się pomylićInvalid left-hand side expression in prefix operation
; zdałem sobie jednak sprawę, że między nimi jest spacja.Grzmotnąć
Wynik:
Oto kolejna:
źródło
set a to {1, 2, 3, 4, 5, 6, 7, 8}
item 4 of a
zsh
używa tablic 1-indeksowanych (i$arr[0]
jest po prostu nieuzbrojony, niezdefiniowany lub coś takiego), chyba żeKSH_ARRAYS
ustawiono opcję, w którym to przypadku tablice są indeksowane 0.Perl
źródło
R
wynik:
5
źródło
Jawa
wynik:
Prawdopodobnie działa w każdym języku, który używa tego samego rodzaju podwójnych.
źródło
_2_56 + _2_56 = _5_12
), ale wydaje się bardziej prawdopodobne, że masz na myśli256.000000000000_2_ + 256.000000000000_2_ = 512.000000000000_5_
(uwaga: podkreślenia były używane do „pogrubienia” cyfr.Befunge
Jest to napisane w Befunge, ale ma wyglądać jak Python.
Po uruchomieniu (z poprawnym tłumaczem) program wydrukuje
5
.Wyjaśnienie:
źródło
JavaScript
Kod:
Wynik:
Możesz to przetestować samodzielnie na konsoli lub sprawdzić to skrzypce
źródło
U+0431
to б - prawie 6!C (Linux, gcc 4.7.3)
Drukuje 2 + 2 = 5
Więc a = 2, prawda?
źródło
FORTRAN 77
źródło
2=3
Pyton
Kod drukuje 5, co jest poprawną odpowiedzią na to zadanie.
Edycja: Oto alternatywna wersja, która dodaje liczby całkowite, a nie dwójkowe.
źródło
~eval(`a`)
zamiast tylko~a
?int()
funkcjonalności ieval()
wykonuje to zadanie, jeśli wejście jest liczbą całkowitą striczoną :)Rubin
Skutki uboczne tego są jeszcze gorsze niż wersja Java.
źródło
Rubin
Ruby ma środowiska najwyższej klasy. Oznacza to wiele rzeczy. Oznacza to również, że można zrobić wiele rzeczy, które ... może nie powinny.
Wynikiem tego jest:
Jeśli chcesz dowiedzieć się więcej na temat radości i niebezpieczeństw związanych z tym, Ruby Conf 2011 Utrzymanie Ruby Rozsądne i przeczytaj pierwszorzędne środowiska z bloga Abstract Heresies.
źródło
class Fixnum; def +(n) 5 end end; 2 + 2 # => 5
class Fixnum; alias_method :orig_plus, :+; protected :orig_plus; def +(n) self == 2 && n == 2 ? 5 : self.orig_plus(n) end end
Schemat
źródło
2+2
to nie jest sposób dodawania w seplenieniu!((((2))(()()))()()(()((((+))))()(((()(())((((2)))))()))(())))
.DO#
Dla kogoś, kto nie jest zaznajomiony, będzie to wyglądać tak, że otrzymuję zakres zaczynający się i kończący na 2. W rzeczywistości zaczyna się od 2 i obejmuje dwie liczby. Więc 2 + 3 = 5.
źródło
{ 2 }
, prawda?Enumerable.Range
nie bierze początku i końca, wymaga początku i liczby (elementów, które zostaną wyliczone).FA#
Wstawmy fsi następujące oświadczenie:
Wynik:
źródło
do
5
Nie jest zbyt dobrze ukryte, obawiam się. Nie działa z optymalizacją.źródło