1 (изменено: ypppu, 2008-10-10 17:23:44)

Тема: Ahk: Рисуем символами

В общем пришла идея написать скрипт для перевода точечных изображений в буквы...
Может для этого и специальные проги уже существуют, но захотелась это сделать на Autohotkey.
Приведённый ниже пример позволяет собрать изображение из букв с помощью стандартного paint.exe
В нём можно задать начальные координаты , ширину и высоту исходного рисунка. Далее программа перебирает все пиксели, проверяет их цвет и посылает буквы в поле ввода текста. Пока что скрипт может работать только с монохромными картинками, желающие могут его доработать, чтобы различать оттенки серого.


x:= 68
y:= 58
time := 1
F11::

loop

{


    
loop, 60                    ;сколько рядов
    {    
        loop, 60            ;сколько колонок
        {    


;sleep, time
PixelGetColor, Color1, x, y
;sleep, time


IF Color1=0xFFFFFF
{
;sleep, time
Send, {SHIFTDOWN}~{SHIFTUP}
}

IF Color1=0x000000
{

;sleep, time
Send, {SHIFTDOWN}W{SHIFTUP}
}
    
    x:=x+1                ;ширина перебора
    ;Sleep, time            ;задержка между кликами


        }    

Send, {ENTER}
    ;Sleep, time

    x:=68  ; возвращение в начало по горизонтали
y:=y+1                    ;высота перебора
    }    

    


}



F12:: 
{
ExitApp ;завершить программу
}

Выставляем картинку в левый верхний угол, затем растягиваем поле ввода текста, ставим в него курсор. Для запуска F11, для завершения работы F12.
Если есть отзывы и предложения, пишем тут.


p s шрифт лучше выставить Lucida Concole - там ширина всех символов одинакова, но можно и Tahoma, только ` надо заменить на ``, и то может получиться кривовато

[url]http://picthost.ru/images/plqfafoulotqzmve92n3.jpg[/url]

Добавлено: поправил ссылку на скриншот
Ещё добавлено - исправил код скрипта

2

Re: Ahk: Рисуем символами

Спасибо, попробую попозже, отпишусь.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

3

Re: Ahk: Рисуем символами

Не всё понятно.

Выставляем картинку в левый верхний угол, затем растягиваем поле ввода текста.

Это как? Что такое "выставляем"? В каком смысле "растягиваем"? Куда растягиваем?
У меня нет под рукой ни одной монохромной картинки.
И ещё, при запуске скрипта:

Error at line 26.

Line Text: Send,
Error: "Send" requires at least 1 parameter.

The program will exit.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

4

Re: Ahk: Рисуем символами

Что-то ничего у меня не получается:

http://picthost.ru/images/egkzcvh3qpqxerw9gm7.jpg

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

5

Re: Ahk: Рисуем символами

Расскажу по порядку
Монохромный рисунок - значит состоит только из белого и черного цвета, получить можно в том же Paint через Save as. Пример можно скачать здесь http://depositfiles.com/files/8638891

1. открываем в Paint файл primer1.bmp (см. ссылку выше)
2. разворачиваем окно программы во весь экран
3. расширяем лист где-нибудь до 1500х1500 (Ctrl+E)
4. Используем инструмент "надпись" (такая жирная буква A  в панели инструментов)
5. Растягиваем рамку надписи как на примере в моём первом посте (как можно шире, но чтобы не наезжало на рисунок)
6. теперь запускаем скрипт, по нажатию F11 он начинает в поле ввода посылать символы

Скрипт выполняется, пока не дойдет до конечных координат, либо пока не нажмём F12.

6

Re: Ahk: Рисуем символами

The gray Cardinal пишет:

Не всё понятно.
при запуске скрипта:

Error at line 26.

Line Text: Send,
Error: "Send" requires at least 1 parameter.

The program will exit.

Да, это моя ошибка, вместо ` надо {SHIFTDOWN}~{SHIFTUP} ... в общем любой символ, ассоциирующийся с белым цветом


The gray Cardinal пишет:

Что-то ничего у меня не получается:

Всё правильно, программа работает в квадрате размером 60х60 с начальными координатами x=68 y=58 (можно задать вручную). Именно в этом поле у Вас чёрные пиксели.

7

Re: Ahk: Рисуем символами

Ага, теперь получилось. Но как-то это хлипко всё.
F12, кстати, не срабатывает (не реагирует).
Интересно было бы результат выводить в файл, и придумать механизм для облегчения задания правильных точных начальных координат (и конечных координат, т.е. количества итераций циклов).

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

8 (изменено: ypppu, 2009-01-24 17:15:32)

Re: Ahk: Рисуем символами

Взято здесь joan stark's ASCII Art Gallery http://www.geocities.com/SoHo/7373/index.htm

tmnt=
(
`n                  _.---._`n              _.-(_o___o_)`n              )_.'_     _'.`n            _.-( (_`---'_) )-._`n          .'_.-'-._`"""`_.-'-._'.`n          /` |    __`"`__    | `\`n         |   | .'`  ^:^  `'. |   |`n         )'-.//      |      \\.-'(`n        /   //       |       \\   \`n        \   |=======.=.=======|   /`n         )`-|      ( R )      |-'(`n         \  \======/-\'\======/  /
`n          \,=(    <_/;\_|    )=,/`n          /  -\      |      /-  \`n          | (`-'\    |    /'-`) |`n          \\_`\  '.__|__.'  /`_//`n            /     /     \     \`n           /    /`       `\    \`n          /_,="(           )"=,_\`n          )-_,="\         /"=,_-(`n           \    (         )    /`n            \    |       |    /`n             )._ |       | _.(`n         _.-'   '/       \'   '-._`n        (__,'  .'         '.  ',__)`n           '--`             `--'

)
Gui, Font, s5, Lucida console
Gui, Add, text, s20 vMyEdit, %tmnt%
gui show, w250 h250,

9

Re: Ahk: Рисуем символами

Ссылочка хороша .

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

10

Re: Ahk: Рисуем символами

По материалам того же сайта

Gui, Font, s5, Lucida console
Gui, Add, text,h400 w600 s10 vMyEdit, 567
gui show, w300 h100, mov

loop
{
sleep, 100
GuiControl,, MyEdit, `n         /`n        /`n      <<O                                              O`n        |                                            o/|>`n       /|                                              |`n      / |                                              |`njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sleep, 100
GuiControl,, MyEdit, `n        /`n       /`n     <<O                                              O`n       \                                             o/\ `n       /\                                              /`n      / /                                              \`njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sleep, 100
GuiControl,, MyEdit, `n        /`n       /                                              o`n     <<O                                             _O>`n       \                                              _\ `n       /\                                            | /`n      / /                                              \`njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sleep, 100
GuiControl,, MyEdit, `n        /`n       /                                              o`n     <<O                                             <O__`n       \                                              _\ `n       /\                                            / /`n      / /                                              \`njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sleep, 100
GuiControl,, MyEdit, `n        /`n       /                                           o `n     <<O                                            \O__`n       \                                              \ `n       /\                                             /|`n      / /                                            | \`njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sleep, 100
GuiControl,, MyEdit, `n        /`n       /                                           `n     <<O                                        o   _O`n       \                                             /\ `n       /\                                             /|`n      / /                                            | \`njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sleep, 100
GuiControl,, MyEdit, `n        /`n       /                                           `n     <<O                                o   .   .  _O`n       \                                            /\ `n       /\                                            /\__`n      / /                                            |`njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sleep, 100
GuiControl,, MyEdit, `n    \`n     \                                           `n     <<O                     o     .    .   .   . `n       \                                         __O__ `n       /\                                          / /\/`n      / /                                            |`njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sleep, 100
GuiControl,, MyEdit, `n     `n                                                 `n  ___,_O                     .     .    .   .   .   O`n       \      o   '    '                            /\ `n       |\                                            /\`n      /  \                                           | \`njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sleep, 100
GuiControl,, MyEdit, `n`n                                                 `n       O                     .     .    .   .   .   O_`n       \\____o    '    '                            /\ `n       |\                                            /|`n      /  \                                           | \`njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sleep, 100
GuiControl,, MyEdit,                    `n           /         o`n          /       .  `n       O>>     .                                    O_`n       \                                            /\ `n       |\                                            /|`n      /  \                                           || `njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sleep, 100
GuiControl,, MyEdit,  %a_space%                       .   '   '  o    `n           /         .               `n          /       .  `n       O>>     .                                      O`n       \                                             /|\`n       |\                                            /|`n      /  \                                           || `njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sleep, 100
GuiControl,, MyEdit,  %a_space%                       .   '   '   '  .    `n                     .                     '  o`n                  .                             `n       O       .                                     _O/`n      /|\                                             |`n       |\|                                           //`n      / ||                                           \\ `njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sleep, 100
GuiControl,, MyEdit,  %a_space%                       .   '   '   '  .    `n                     .                     '  .`n                  .                              '  .  o`n       O       .                                     _O/`n      /|\                                             |`n       |\|                                           //`n       |/|                                           \\ `njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sleep, 100
GuiControl,, MyEdit,  %a_space%                       .   '   '   '  .    `n                     .                     '  .`n                                                 '  .`n       O                                            _O_o`n      /|\                                             \`n     | |\                                            //`n     | |/                                            \\ `njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sleep, 100
GuiControl,, MyEdit,  %a_space%                               '   '  .    `n                                           '  .`n                                                 '  .`n       O                                             _O`n      /|>                                             |\o`n     / |\                                            /|`n    /  |/                                            \| `njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sleep, 100
GuiControl,, MyEdit, `n                                              .`n                                                 '  .`n       O                                              O`n      /|>                                            /|\o`n     / |\                                            /|`n    /  |/                                            \| `njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sleep, 100
GuiControl,, MyEdit, `n`n`n      _O                                              O`n     / |>                                            /|\o`n    / /|                                             /|`n     / |                                             \| `njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sleep, 100
GuiControl,, MyEdit, `n        /`n       /`n     <<O                                              O`n       |                                            o/|>`n      /|                                             /|`n     / |                                             \| `njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sleep, 100
GuiControl,, MyEdit, `n         /`n        /`n      <<O                                              O`n        |                                            o/|>`n       /|                                              |`n      / |                                              |`njgs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}
return
GuiClose:
ExitApp

11

Re: Ahk: Рисуем символами

Занятно .
Думаю, какова может быть практическая ценность... .

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

12

Re: Ahk: Рисуем символами

The gray Cardinal пишет:

практическая ценность....

Ради искуства
..или как альтернативный способ криптографии

13 (изменено: ypppu, 2009-03-09 01:00:17)

Re: Ahk: Рисуем символами

Нашёл интересную программу TNR Image Characterizer

@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@@MM`  
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMQQ##BBQQ@@@@@@@@QQQQQQMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM`  
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMQQ##@@MMMMMMMM@@@@@@QQ########QQ@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM  `
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@@##QQMMMMMMMMMM@@QQ####BB####QQ##QQ##@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM```
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMQQ##MMMMMMMMQQ##QQ##QQQQQQQQ##::####**__::QQMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM```
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMQQQQMMMMMMMMQQBB##BBQQ####QQQQBB##____##++##::QQ@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM```
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMQQQQMMMMMM@@####QQQQ########::QQ__##BB..**::QQ!!__##MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM```
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@@QQMMMMMMMM@@######QQBBQQQQ__!!..--QQ..!!QQ**QQBBBB::@@MMMM@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM```
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM##@@MMMM##@@QQQQBB####++::____##--!!::**QQ##QQ####QQ##::MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM      
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@@MMMM@@##MMBB##%%QQQQ****__::--QQ::77**##BBQQ##QQ##QQQQBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM`  
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMQQMMMMMMMM@@######**@@##++....--**QQ__::BB%%@@@@BBQQ######**@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM```
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMQQMMMMMMMM@@QQQQQQ@@++..##----..QQ__##!!##MMMMMMMM@@MMQQ##%%##__MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM```
MMMMMMMMMMMMMMMMMMMM@@MMMMMMMMMMMMMMMMMM@@@@@@MMMMMMMMMMMMMM@@QQMMMMMMMMQQ####QQ!!##**--++--++**%%####MM@@MMMMMMMMMMBB##BBQQ!!BB@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM```
@@MMMM@@DD88%%99MMMMMMMMMMMMMMMMMMMMMMMM##MMMMMMMMMMMMMMMM@@##MMMMMMMMQQQQ##QQBB##!!::**++**::##@@@@QQ##@@@@@@MMMMMM@@BBQQQQ##QQMMMMMM@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM`  
MMMM@@++%%1177::**88MMMMMMMMMMMMMMMMMMMMMM##MMMMMMMMMMMMMMMMMMMMMMMM@@@@@@##BB__::@@..::**####QQMMMMMM@@MMQQ++BB@@@@MMMM@@@@%%::::MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM  `
@@MM**MM++````````**DDMMMMMMMMMMMMMMMMMM@@MMMMMMMMMMMMMMMMQQ@@MMMMQQ@@####QQ##!!**--''..++!!@@MMMMMMMMMMMMMMMMBB::QQMMMM@@QQBB::''MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@@@@QQ@@      
MM99MM**++    ````((BBMMMMMMMMMMMMMMMMMMMM##%%MMMM@@MMMMMMBB@@MMMMBB##QQQQQQ**--BB**..__%%++##MMMMMMMMMMMMMMMMMMMM%%QQMMBBMM####!!@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMQQMMMMMM@@##DD8888%%%%%%      
MM**MM**``    ``  ``((DDMMMMMMMMMMMMMMMMMM##@@**BBQQMMMMMMMM@@MM@@BBQQQQ####++__**''77**QQQQMMMMMMMMMMMMMMMMMMMMMM@@####MMMM@@BB__**MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM####BB##BBMM@@BB##BB%%```
MM%%DD++````      ''44DDMMMMMMMMMMMMMMMMMMMM%%@@__@@QQ::@@MM@@MMQQBBQQQQ@@@@QQ....''__::##@@@@@@MMMMMMMMMMMMMMMM@@MMMMBBBBMM@@QQQQ**QQMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@@##%%MMMMMMMMMMMMMMMMMM@@@@`  
MMDD8877``        ``77DDMMMMMMMMMMMMMMMMMM@@::QQ@@++@@@@BB##@@MMMM##BB##**::..****##++QQ**MMMMMMMMMMMMMMMMMMMMMMMMMMMM@@##@@##QQQQ**!!MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM```
MM%%@@++''````  ''((%%DDMMMMMMMMMMMMMMMMMM@@__@@MM@@QQMM@@MM!!BB@@QQBBBBQQ**::**--..QQDDQQMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMQQ@@QQ##--::@@MMMMMMMMMMMMMMMM@@@@@@@@MM@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM      
MM**MMDD11::``````++DDMMMMMMMMMMMMMMMMMMMMMM__QQ@@@@BBBB@@MMMM##++%%QQBBQQ##::..''--..DDQQMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@@MM@@QQQQ::..##MMMMMM@@MMMM@@BBQQ@@@@@@##@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM`  
MM%%%%MMDD77::7777@@QQMMMMMMMMMMMMMMMMMMMMMM**##MMMMMM**##QQMMMM##++QQBBQQ**::''''++**####MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@@MM##@@****''**MMMMMMMM@@MMMMMM@@@@MMMMMM@@MM@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM```
MMMM++DDMMMMMM@@QQBBMMMMMMMMMMMM@@##QQMMMMMM__##@@MMMMMM**@@%%MM####**##++::........77####MM@@MMMMMMMMMMMMMMMMMMMMMMMMMM@@MMMM@@@@**--**MMMMMMMMMMMMMMMMMMMMMMMMMM@@@@@@QQ@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM```
MMMM@@::88II@@BB::@@MMMMMMMM##QQMM@@##MMMM@@::@@MMMMMM@@**%%QQ@@QQQQ__##__77''..``..**##@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@@@@**..::##MMMMMMMMMMMMMMMMMM@@@@@@@@@@@@@@@@@@@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM```
MMMMMMMMMMII@@@@MM%%MMMM@@!!MMMMMMMMBBMMMMQQ!!@@MMMMMMMM##**BB##@@QQ::____****..``..++QQMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@@MM##@@##..__MMMMMMMMMMMMMMMMMM@@MMMM@@QQQQQQ@@@@@@@@MM@@MM@@MMMMMMMMMMMMMMMMMMMMMM```
MMMMMMMMMMMM@@%%MM%%MMBB!!@@MMMMMM@@##MMMMBB**MMMMMMMMMMMM77QQ**QQBB**##::%%**..--::::##MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM##QQBB..##MMMMMMMMMMMMMMMMMM@@@@@@@@@@QQQQQQ@@@@QQQQ@@MM@@@@MMMMMMMMMMMMMMMMMMMMMM```
MMMMMMMMMMMM@@BBMM@@BB++@@MMMMMM@@@@BBMM@@##QQMMMMMMMMMMMM**QQ::QQ::__######**::..**QQBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMBB##QQ..@@MMMMMMMMMMMMMMMMMM@@@@@@@@QQBB%%DD%%%%QQ@@QQ@@@@@@@@@@MMMMMMMMMMMMMMMMMMMM```
MMMMMMMMMMMMMMMM@@::__##BB@@MMMMMMMM##MMQQ**QQ@@MMMMMMMMMMQQ::__++++QQQQBB__!!QQ++77__::BBMMMMMMMMMMMMMMQQMM@@MMMMQQMM%%####**__MMMMMMMMMMMMMMMMMM@@MM@@QQ##DDDDDDDDDD%%%%%%DD##@@QQ@@@@MMMMQQMMMMMMMMMMMMMM```
MMMMMMMMMM@@MMQQ``::BBBBBB@@MMMMMMMM##MM@@**@@MMMMMMMMMMMMMM!!##**::MM@@##QQ______::**::::MMMMMMMMMMMMMMQQMM::!!@@MM@@@@##!!**MMMMMMMMMMMMMMMMMM@@@@QQ######%%%%DDDDDDDDDD%%DDDD88##QQ@@@@@@@@MMMMMMMMMMMMMM```
MMMMMMMMMM@@::  **@@##%%BB##MM@@MMMMQQMMQQ::@@MM@@MMMMMMMMMM%%QQQQ##MMMMQQ##::**--..::##QQBBMMMMMMMMMM@@BB@@@@##@@MM@@##++QQ@@MMMMMMMMMMMMMMMM@@@@QQDD%%BBBBDD88%%%%BB%%%%DDDD%%%%DDQQ@@@@@@@@MMMMMMMMMMMMMM```
MMMMMMMMMMBB    ::@@##BBBB@@##@@MMMMMMMM@@::@@MMMMMM@@@@MMMMQQ**@@@@MMMM##QQ!!..''....::::!!QQMMMM@@++MMMM##MMMMMMQQ@@**__MMMMMMMMMMMMMMMMMM@@@@@@##%%DDDD%%BB%%DDBB%%DDDD%%%%DDDD%%%%QQ@@@@MMMMMMMMMMMMMMMM```
MMMMMMMMQQ``      ##%%BB##__%%MMMM@@@@MMMM::QQMMMM@@@@####QQMM**QQMMMM@@QQ::**..!!--..''''**@@@@MM**MM@@QQMMMMMMMM##@@__QQMMMMMMMMMMMMMMMMMM@@@@BBBBDD%%DD%%%%%%##99BB%%%%DDBBDDDDDD%%%%@@QQ@@MMMMMMMMMMMMMM```
MMMMMMMM          !!@@##((**MMMMMMMM@@@@MM::@@MM@@@@QQ####MMMM**QQMMMMMM##******''..''''''77BBQQ!!QQQQQQ__MMMMMMMMBBQQ::MMMMMMMMMMMMMMMMMMMMMM@@88%%DD%%DDBBDDIIII88IIII####%%DD%%DDDD%%QQQQ@@MMMMMMMMMMMMMM```
MMMMMM__++  ``          --QQMMBBMM@@MM%%MM::@@MMMM@@QQ##%%QQ@@77QQMM@@@@%%QQ****--!!....--..BB''%%##MMMM**@@MMMM@@MMBB**@@MMMMMMMMMMMMMMMMMM@@@@DD%%DD%%DD%%BBII**::++::!!IIBBDDDDDDDD%%%%QQMMMMMMMMMMMMMMMM```
MMMM__::@@77          __@@BBDDMMMMMMMMBBMM::@@MMMM@@QQ##BBQQMMBBQQMMMM##QQ******__..''**..**....@@QQMM##%%MMMMMMMMMMQQ..%%MMMMMMMMMM@@@@MMMM@@QQDD%%DDDD%%%%BB%%!!::::::__44##%%DD%%DD%%@@MMMMMMMMMMMMMMMMMM```
@@%%**MMMMQQ``    ``::@@++BBMMMMMMMMMM%%@@**MMMMMMBBQQ##%%@@MM##@@MMMM##BB****++..::**....::''**BBMM##%%MMMMMMMM@@MM@@__!!@@MMMMMM@@BBMMMMMMMMQQ%%%%%%%%88%%%%BB##II99--::--44BB%%DDDDQQ@@MMMM@@MMMMMMMMMMMM```
MM__@@MMMMMM``      ##((__%%%%@@MMMMMM@@@@::MMMMMM##BBQQQQ##MMMM@@MMMM##BB++##__**!!....##..++@@MM@@%%BBMMMMMMMMMMMMQQ##**!!@@MMDD::QQMMMM@@MM@@@@@@@@@@@@@@@@88BBDD##II--::II##DD%%QQ@@@@MMMMMM@@MMMMMMMMMM`  
MMDDMMMM@@MM  ``  ````77BB%%BBBBMMMMMM@@@@**MMMMMM##BBQQ##BBMMMMQQ@@MM##**QQ!!::!!**``!!**``%%@@##@@DDMMMMMMMMMM@@BB@@@@####!!::##QQ@@MMMM@@@@MMMMMMMMMMMMMM@@QQ@@%%##DD##8899##%%%%BBMMMM@@BBBBBB@@MMMMMMMM`  
MM__MMMMMM::        ::@@##BB%%BBMMMMMM@@@@::MMMMBB##QQQQQQQQMMMM##MMMM######BB::::::::##__::@@######@@MMMMMMMMMM@@%%%%BB@@BB%%####MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@@QQBBBBDD%%BB%%DDMMMMBBDDBB%%DD##MMMMMMMM`  
MM!!@@@@MM``MM        @@##%%%%##@@MMMMMMQQ::@@MM##QQ%%QQ%%##MMMM##MMMMQQ##QQBB##!!::::BB``@@##____##MMMMMMMMMMMM@@BB%%%%QQMM@@@@MMMMMMMMMMMMMMMMMMMMMMMMMMMM@@MMMMMM@@@@@@%%99DDQQ@@@@##%%DD%%DD88II@@MMMMMM      
MM**@@@@::@@##__    ``::####BBBB%%MMMMMM%%::##@@##QQ##__::##@@MM##MMMMMM%%####QQ::**QQ****@@!!--!!%%MMMMMMMMMMMM88QQ%%%%BB##@@BBMMMMMMMMMMMMMMMMMMMMMMMM@@QQMMMMMMMMMMMM@@DD@@88MMMM##BB88DDDDDD%%11%%MMMMMM      
MMBB##DD@@@@**##      ++@@BBBBBBQQ@@@@MMBBQQ##@@BBBB##::__BBMMMM##MMMM@@##%%####**BB++++@@77``  ``77@@@@MMMMMMMMBBQQBBDD%%%%MM@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM%%@@MMMMMMMM@@MM@@MMMMDD%%%%DD99DDBB99II@@MMMM      
MMMM**MMMMBB@@MM##````  @@BBBB##__MMMMMMMM@@##MM##QQ##******##MMMMMMMM@@BB%%BB::QQ__``####**MMMMMM::@@MMMMMMMMMM@@##%%DDBB@@MMMMMMMMMMMMMMMMMMMMMMMM@@##%%MM@@MM%%MMMMMMMMMMMMMMMMBB%%DDBBDD99%%BBIIII%%MMMM  `
MMMMDD@@MM@@%%@@@@``  ``**BBBB##::@@QQMMMMQQ::MM@@####**::QQ@@QQ@@MMMMMM@@QQBB%%##__####  MMMMQQQQ@@@@MMMMMMMMMM@@DD%%%%MMMMMMMMMMMMMMMMMMMMMMMMMM@@BB%%DDBBDDQQ@@QQ@@MMMMMMMMMM@@%%BB####DD%%IIII99IIIIMM@@      
MMMMMMBB@@######@@QQ      QQBBBB%%%%MMMM@@@@::@@##QQQQ****QQ@@@@MMMMMMMMMM@@BB##__##%%!!##@@@@@@  __MMMMMMMMMMMM@@%%DD@@MMMMMMMMMMMMMMMM@@++II@@MM@@DD%%%%%%BB%%@@@@%%##MMMMMMMMMMBB%%%%BB%%((99IIDD9944@@MM```
MMMMMM::@@@@##%%@@MM      @@BBBBDD__MMMMMMBB!!@@##QQBB::**@@BBBB@@MMMMMMQQ##QQ::%%##**__MM@@MMMMMMBBMMMMMMMMMMMMMM99@@MMMMDD99      ``  %%MMMMMMMMMMQQ@@@@MM99%%##%%@@%%##@@MMMMBBBB%%DDBBII44IIIIDDII44BBMM```
MMMM@@BBBBMM##BBMM@@##    ++@@%%BB__MMMM@@##%%##@@####****@@@@MMMMMM@@BBBBBBBB##@@##!!``@@MMMMMM@@##@@MMMMMMMMMMMM88MMDD  9988MM@@MMMM8899``DDMMMMMMMMMMMMMMBB44%%DDDD@@BB@@MMMMBBBB%%%%%%IIII99II4411II44@@`  
MMMMMMMM::MMMMBBQQMMMM      @@####BB**MMMM@@%%BBMM%%%%**((@@DDMM@@MMQQBBBB%%##@@QQ!!++``MM@@MMMMMMMM@@MMMMMMMMMMMMMM88``MMMMIIIIII9988II88II``99DD88``MMMMMMMM!!II88DD%%QQMMMMMM##%%%%DDIIIIII88DDII((II((@@  `
MMMMMMMMBBMMMMBB%%@@MM##    __##%%QQ**MMMM@@MMBBMM%%%%::**++@@MMMMMMMM@@@@@@QQ##BB__::``##%%##MM@@MMMMMMMMMMMMMMMMBB``@@II%%9988DDDD%%99DDMM____MM**++**MMMM@@II11%%BB%%%%MM@@MMBBBB%%%%44II44II44II441111BB      
MMMMMMMMMM++MMMMQQ##MMMM``  ++@@%%BB##@@MM@@MM__MMQQ####::!!__MMBB@@@@@@######BBBB____  ::##**##DDMMMMMMMMMMMMMMDD99MM11DD99IIDD999988II998899  88DD77++DDIIDDDDII%%%%DD%%MMMMMMBBBBBBII44II44994488BB44IIII`  
MMMMMMMM@@##MMMM%%BBMMMMBB    @@%%%%BB**MMMM@@DD%%QQ####::````QQ##@@####%%##DD%%##::::````@@QQ##@@##@@MMMMMMMM%%DD889999998888MMMMMMMMMM88DD@@    @@MMMM%%MMBBDD%%DD%%%%##MMMMMMBBDDDD449944II9999IIBBII88II  `
MMMMMMMM%%@@##MMMM##QQMMMM    **QQBB##::QQMMMMMM%%@@BB##%%``  ##@@DDMMQQ####BBBBQQ____``  ``````++MM@@MMMMMMMMDD88DDDDIIMMMMMMMMMMMMMMMMMMDD@@    @@DDDD88MMMM11DDDD%%DD99##MMMMDDDDDDII99II44II9944%%889988  `
MMMMMMMMBB@@::MMMM@@BBMMMM##  __@@##BB##!!MM@@MMMMDDQQBB##``  @@MM@@%%QQQQ##BBBB!!!!::::::  !!**88MMMM@@MMMM88IIDD##88MMMMMM@@MMMMMMMMMMMMMM@@((  MM%%%%DDMMQQ99MM@@BBDDQQ##MMMM@@DD88IIII44II11IIIIBB998899  `
MMMMMMMM######@@MMMMBBQQMMMM**  BBBB##BB++@@@@MMMM##@@BB####**@@__QQMM@@%%##BBDD____**::++QQDD%%@@@@MM@@MM##MMBB##QQMMMM@@####MMMMMMMMMM@@MMMM**  %%%%%%DD@@##99MMMM@@##DD##@@MMDD%%99IIIIIIII44IIIIBB118899      
MMMMMMMMBBMMMM__MMMM@@##MMMMMM  !!@@######::MMMMMMMMBB@@%%BB  @@MM@@MMMM##@@@@@@######@@MM##..##@@MMMMMMMMMM####@@@@##****QQ::QQ@@MMMMMMMMMMMM++``%%++77%%MMBB!!BBBBMMBBDDQQMM@@%%##%%449944IIIIII44%%118899`  
MMMMMMMM##@@MMDD@@MMMM@@##MMMM**  %%####BBBB@@@@MMMMMM##BB##``##@@##@@QQBBDD__##!!++****``!!BBQQMMMMMMMM##MM####@@::**QQ##**::**::MMMM@@@@MMMM++''DD````**%%%%__%%%%BB@@BBDD@@MM%%%%IIIIIIIIIIII448899!!8888`  
MMMMMMMMQQ##MM@@##MMMM@@MMMMMMMM  ::@@QQBB####@@@@MMMMMMQQ##__!!##QQ@@##88######__::**::::BB((##MMMMMMMMMMMMMMMM@@QQBBQQ@@QQ____::__MMMMMMMMMM``  DD**    MMBB**DDBBBB%%QQ%%MMMMDDBB((11IIIIII1144DD88IIDD88`  
MMMMMMMM####MMMM##@@MMMM@@QQMMMMBB  @@DDBBBB%%####@@MMMMMM####BB%%MM##QQ%%QQ!!::__::::````::++QQMMMMMM##@@MMMM######%%@@##@@@@__--__@@@@MMMMMM    %%++%%%%MMQQ::9999BBBB@@MMMMMMBBBB11((IIIIII44449999BB1188`  
MMMMMMMM##BB@@MMMM__MMMMMMMM@@MMMM__!!@@##BB%%%%@@##MMMMMM@@@@BB##@@##BB####**::**##BB++**``__**##@@@@MMMMMMMM##BBQQBB@@MM@@@@::____++MMMM@@MM  ::MM((77::@@88::::99IIBB@@@@MMMM%%88((II9944IIII8899IIBB__88      
MMMMMMMMQQ%%QQMMMMMM##MMMMMMMMMM@@MM``%%DDBB##%%##@@QQMMMMMMMMMMMM@@QQ####BB__%%BB++**@@BB**__::!!QQMMMMMMMMBBBBBBQQ@@MMMM@@::##QQQQ@@MMMMMMDD``DDMMMMBB  88DD::!!::88%%%%MM@@@@%%DD44IIIIII99II99889999::--`  
MMMMMMMMMM%%@@MM@@MMDDMMMMMMMM##MMMMBB``@@######%%BB@@MMMMMMMMMMMM##QQ##%%BB##__%%@@@@@@!!@@******::##@@MMMM@@######MMMMMM@@77__..((@@MMMMMM::``%%::@@MMMM99%%II((IIII%%DD%%MMMMBBBB4411II9999II99999999**--  `
MMMMMMMMMM%%@@MMMM@@QQ77MMMMMMMM##MMMM++**@@%%BBBBBBBB@@MMMM@@MMMMBB####%%BB!!@@%%**BB__@@QQ@@::__**__##@@MMMM@@MMMMMMMM@@@@QQ--77**BBMMMMMM``  ++``**``MMII%%DDDDBB99!!99%%@@@@BB%%4411II99889999999999!!::      
MMMMMMMMMMBB@@MMMMMMQQMM##MMMM@@##%%MMMM``%%BBBB####BB##MM@@%%MMMM######BBBB##BB**``!!!!::MMMM@@**__::::++MMMM@@@@MMMMQQQQ++....##QQ##MMMMQQ``99``99  MM@@MM%%DD%%%%%%BB8888MMMMBB1144II99II999999889999::::      
MMMMMMMMMM@@%%MMMMMMMMMMMMMMMMMM##@@@@MMQQ  ####BB%%####@@@@##@@MMDD%%##BB::@@!!``  ````BBMMMM@@##++__::__::**##%%QQQQ77!!''''::__BBMMMMMM__``DD````MMMMMMMMMMMMMMMMMM@@BB44MMMM##114444DDDD99998888IIII____  `
MMMMMMMMMMMMBBMMMMMMMMMMMM77MMMMMM@@BB@@@@##  ##BBDDBB@@@@MM##MMMM##%%##::QQ--**        @@MMMMMMMM@@BB::::--::**______@@**..''%%##QQ@@MMMM''DD``  DDMMMMMMMMMMMMMMMMMMMM@@%%MMMMBB4444II8899999988888888!!++```
MMMMMMMMMMMM##@@MMMMMMMMMMMM::MMMMMM@@%%MMMM@@**::QQ@@MMMMMMMMMMMMBBDD::@@!!``        BBMMMMMMMM@@MM@@MMBB----..''--::..``!!--BB@@@@MMMM!!..99``DDMMMMMMMMMMMMMMMMMMMMMMMMMMBBMM%%IIII114499998888!!88!!__**```
MMMMMMMMMMMM##@@MMMMMMMMMMMM@@__@@MMMMMM##MM@@MMBB  MMMM::MMMMMMQQ%%BB@@::**        QQMM@@MMMMMMMMMMMMMMMMBB::::--......''####QQMMMMMM@@''##99MMMMMMMMMMMMMMMMMMMMMMMMMMMM@@MMMMDDIIIIII88II8899II99__!!77::  `
MMMMMMMMMMMMMM@@MMMMMMMMMMMMMMMM__MMMMMMMMMM%%MM@@MMMMMM##BBQQ@@@@@@@@**::::  ``77MMMMMMMM@@MM##..--..--!!@@@@%%__!!....77::@@@@MMMMMM****##@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM88IIIIIIII88889988____!!II__  `
MMMMMMMMMMMM@@@@@@MMMMMMMMMMMMMMMMBB!!MMMMMMMMMMMM@@@@%%@@MM%%%%@@####QQ::!!****MMMMMMMMMMMMMM''QQ##BBQQQQ@@@@@@MMQQ....__@@MMMMMMMM**++@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMBBIIIIII9999DD!!**..____!!--      
MMMMMMMMMM@@MM@@MMMMMMMMMMMMMMMMMMMM@@##**QQMMMM####QQ##@@MMQQMM@@##%%##__!!::MM@@@@MM@@MM@@BBQQBBQQMMMMMMMMMM@@MM**..**BB@@MMMMMMMMMM@@@@MMMMMMMMMMMMMMMMMM@@MMMMMMMMMMMMMMMMMMDDDDIIII8888II__!!!!**--__::      
MMMMMMMMMM@@MM@@MMMMMMMMMMMMMMMMMMMMMMMM@@@@@@MM@@MM##%%MMMMMMMMMM@@__##BB::@@MMMM@@::::@@##``MMMMMMMM##**@@QQMM__..**::QQMMMMMMMMMMMMBB@@MMMMMMMMMMMMMMMM@@MMBBMMMMMMMMMMMMMMMM%%8844II____**!!!!__::::__**      
MMMMMMMMMM@@@@QQMMMMMMMMMMMMMMMMMMMMMMMMMMMM@@@@@@@@%%BBMMMMMMMMMMMM##QQ@@MMMMMMMMMMMM@@%%##**MMMMMMMM``!!::QQ##..__++##MMMMMMMMMMMMMMMMMMMMMMMMMM@@DDBB9911%%%%BB%%##MM@@@@MM@@DDBB11__--__!!**++!!::::::__  `
MMMMMMMMMM@@@@QQMMMM@@MMMMMMMMMMMMMMMMMMMM@@@@##@@@@@@::MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMBBMMBB%%MMQQDD::``**%%@@''::::BBMMMMMMMMMMMMMMMMMMMMMMMMMM@@DDBB%%4444II9944BBBB%%@@MMMM@@%%##44__::__**::::**____::__  `
MMMMMMMMMM@@@@QQMMMMMMMMMMMMMMMMMMMMMMMMMM@@QQ####@@@@__MMMMMMMMMMMMMMMMMMMMMMMM@@@@QQQQ@@!!MM%%DDQQ  ``++QQ::::::##MMMMMM@@MMMMMMMMMMMMMMMMMM##%%%%II8899((IIDD99II99BBBB@@MMMM88DDII__!!__--**!!::::::::__  `
MMMMMMMMMM##@@##@@MMMMMMMMMMMMMMMMMMMMMM@@@@##BB@@@@@@__MMMMMMMMMMMMMMMMMMMMMMMMMMMMQQBBMM##@@BB@@__++::%%QQ**__BBMMMMMM@@MMMMMMMMMMMMMM@@@@%%II11II99__88IIII::**IIII8888BB##@@QQDDBB::__::__::____**::::__  `
MMMMMMMMMMQQ@@QQ@@MMMMMMMMMMMMMMMM@@@@MMMM@@--##@@@@@@!!MMMMMMMMMMMM%%@@@@MM@@MM::@@@@BBBB@@BB@@**  ``++@@::::BB@@MMMMQQMMMMMMMM@@MMMM@@BB%%II448844**!!::::::::::____449988II%%BB##@@##II77::**::::::::::__  `
MMMMMMMMMMMM@@##MM@@MMMM@@@@@@@@MM@@MMMM@@QQ!!##MM@@##!!MMMMMMMMMM##``**MMMMMMMMMM@@MMMMMMBBQQ77``  __@@++__QQ@@@@MMQQMMMMMMMMMMMM@@%%BB88IIIIII88::::__::::::::**____::--88IIII88%%DD@@%%::::__::::::::::__  `
MMMMMMMMMMMM@@%%MM@@MM@@@@@@%%@@@@@@@@MM@@!!__##MMMM@@!!MMMMMMMMMMBBBBMMMMMMMMQQMMMM@@@@__@@##    ``QQ@@__QQ@@@@@@BBMMMMMMMMMMMMMM%%DDIIII888899__!!**--::::::::__::::____::::9999II99BB@@88__::::::::::::__  `
MMMMMMMMMMMMBBBB@@MMMMMM@@BBBB%%@@@@@@MM@@::__##MMMM@@##MMMMMMMMMMMM**MMMMMMMM@@MMMMMMMM``BB``__``##@@**BBBB@@%%QQMMMMMMMMMMMM@@%%BB99999988!!______::!!________!!__!!::!!++**__**++IIII99@@99__::::::::::__  `
MMMMMMMMMM@@##**@@MMMMMM@@BBBBBB@@MM@@@@%%!!::@@MM@@::@@MMMMMMMMMMMMMMMMMM**MMMMMMMMMMMM````BB::::@@**##QQ@@BB%%@@MMMMMMMMMM@@@@DD4499!!____::::::::::::::::::::::::::::::::::::!!**!!IIIIDDBBII!!::__::::__  `
MMMMMMMMMMMM##**MMMMMMMM@@%%%%BB%%@@MMMMQQ!!##MMMM@@QQMMMMMMMMMMMMMMMMMMMMMM@@MMMMMMMMMM77@@##**QQBB!!BBMM@@%%QQMMMMMMMMMMMM@@%%44II::**::::__::::::::::::::::::::::::::::::::::**!!**--::**IIBB::__::::::__  `
MMMMMMMMMMMM@@__MMMMMMMM@@%%%%BB%%@@MM@@BB%%@@MM@@@@##MMMMMMMMMMMMMMMMMMMMMM@@MMMMMMMMMMMMDD%%MM@@--##MM@@%%%%QQMMMMMMMMMMMM@@DD9988--::__::::__::::::::::::::::::::::::::::::::__::__::!!**!!99##__::::::__  `
MMMMMMMMMMMM@@**@@MMMMMM@@BBBBBB!!@@MMMMQQBBMMMMMMQQMMMMMMMMMMMMMMMMMMMM--MM@@MMMMMMMMMMMM@@@@@@::BB@@MMMM##BB@@MMMMMMMMMM@@%%%%44!!::**__::__**::::::::::::::::::::::::::::::::__::::**::__::::II99__!!::__  `
MMMMMMMMMMMMMM77@@MMMMMM@@%%##%%!!##MMMM@@@@@@MM@@QQMMMM``MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@@MM**%%%%MMMMMM##BBMMMMMMMMMMMM@@%%%%99__--::::::::__::::::::::::::::::::::::::::::::::____::::::::::__IIDD__::__  `
MMMMMMMMMMMM@@::MMMMMMMM@@BB%%##QQ##MMMMMMMM@@MMBBMM@@QQMMMMMM++MMMMMMMMMMMMMMMMMMMMMMMMMM**MM!!##MMMMMMMM%%QQMMMMMMMMMMMM@@BB%%88__**::::::::__::::::::::::::::::::::::::::::::::::____::::::::**!!44__::__  `
MMMMMMMMMMMMMM__MMMMMMMM@@%%BB##QQBBMMMMMMMMMM@@@@MMMMMMMMMM::##MMMMMMMMMMMMMMMMMMMMMMMMQQ@@QQ%%MMMMMMMMMM##@@MMMMMMMMMM@@@@BBII99--**!!__::::__::::::::::::::::::::::::::::::::__::::::__::::::!!**!!II::__  `
MMMMMMMM@@MMMMMM@@MMMMMM@@BB####BB::MMMMMMMMMM@@MMMMMMMMMM@@MMQQ@@MMMMMMMMMMMMMMMMMMMMMMMMBB@@MMMMMMMMMMMM##@@MMMMMMMMMMMM@@%%9988--__::__::::__________________::::::::::::::::::::::::::____::::__::::::__      
MMMMMMMMMMMMMMMM@@@@MMMMQQBB##QQQQ**QQ@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMBBMMMMMMMMMMMMMM##QQMMMMMMMMMM@@##%%4488::::__________________________________________________________::______::__`  
MMMMMMMMMMMMMMMM@@MMMMMMQQ####QQ@@!!##MM@@@@MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM@@##@@MMMMMMMMMM@@%%DDIIII__::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::____::--::

14

Re: Ahk: Рисуем символами

Если известно уравнение линии, можно выложить её мелкими буквами.
На любителя. Подходит для небольших схем и графиков.

; Пример построения синусоиды
#SingleInstance, Force
pi := 3.1415926535
Gui, Font, s1, Lucida console

 fr := 20    ; Качество изображения (от 10 до 50)
  w := 100    ; Ширина одного периода (в пикселях)
amp := 50    ; Амплитуда (в пикселях)
  n := 2    ; Число периодов

 x0 := 0    ; Начальные
 y0 := 100    ; координаты

a := 0
Loop, % fr*(n*2*pi)
{
b  := -amp*sin(a)+y0
a1 := a*w/(2*pi) + x0

a  := a + 1/fr
GUI, Add, text, x%a1% y%b%, | ; рисовать буквами
;Gui, Add, Picture, x%a1% y%b%, 1.bmp ; рисовать картинками
; GUI, Add, text, x%a1% y100, o ; изобразить горизонтальную ось
}
GUI, Show, h200 w300, Test - построение синусоиды

F12:: Exitapp

15

Re: Ahk: Рисуем символами

В AutoHotkey_L есть возможность сохранять в коде скрипта любые символы.

GUI, Font, s48, Lucida console
GUI, Add, Button, , &#9787;
GUI, Add, Button, xp+200, &#9786;
GUI, Show, , Choose your destiny

16

Re: Ahk: Рисуем символами

ypppu пишет:

В AutoHotkey_L есть возможность сохранять в коде скрипта любые символы.

Даже если скрипт сохранять в ANSI?

17

Re: Ahk: Рисуем символами

Да, нужно уточнить. Я использую "AutoHotkey_L Unicode x86 - recommended for new scripts". Соответственно, сохраняю файл скрипта в Юникоде.
Ещё существуют "AutoHotkey_L ANSI x86 - better compatibility with some older scripts" и "AutoHotkey_L Unicode x64 - for increased performance on 64-bit systems".

18

Re: Ahk: Рисуем символами

Я его же использую. В "AutoHotkey_L ANSI x86 - better compatibility with some older scripts" на обеих кнопках не то нули, не то буквы О.

19

Re: Ahk: Рисуем символами

YMP пишет:

Я его же использую.

Если его же, при этом сохраняя скрипт в Юникоде, тогда должно нормально отображаться.

20

Re: Ahk: Рисуем символами

Так всё и отображается нормально. Вообще сохранять выгоднее в UTF-8, т.к. английские буквы и цифры (т.е. практически весь код) кодируются там одним байтом, как и в ANSI. Размер файла скрипта получается меньше.