10print

10print

Algorytm polega na stawianiu w linii znaków / (slash ) lub \ (backslash) w losowej kolejności. Gdy liczba znaków w danej linii przekroczy maskymalną liczbę, algorytm przechodzi do następnej lini. Do wizualizacji można wykorzystać konsolę https://10print.org/.

Cały kod programu mieści się w jednej linii

$$$\mathrm{10 \;PRINT \;CHR\$(205.5+RND(1));: \; GOTO 10}$$$$

Kiedy pierwszy natknąłem się w internecie na ten temat byłe niebywale zdumiony. Jakże to proste i piękne i jaki niebanalny rezultat można otrzymać. Napisałem własną wersje tego programu, bardziej rozszerzoną z uwagi na format grafiki jaki pragnąłem otrzymać. Kolejne etapy generowania wzoru zostały przedstawione na poniższym rysunku.

Kolejne etapy generowania wzoru wypełniającego kwadrat.

Program w swojej podstawowej wersji daje równe szanse dla "/" i "\". W taki wypadku otrzymujemy tego typu grafikę.

Wzór wygenerowany przy równym prawdopodobieństwie wylosowania każdego ze znaków.

Możemy jednak pomyśleć o sytuacji gdy bardziej będziemy preferować "/" niż "\". Dla przykładu, gdybyśmy rzucali kostką i jeżeli wypadnie 1 lub 2 oczka stawiamy "/", w każdym innym wypadku "\". Czyli prawdopodobieństwo jest różne, co widać na kolejnych rysunkach.

Wzór wygenerowany przy stosunku prawdopodobieństwa 1/2.
Wzór wygenerowany przy stosunku prawdopodobieństwa 1/4.