Pascalov trojuholník

    1
   1 1
  1 2 1
 1 3 3 1
1 4 6 4 1

Tento trojuholník zostrojíme tak, le na zaciatok napíaeme do prvého riadku jednotku. Do druhého riadku dve jednotky. Do tretieho riadku budeme písa» císla, ktoré sú súctom dvoch císel v riadku nad tymto císlom. Takto môleme pokracova» al do nekonecna.

Pascalov trojuholník je matematicky vcelku zaujímavá vec pretole císla v riadkoch sú koeficienty clenov polynómu, ktory vznikne roznásobením vyrazu (a + b)n kde n je císlo riadku + 1.

Napríklad pre (a + b)3 bude n = 3 a tak budeme hŠada» koeficienty v 4. riadku Pascalovho trojuholníka, ktoré sú 1, 3, 3, 1. A naozaj (a + b)3 = 1a3 + 3a2b + 3ab2 + 1b3.

Sierpinského trojuholník

1 1 1 1 1
1 0 1 0
1 1 0
1 0
1

Teraz si predstavme, le si Pascalov trojuholník prepíaeme tak, le tam kde sú párne císla dáme 0 a tam kde sú nepárne dáme 1. Teraz tento trojuholník eate prekreslíme tak, le jednotky na Šavej strane budú na osi y a jednotky na pravej strane trojuholníka budú na osi x.

Trojuholník teda tvoríme tak, le císlo, ktoré chceme získa» je súctom císla nalavo od neho a císla nad ním. Samozrejme uvalujeme iba císla 0 a 1 — pracujeme v binárnej sústave. Cile 1 + 1 = 0.

Sierpinského trojuholník

Teraz ul len stací vaade tam kde je 1 nakresli» bod a kde je 0 bod nakresli» inou farbou. Ak toto urobíme pre na dostatocne veŠkej ploche dostaneme zaujímavy obrázok.

Ide o jednoduchy prípad fraktálu. Cile útvaru, ktorého nejaká cas» sa podobá na útvar cely. Existujú samozrejme aj komplexnejaie fraktály a medzi tie najznámejaie patrí urcite Mandelbrotova mnolina a Pytagorov strom. Ale to je ul iné rozprávanie.

Assembler

Al teraz sa dostáveme sa ku korenu veci. Zaumienil som ti totil naprogramova» program, ktory vykreslí Sierpinského trojuholník na celú obrazovku. V mojom prípade 640x480 bodov. Na tomto samotnom by nebolo nic zvláatne a tak som si povedal, le ten program musí by» co najkrataí.

Prvy pokus mal nieco cez 60 bajtov ale za pol hodinku som to skresal na 54. O den neskôr ma napadla finta vyulívajúca vypocet z predchádzajúceho kroku a tak som sa dostal pod hranicu 50 bajtov. Nakoniec mi hvge poradil krataí spôsob ukoncenia programu, eate som to trochu odladil a tak som sa dostal na magickú hranicu 41 bajtov.

Tu je tych 41 bajtov (sierp3.com), na ktoré som tak nesmierne hrdy:

B0 11 CD 10 BA E0 01 B9 7F 02 4A B0 01 E9 08 00 FE C4 42 CD 10 4A 30 D8 B4 0C 88 C3 CD 10 E2 F0 85 D2 75 E3 30 E4 CD 16 C3

PokiaŠ by niekoho zaujímal kompletny zdroják tak si ho môle v kŠude stiahnu». Kompilova» ho vaak bude treba cez NASM.