Twoim zadaniem jest narysować zestaw mandelbrota w ascii. Powinno to wyglądać mniej więcej tak
Kompleks numer c
leży w zbiorze Mandelbrota, gdy sekwencja z(n+1) = z(n)^2 + c
, z(0) = 0
pozostaje ograniczonym. Na potrzeby tego wyzwania możesz rozważyć sekwencję ograniczoną dla c
if |z(32)| < 2
.
Wykreśl mandelbrota na płaszczyźnie złożonej od (-2 - i) do (1 + i) i przy minimalnej rozdzielczości 40x30, używając znaków ascii w swoim ulubionym języku, używając jak najmniej znaków.
*
Odpowiedzi:
Zakładając, że kod maszynowy się liczy, napisałem jakiś czas temu prod, który generuje Mandelbrot w kolorze 320x200 w 64 bajtach - http://www.pouet.net/prod.php?which=53287
Oto kod:
Wersja skompilowana w base64:
źródło
sudo apt-get install dosbox; dosbox ./Microbrot.com
jak znaleziono mnie podnoszącego szczękę z podłogi. To naprawdę cholernie imponujące!C, 988 znaków
Oto moja, która wykonuje mandelbrota ASCII, napisanego jako mandelbrot ASCII, w C.
Och .. i ma także funkcję interaktywnego zoomu. (naciśnij klawisze numeryczne 1-9, aby powiększyć odpowiedni obszar)
Pierwotnie opublikowane tutaj http://marquisdegeek.com/rnd_obs.php
źródło
Wspólne seplenienie - 195 znaków
Testowany z sbcl i clisp. Wynik:
Nieznacznie zmodyfikowany z bloga B. Clementson .
źródło
Python,
146145143charMusiałem dodać klauzulę (abs (x) <2) do wyrażenia warunkowego, aby powstrzymać Pythona przed przepełnieniem. Ale ... to jest powód, dla którego kocham Sage ...
Szałwia, 133char
Przykładowe dane wyjściowe (z wersji python)
źródło
15j
w wersji Pythonar=range(-50,26)
. Następnie zastąpićrange(-15,16)
zr[35:66]
i wymienićrange(-50,26)
zr
.J , 61 znaków
55 dla rozdzielonych spacjami 0/1 zamiast gwiazd.
źródło
PODSTAWA -
167165148mb3
Pliku:(brak końcowego nowego wiersza)
Uruchom go w terminalu o długości linii 125:
BASH -
214190Zasadniczo jest to ten sam kod, jak poniżej, z obliczeniami zastępowanymi na stałe wartościami, a obraz został odwrócony wokół osi x.
Poniższa wersja nie w pełni pasowała do zasad łamania „od (-2 - i) do (1 + i)”.
BASH -
263261260236Użyj tego źródła, Luke:
Ten kod używa tylko arytmetyki liczb całkowitych, więc BASH nie potrzebuje dodatkowych pomocników do wykonywania obliczeń zmiennoprzecinkowych ...
źródło
x=;y=
. Operatory Shift mają niższy priorytet niż dodawanie i mnożenie, więc nie trzeba nawiasów wokół>>
operandu po lewej stronie. I możesz użyć{
…}
zamiastdo
…done
, jak radzi Digital Trauma w swoim wskazówce . I możesz umieścić wiele wyrażeń w ocenie arytmetycznej, po prostu oddziel je,
.(x*x-y*y)>>12
. Nic nie zmieniają.Ruby, 95 znaków
Przykładowe dane wyjściowe:
źródło
Haskell, 130
Wynik:
źródło
Oto odpowiedź skryptu kawy uruchomiona na node.js: w czerni i bieli:
Dodawanie koloru:
źródło
Mathematica 56
Mathematica 77
Mathematica 77
źródło
GraphicsGrid@ImageData@Binarize@MandelbrotSetPlot[ImageResolution->40]/.{1->" ",0->"*"}
ale było 84 znaków, a wynik i tak nie jest tak ładny jak twój.Perl, 153 znaki
Wyjście: Nie mogę opublikować zdjęcia, ponieważ jestem nowym użytkownikiem, więc spróbuję opublikować tekst wyniku.
źródło
C # - 304 znaków
Kiedy koduję, koduję z czytelnością i pięknym formatowaniem. Zwymiotowałem pisząc to.
Jestem pewien, że moje rozwiązanie można ulepszyć, ale w celach informacyjnych opublikuję je. Zauważ, że konsola Windows zmiażdży obraz.
źródło
Haskell: 340 znaków
Cóż, ponieważ nie widzę odpowiedzi haskell, wysyłam swoją, starałem się ją zminimalizować z tego, co zrobiłem do tej pory. Jestem pewien, że mogę to znacznie zmniejszyć. Ale oto pierwsza próba:
A oto wynik:
OK - zainspirowany jakimś animowanym zaciemnionym kodem C w HN, oto animowana wersja:
Skopiuj / wklej, zrób runghc mandel.hs, ciesz się!
Oto rodzaj wyniku po 50 iteracjach:
I link do bardziej czytelnego kodu:
http://yannesposito.com/Scratch/en/blog/Haskell-Mandelbrot/
źródło
J, 70
Wyświetla członków zestawu jako
1
, resztę jako0
. Odstępy w każdym obliczonym punkcie mają szerokość dwóch znaków, tak aby piksel był w większości kwadratowy z większością czcionek.źródło
QBasic, 222 znaków. Nie tak krótko, ale QBasic jest dość gadatliwym językiem. Zaktualizowałem też z pozornie poprawniejszą wersją
Dane wyjściowe są takie, jak na poniższym obrazku.
źródło
SpecBAS 201
Wiem, że to stare pytanie, ale bawiliśmy się z bratem ascii Perlina na forum programowania BASIC, a oto mój - w SpecBAS (który jest rodzajem interpretera języka Sinclair BASIC) i tak naprawdę jest to tylko tekst i jeden wiersz kodu:
Wynik:
źródło
1FOR y=-29TO 30:FOR x=-10TO 89:LET m,r=0:FOR k=0TO 112:LET j=r^2-m^2-2+x/25,m=2*r*m+y/25,r=j,l=k&15,k=IIF(j^2+m^2>11,113,k):NEXT k:PRINT" .:-;!/>)|&IH%*#"(l+1);:NEXT x:NEXT y
.Perl - 193 znaków
Wynik
Myślę, że wygrał konkurs zaciemnionego perla kilka lat temu.
źródło
Python, 115.
Działa tylko na terminalach 80x24, ale możesz dodać
print
po pierwszym,for
aby to naprawić.Przykładowe dane wyjściowe (z dodatkową
print
instrukcją.):źródło
c ++ - 11 - 298 znaków
W pełni golfowa, nieparametryzowana wersja, która robi tylko to, co jest wymagane:
Wdrożenie jest całkowicie niczym niezwykłym. Widzę, co można zrobić przy użyciu natywnego złożonego czasu (co jest niestety trochę męczące).
Nieskluczony i sparametryzowany, aby mógł tworzyć regiony
Wynik
źródło
GolfScript - 77
Prawdopodobnie można go grać w golfa o wiele więcej. Wynik jest przybliżony, ponieważ muszę użyć liczb całkowitych.
Wynik:
Potrzebuje około 9 bajtów więcej, aby użyć spacji i gwiazd:
źródło
GNU bc, 136 bajtów
Wynik:
źródło
CJam, 52 bajty
Wyjaśnienie:
źródło
Matlab, 96
źródło
Befunge, 266 bajtów
Wypróbuj online!
Jest to renderer Mandelbrota, który zaimplementowałem kilka lat temu w celu przesłania kodu Rosetta . Ponieważ Befunge nie ma zmiennoprzecinkowego, używa formy 14-bitowej arytmetyki stałego punktu emulowanej za pomocą operacji na liczbach całkowitych. Ma maksymalnie 94 powtórzeń z zestawem znaków ASCII jako „paletą”.
Zostało to pierwotnie zaimplementowane z myślą o przenośności, a nie o rozmiarze, ale nadal powinno być dość dobrze zagrane w golfa.
Przykładowe dane wyjściowe
źródło
Python 444
Oto jeden z twórców Pythona ,
który choć nie jest tak krótki,
to jedna linia, która jest ładnym szefem.
źródło
c ++ (260)
Kod do gry w golfa:
Przykładowe dane wyjściowe:
źródło
Minkolang 0,9 ,
7774 bajtów (NIEPRAWIDŁOWY)Ta odpowiedź jest nieprawidłowa, ponieważ język został stworzony długo po tym wyzwaniu, ale publikuję go, aby znaleźć rozwiązanie w tym języku. Sprawiając, że całkiem zgolono 3 bajty woo!
Wypróbuj tutaj.
Wynik
Wyjaśnienie
Wykorzystuje to wewnętrzną obsługę liczb zespolonych w Pythonie , więc mogę to zrobić
1~12$:;
(odpowiednik(-1)**0.5
w Pythonie), aby uzyskać urojoną jednostkę. Następnie są trzy zagnieżdżonej pętli, który pętliy
,x
iz=z^2+c
. Wyłamanie się z najbardziej wewnętrznej pętli jest konieczne (i wykonane przezd$~2`9&
), ponieważ w przeciwnym razie liczby staną się tak duże, że staną się(NaN+Nanj)
, które najwyraźniej mają wielkość mniejszą niż 2.źródło
Python 3, 185 bajtów
Tłumaczenie z perla (193) z pewnymi ulepszeniami
źródło
> <> , 118 bajtów
Wypróbuj online! Uwaga: uruchomienie TIO zajmuje około 25 sekund, więc bądź cierpliwy!
Bardziej samodzielne wyzwanie niż poważne wejście. Daje następujące dane wyjściowe:
źródło
; # , 150,878 bajtów (niekonkurencyjne)
Nie pasuje tutaj :(
Wynik:
źródło