МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ
Четверг, 25.04.2024, 15:31
ГлавнаяРегистрацияВход Приветствую Вас Гость | RSS

Меню сайта

Наш опрос
Какой язык программирования Вы изучаете
Всего ответов: 1027

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа


Главная » 2014 » Ноябрь » 5 » С днем программиста с хабра
23:23
С днем программиста с хабра

Необычные поздравления с днем программиста

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



— А ведь и правда день программиста, — спохватилась я за два часа до его наступления (в основном благодаря этому топику). Потом представила себе завтрашние поздравления — «С праздничком», «С днем программиста», «Поздравляю, коллеги»… Скучно. И душа запросила чего-нибудь эдакого, профессионального, с огоньком!

В этой статье я хочу предложить несколько способов представить любое банальное поздравление в необычном виде в полном соответствии с нашей профессией и названием блога. Большинство языков работают только с латиницей, так что будем либо желать «Happy Programmers' Day!», либо (для самых неудобоваримых языков) просто говорить «congrats».

Способ 1. Классический


Когда речь заходит о ненормальном программировании, первое, что приходит в голову — бессмертный Brainf*ck. Язык удобен сразу по нескольким причинам:
— сравнительная известность среди прочих эзотерических языков;
— изобилие интерпретаторов языка, включая онлайновые — многие из эзотерических языков имеют один-два интерпретатора, требующих отдельных усилий по их установке, компиляции и запуску;
— простота и многовариантность кодирования текстовых сообщений;
— игнорирование любых символов исходного кода программы, не являющихся командами, что позволяет форматировать код как угодно, маскировать его под ASCII-art или рамочки вокруг другого текста и т.д.

Итак, самый простой «Happy Programmers' Day!» (без циклов) на Brainf*ck выглядит вот так:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++++++++++++++++++++++.
+++++++++++++++..
+++++++++.
>++++++++++++++++++++++++++++++++.
<-----------------------------------------.
++++++++++++++++++++++++++++++++++.
---.
--------.
+++++++++++.
-----------------.
++++++++++++..
--------.
+++++++++++++.
+.
>>+++++++++++++++++++++++++++++++++++++++.
<.
<-----------------------------------------------.
+++++++++++++++++++++++++++++.
++++++++++++++++++++++++.
>>------.



В таком виде это неинтересно, так что можно поиграться с построением из этого кода ASCII-арта. Например, вот так:
 

+++ +++ +++ +++++++++ +++++++++ +++ +++ +++ +++ +++++++++ +++++++++
+++ +++ +++ +++ +++ .++ +++ +++ +++ +++ +++ +++ +++ ++. +++ +++ +++ +++
+++ ..+ +++ +++ ++. >++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ .<- ---
---------- ----------- --------- -------.+ +++++++++++ ++++++++++ +++++++++++ +.---.--- -----.+++ 
++++++++.- ----------- -----.+++ +++++++++ ..--------. ++++++++++ +++.+.>>+++ +++++++++ +++++++++ 
+++ +++ +++ +++ +++ +++ .<. <-- --- --- --- --- --- --- --- --- --- --- 
--- --- --- --- --- .++ +++ +++ +++ +++ +++ +++ +++ +++ +++ .++ +++ +++
+++ +++ +++ +++ ++++.>>-- --- -.- +++ +++ +++ +++ +++ +++ +++++++++ +++ +++



Кстати, на менее известном, но популярном среди знатоков и изобретателей эзотерических языков Befunge вывод текстового сообщения может делаться многими способами, но самый простой из них слишком очевиден, чтобы быть занятным: символы сообщения указаны в явном виде, просто в обратном порядке, и окружены служебными символами.

0"!yaD 'sremmargorP yppaH">,:#<_@


 

Способ 2. Драматический


Популярный в качестве поздравлялок художественные произведения разного формата: стихи, сказки, да на что времени и фантазии хватит :-)

Лучше всего для реализации этого способа подходит язык программирования Shakespeare, в котором программа представлена в виде пьесы, переменные — героев Шекспира, числовые константы — художественных описаний, а программист… ну, драматургом он может и не быть, но литературный английский знать обязан! Потому что чем обширнее и цветистее набор прилагательных при существительном, тем большее число оно обозначает, а действия оформляются как монологи героев-переменных. Вывод сообщения «congrats» на этом языке выглядит примерно так:
 

The Shakespeare-Style Congratulations

Ariel, the genie to store values of o,n,r,t,s
Kaliban, the ugly creature to store values of c, g, a
Prospero, the hero to operate on them

Act I.
Scene I.

[Enter Prospero and Ariel]

Prospero: 
 You peaceful mighty proud handsome white-winged overwieght overpraised overnamed angel! 
 You are as good as the difference between you and an ill naughty crying ungerage child!

[Exit Ariel]
[Enter Kaliban]

Prospero:
 You are as ugly as the difference between Ariel and sum of his white fluffy wings and his bored smile! 
 Speak your mind!

[Exit Kaliban]
[Enter Ariel]

Prospero:
 Speak your mind. 
 You are as worried as the sum of you and a spider! 
 Speak your mind!

[Exit Ariel]
[Enter Kaliban]

Prospero:
 You are as disgusting as the sum of you and a drunken vomiting idiot. 
 Speak your mind!

[Exit Kaliban]
[Enter Ariel]

Prospero:
 You as as sweet as the sum of you and reddest royal roses. 
 Speak your mind.

[Exit Ariel]
[Enter Kaliban]

Prospero:
 You are as silent as the difference between you and the sum of your dirty feet and your unkept greasy hair.
 Speak your mind!

[Exit Kaliban]
[Enter Ariel]

Prospero:
 You are as prominent as the sum of you and a sparkling diamond.
 Speak your mind.
 You are as lovely as the sum of you and a guinnea-pig.
 Speak your mind!

[Exit Ariel]

Prospero:
 What the hell is wrong about these guys walking here and there in silence?

[Exit Prospero]


 

Способ 3. Магический



Если вы хотите удивить коллегу, покажите ему профессиональный фокус, например, такой. Запустите shell (например, Bash) и наберите следующую команду:
 

echo 1774767685848640863781394195195183398747095833456108183818P | dc



Неожиданный результат, правда? Это так называемая dc-магия, несложная, но тем не менее не очевидная. dc — это Desktop Calculator, инструмент, позволяющий работать с числами произвольной точности. В данном случае команда P (последний символ перед |) выводит на печать предшествующее ему число, но (внимание, сам фокус) как строку. Для этого число переводится в шестнадцатеричный формат:

0x48617070792050726F6772616D6D6572732720446179210A


разбивается на пары цифр, и вместо каждой пары цифр на печать выводится символ с соответствующим ASCII-кодом.
 

Способ 4. Шпионский



Для людей, у которых нет принтера, тоже есть свой язык программирования — Whitespace. Примечателен тем, что пустой листок бумаги, полученный от программиста на Whitespace, может означать все что угодно — от признания в любви до вызова на дуэль. На этом чудном языке смысл имеют не видимые символы, а промежутки между ними — невидимые символы пробел, табуляция и перенос строки. Таким образом, программа без комментариев выглядит как пустой документ, а на печати — как чистый лист.

Ниже приведена программа вывода «congrats» на печать, в которой (во избежание проблем с парсером) пробелы заменены на S, а табуляции — на T. Фигурные скобки означают начало и конец числа (для читабельности), последняя точка указывает на три перевода строки в конце кода.
 

SS{STTSSSTT}
T
SSSS{STTSTTTT}
T
SSSS{STTSTTTS}
T
SSSS{STTSSTTT}
T
SSSS{STTTSSTS}
T
SSSS{STTSSSST}
T
SSSS{STTTSTSS}
T
SSSS{STTTSSTT}
T
SSSS{STSTS}
T
SS


.


 

Способ 5. Декоративный



Наконец, существует масса способов оформить поздравление в виде картинки — вот лишь два из них.

qrcode
Happy Programmers' Day в виде QR-кода

Brainloller
Happy Programmers' Day на Brainloller

А какие интересные и необычные способы записи короткого текста знаете вы?

Просмотров: 1002 | Добавил: i_elf | Рейтинг: 0.0/0
Всего комментариев: 0
Поиск

Календарь
«  Ноябрь 2014  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930

Архив записей

Друзья сайта
  • Творческий учитель
  • Сайт ООАКМР
  • Школьный сайт
  • Информатика учебник
  • МОИ

  • Copyright MyCorp © 2024 Сделать бесплатный сайт с uCoz