Utwórz najkrótszą możliwą zaciemnioną implementację FizzBuzz.
Aby uznać ją za zaciemnioną, powinna spełniać co najmniej jedno z poniższych:
- Nie zawiera słów „Fizz”, „Buzz” ani „FizzBuzz”
- Nie zawiera liczb 3, 5 ani 15.
- Użyj któregokolwiek z powyższych w sposób wprowadzający w błąd.
Pamiętaj: celem jest bycie krótkim i trudnym do naśladowania.
Przykładowy kod, który zainspirował to pytanie:
public class Default
{
enum FizzBuzz
{
Buzz = 1,
Fizz,
FizzBuzz
}
public static void Main(string[] args)
{
byte[] foo =
Convert.FromBase64String("IAmGMEiCIQySYAiDJBjCIAmGMEiCIQySYA==");
MemoryStream ms = new MemoryStream(foo);
byte[] myByte = new byte[1];
do
{
FizzBuzz fb;
ms.Read(myByte, 0, 1);
for (int i = 0; i < 4; i++)
{
fb = (FizzBuzz)(myByte[0] >> (2 * i)
& (int)FizzBuzz.FizzBuzz);
Console.Out.WriteLine( (((int)fb > 0) ? "" + fb : ""
+ ((ms.Position - 1) * 4 + i + 1)));
}
} while (ms.Position < ms.Length);
}
}
code-golf
obfuscation
restricted-source
mootinator
źródło
źródło
Odpowiedzi:
GolfScript,
7569656059 znakówMożna by pomyśleć, że sam GolfScript jest już zaciemniony, prawda? Cóż, po prostu podążając za specyfikacją, zdecydowałem, że program nie będzie zawierał „fizz”, „buzz”, ani liczb 3, 5, ani 15. :-)
Tak, istnieją pewne liczby o wielokrotnościach 5, takie jak 25, 35, 90, 100 i 6875. Czy są to czerwone śledzie? Ty decydujesz. ;-)
źródło
JavaScript 97 znaków - w ogóle żadnych liczb
Liczby ? Kto potrzebuje numeru, gdy masz Javascript!
Uwaga: Istnieje nieskończona pętla, która ostrzega o sekwencji.
Bonus (666 znaków)
(zfor
zostało użyte tylko w całym skrypcie).
źródło
z
.+!![]
jest taki sam1
i({}+"")[5]
jest taki sam jakc
) oraz nadużywanie notacji tablicowej w celu uzyskania dostępu do metody (np .:window['eval'](
jest taki sameval(
).Python - 78 znaków
źródło
PostScript, 96 bajtów
Więc zaciemnione wygląda na przypadkowe śmieci.
Stosowanie:
$ gs -q -dNODISPLAY -dNOPROMPT file.ps
źródło
C ++: 886 znaków
Próbowałem ukryć „szum” i „szum”. Widzisz ich?
źródło
DC (
256255bajtów)Oto on, próbowałem (raczej skutecznie, jeśli sam mogę to powiedzieć) ukryć cokolwiek oprócz listów i
+-[];:=
(które są niezbędne i niemożliwe do zaciemnienia). Robi się segfault po osiągnięciu około 8482 na moim komputerze, ale ma to związek z problemami stosu związanymi ze sposobem realizacji rekurencji. Rozwiązanie samo jest prawdziwe. 255 bajtów, jeśli usuniesz spację (w celu ułatwienia odczytu). Ciesz się:źródło
To było trochę trudne do osadzenia za pomocą wcięcia, więc sedno:
Ruby, 4312 znaków
https://gist.github.com/dzucconi/1f88a6dffa2f145f370f
źródło
Brainfuck -
626656Zaczyna od 1 do 255
źródło
Brainfuck, 708 znaków
Opis tego, jak to działa, jest dostępny w moim pytaniu dotyczącym recenzji kodu
źródło
Haskell -
147142138 znakówKod jest o 19 znaków dłuższy, niż powinien, ale myślałem, że estetyka była tego warta! Uważam, że wszystkie trzy „cele” są spełnione.
źródło
zZ' is applied to six arguments, but its type
(a0 -> b0 -> c0) -> [a0] -> [b0] -> [c0] 'ma tylko trzy["1","2","3","4","5","6"...]
.bu
,fi
,zz
izZ
. Można je skrócić do nazw zawierających jedną literę.𝔼𝕊𝕄𝕚𝕟, 33 znaki / 92 bajty (niekonkurencyjne)
Try it here (Firefox only).
Ten język jest zbyt OP dla ograniczonych źródeł.
źródło
JavaScript, 469 bajtów
To była chyba najlepsza zabawa, jaką kiedykolwiek miałem.
Wypróbuj tutaj
źródło
Rubin - 165 znaków
To była moja pierwsza próba golfa kodowego. Dobrze się bawiłem. =)
źródło
Perl 6 (52 bajty)
Pozwól mi wyjaśnić tutaj. To najgorsze nadużycie zasady, jakie popełniłem w takim zadaniu. Wiem, co mówisz - jest oczywiste
Fizz
iBuzz
tutaj. Ale spójrzmy na zasady.W ten sposób unika
3
,5
i15
. Dlatego jest to ważne i bardzo krótkie rozwiązanie.źródło
Scala, 295 znaków
źródło
C (
237209 znaków)Chociaż nie jestem pewien, czy jest to zgodne ze standardem C :)
Jednak to działa. To znaczy w systemie Linux za pomocą GCC.
źródło
Python 3-338
To jest mój pierwszy golf. Nie najkrótszy, ale jest dość brzydki! Żadna z niedozwolonych liczb lub literałów łańcuchowych. Firp, Burp!
źródło
Python - 157
Nie do końca najkrótszy, ale mam nadzieję, że czytelnik doceni czysty funkcjonalny styl i możliwość rozszerzenia na dowolnie długie rachunki.
źródło
K, 155
Mógłbym trochę zagrać w golfa, ale wolałbym, żeby był bardziej zaciemniony.
źródło
Python 2 - 54 znaków
Python 3 - 56 znaków
Jeśli nie chcesz, aby pojawiał się „FizzBuzz”:
Python 2 - 58 znaków
Python 3 - 60 znaków
Lub jak pokonać GolfScript za pomocą Pythona;)
źródło
i=0
oznacza to, żewhile
pętla nigdy nie jest wprowadzana.i<20
.JavaScript 111 znaków - bez kluczowych numerów
a=b=c=0;while(a++<99)document.write((b>1?(b=0,"Fizz"):(b++,""))+(c==4?(c=0,"Buzz"):(c++,""))+(b*c?a:"")+"<br>")
źródło
C # - 218 znaków
Mógłbym zostać skrócony, gdybym wprowadził inne liczby takie: (łącznie 210 znaków)
Postanowiłem usunąć oczywiste słowo „musować” i „bzyczeć” i wybrać nieco więcej zaciemnienia. Drugi jest krótszy niż pierwszy, ale jest nieco bardziej bezpośredni w stosunku do tego, co dzieje się w dodatku.
źródło
To nie jest dokładnie gra w golfa, ma około 120 linii.
Pomyślałem, że zrobię coś, co wykorzysta cały zabawny potencjał nieokreślonego zachowania dzięki zarządzaniu pamięcią C ++.
źródło
Rubin - 89 znaków
Nie mogę uwierzyć w ten błyskotliwość, ale nie mogłem zostawić tego pytania bez mojej ulubionej zaciemnionej implementacji :)
Powyższe wdrożenie zostało napisane przez Davida Brady'ego i pochodzi z rubinowego klejnotu fizzbuzz . Oto wyjaśnienie z kodu źródłowego:
Rubin - 87 znaków
Oto inna wersja, która używa krótszego ziarna, ale tabela odnośników jest w innej kolejności. Oto wyjaśnienie z kodu źródłowego:
źródło
Python, 1 linia, 376 znaków
pep8-E501 zignorowano. Działa tylko w python3.
źródło
Alternatywny Rubin (126 znaków)
Krótkie i niejasne, tak jak lubimy. 3 i 5 są w rzeczywistości, ale nie jako literały całkowite, więc myślę, że to wciąż się liczy.
Zauważ, że jest to najkrótsza wersja Rubiego bez dosłownego „Fizz”, „Buzz”, „FizzBuzz”.
źródło
Squeak (4.4) Smalltalk 206 bajtów
Lub ten sam algorytm z mniej wyraźnymi komunikatami, taką samą liczbą znaków
Przepraszam Alana Kay za to, co zrobiłem Smalltalk.
Niektóre z tych hacków są przenośne w dialektach Smalltalk, niektóre wymagałyby warstwy kompatybilności Squeak ...
Zauważ, że jeśli wykonujesz w obszarze roboczym, możesz pominąć deklaracje | fi zz buz | i zdobądź 14 znaków.
Jeśli stać nas na 357 znaków (315 z pojedynczymi zmiennymi literowymi), lepiej unikać trywialnego #to: do: loop:
źródło
Haskell 226 bajtów, w tym spacja dla układu;)
„Rzeczywisty” kod ma 160 bajtów i można go skompresować, ale wtedy traci fizyczny szum.
Uruchom (dla dobrego wyniku):
Wynik:
źródło
Perl
Jeden, który zrobiłem w 2009 roku. Jednak dość łatwo to rozgryźć.
Edycja: Cholera, używa „Fizz” i „Buzz!” :( Myślałem, że to zmieniłem. Nieważne.
źródło
C 216 bajtów
źródło