Кривая дракона на 1С. Занимательные алгоритмы. 1С-Антистресс программирование
По мотивам статьи на хабре "Реверс-инжиниринг 128-битного дракона".
Программа рисует кривую дракона, вид фрактальной кривой.
Конкретный данный вариант алгоритма известен тем, что энтузиаст смог уместить его в исполнимый файл под MS-DOS размером всего 16 байт.

&НаКлиенте
Перем Цвета, X, Y, counter, flag, МасштабВывода;
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Цвета = Новый Массив;
Цвета.Добавить(Новый Цвет(0, 0, 0));
Цвета.Добавить(Новый Цвет(0, 0, 128));
Цвета.Добавить(Новый Цвет(0, 128, 0));
Цвета.Добавить(Новый Цвет(0, 128, 128));
Цвета.Добавить(Новый Цвет(128, 0, 0));
Цвета.Добавить(Новый Цвет(128, 0, 128));
Цвета.Добавить(Новый Цвет(128, 128, 0));
Цвета.Добавить(Новый Цвет(192, 192, 192));
Цвета.Добавить(Новый Цвет(128, 128, 128));
Цвета.Добавить(Новый Цвет(0, 0, 255));
Цвета.Добавить(Новый Цвет(0, 255, 0));
Цвета.Добавить(Новый Цвет(0, 255, 255));
Цвета.Добавить(Новый Цвет(255, 0, 0));
Цвета.Добавить(Новый Цвет(255, 0, 255));
Цвета.Добавить(Новый Цвет(255, 255, 0));
Цвета.Добавить(Новый Цвет(255, 255, 255));
ШиринаХолста = 900;
ВысотаХолста = 700;
МасштабВывода = 0.25;
Холст.Область(, 1,, ШиринаХолста*МасштабВывода).ШиринаКолонки = 0.5;
Холст.Область(1,, ВысотаХолста*МасштабВывода).ВысотаСтроки = 2.75;
Холст.Область(1, 1, ВысотаХолста*МасштабВывода, ШиринаХолста*МасштабВывода).ЦветФона = Новый Цвет(0, 0, 0);
X = 255;
Y = 0;
counter = 16;
flag = false;
КонецПроцедуры
&НаКлиенте
Процедура ШагРисованияДракона()
Для Сч = 1 По 5000 Цикл
if (flag) then
counter = counter + 17;
else
counter = counter + 16;
endif;
flag = counter > 255;
counter = counter % 256;
if (flag) then
Y = Y - (X + 1);
else
Y = Y - X;
endif;
flag = (Y % 2 <> 0);
Y = Цел(Y / 2);
if (flag) then
Y = Y + 256;
endif;
if (X < 0 and Y < 0) then
flag = true;
elsif (X >= 0 and Y >= 0) then
flag = false;
else
flag = Макс(X, Y) >= АБС(Мин(X, Y));
endif;
X = Y + X;
putPixel(X, Y, counter);
КонецЦикла;
ПодключитьОбработчикОжидания("ШагРисованияДракона", 0.5, Истина);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция АБС(Икс)
Если Икс >= 0 Тогда
Возврат Икс;
Иначе
Возврат -Икс;
КонецЕсли;
КонецФункции
&НаКлиенте
Функция putPixel(x, y, colorIndex)
Цвет = Цвета[colorIndex % 15];
Холст.Область((y+351)*МасштабВывода, (x+201)*МасштабВывода).ЦветФона = Цвет;
КонецФункции
&НаКлиенте
Процедура НарисоватьДракона(Команда)
ШагРисованияДракона();
КонецПроцедуры
&НаКлиенте
Процедура Останов(Команда)
ОтключитьОбработчикОжидания("ШагРисованияДракона");
КонецПроцедуры
Бедняга
Трэвел-блогер Линн Скотт опубликовала фотографию жирафа с необычно изогнутой шеей, сделанную в Национальном парке Крюгера в ЮАР. Рейнджер, сопровождавший группу, не проявлял беспокойства по поводу животного. Место съёмки не раскрывается, чтобы защитить жирафа от браконьеров. Причина деформации шеи неизвестна, но можно предположить, что она могла быть сломана.
Ветеринар Сара Фергюсон, специализирующаяся на жирафах, отметила, что без исследований нельзя утверждать, что кости были сломаны, но признала, что животное страдает от кривошеи. Фергюсон встречала случаи кривошеи у жирафов в зоопарках и в дикой природе, но не видела настолько деформированной шеи, как у жирафа на фото. Известно, что дикие жирафы могут выжить после перелома шеи, но возраст жирафа на фотографии не позволяет предположить, что он участвовал в схватке за самку.