Сладимый
Услышал от одного человека на днях «вода тут
Судя по словарю Даля, слово действительно синоним «сладкому», «солодковатому», хотя некоторые другие словари определяют его значение как «услащаемый», «подслащиваемый». То есть «сладимая вода» — это «сладкая» или «послащённая».
Добавлено позднее: в фейсбуке один из комментаторов написал, что слышал в устной речи «слатимая», через «т». Я тоже услышал это слово через «т», но такой вариант в словарях не нашёл, поэтому подумал, что послышалось.
PythonFuck: разбор
Как я писал в конце прошлого года, есть такое развлечение — не используя
Получилась такая программа, работающая только из консоли интерпретатора и только под вторым «Пайтоном»:
_=(''<())+(''<());__=_**_**_
___='%'+('%'+`'±'`[_])%(__-_-_)
___*(_*_*_-_)%((
(__+_)*_*_,
`{_}`[_/_],
)+(`(''<'')`[_],)*_+\
(
__*_*_*_-__-_/_,
__*_+_/_,
))Пришло время разобрать как она работает. Я собирался сделать написать разбор через неделю после её написания, но заботы конца года не позволили.
С самого начала было очевидно, что в указанных ограничениях Пайтон не позволит вызвать
module, method = "__builtin__", "print"
vars(vars()[module])[method]("Hello")Есть варианты, но без использования букв — никак.
Так как в силу вышеизложенного функцию печати не вызовешь, пришлось довольствоваться выражением в консоли интерпретатора — там результат выводится на экран автоматически. В остальном, как будет видно ниже, удалось обойтись теми конструкциями, которые есть в языке.
Посмотрим в код. Первая строка:
_=(''<())+(''<());__=_**_**_Тут два разных выражения, разделённых точкой с запятой. В первом в скобках я дважды сравниваю строку и кортеж, получая два True. Второй Пайтон позволяет сравнивать разные встроенные типы, возвращая результат сравнения их названий, записанных как строки. Так как строка str меньше tuple, то результат — истина.
Два True в арифметической сумме дают двойку, неявно преобразовываясь к числу в этой операции. В принципе тут можно использовать унарный минус и тильду, но тогда мне это в голову не пришло:
_=-~(''<()) # число «2» можно получить и так тожеРезультат мы кладём в переменную с именем «подчёркивание». В той же строке мы получаем «16» возводя два в степень два в степени два, результат помещается в переменную «два подчёркивания».
Вторая строка:
___='%'+('%'+`'±'`[_])%(__-_-_)Тут используется символ «±», он
Этот символ вставлен внутрь конструкции «обратный апостроф», которая является во втором Пайтоне эквивалентом repr — функции, возвращающей строковое представление объекта, в данном случае это будет «'\\xc2\\xb1'». Нам отсюда нужен второй символ (нумерация с нуля) — «x». Цифра два для индекса у нас уже есть — в переменной _.
Дальше используется оператор «процент» — форматированный вывод. Полученное «x» используется как шаблон для «процента», чтобы преобразовать число в шестнадцатеричный вид. Из выражения __-_-_ (16−2−2) получаем «12» или, после преобразования, «c».
Вообще можно было обойтись без этого шага, получив эту же букву из строкового представления «±» («'\\xc2\\xb1'»), но в процессе продумывания я себе выписал ряд трюков и мне хотелось использовать их все.
В итоге, в переменную «три подчёркивания» попадает строка «%с», её мы будем использовать для оператора форматированного вывода («%»), чтобы получать символ по его коду.
Дальше символы получаются следующим образом:
(__+_)*_*_ # (16+2)*2*2 = 72, код символа «H», через шаблон «%c» получим отсюда букву
`{_}`[_/_] # первая часть даёт строку «set([2])», отсюда берём символ «e»
`(''<'')`[_]*_ # получаем строку «False», оттуда символ «l», удваиваем его умножением на два
__*_*_*_-__-_/_ # 16*2*2*2-16-2/2 = 111, код символа «о»
__*_+_/_ # 16*2+2/2 = 33, код символа «!»Не требующее преобразования оставляем как есть, а из кодов символы получаем шаблоном «%с». В результате складывается строка «Hello!».
Второй, а не третий Пайтон нужен, в основном,
Обновился на бету «Эгеи» версии 2.9
Илья выпустил новую бету «Эгеи» — движка блога, на который я переехал в позапрошлом году. Весьма волнительно было переезжать бету, но дело того стоило. Тем более, что наконец удалось избавиться ото всех костылей, которые пришлось навинтить, чтобы сохранить аватары пользователей, которые у меня были, когда блог работал на моём собственном движке.
До этого в базе в имени пользователя я хранил сериализованное значение, содержащее расширенную информацию о пользователе, а в шаблоне делал десериализацию и расширенный вывод, аватары при этом хранились снаружи — в облаке «Яндекса». Код новой «Эгеи» позволил завести поддельный провайдер авторизации и переложить аватары локально, на диск.
Разумеется, раз это бета, то могут быть баги, например. Я уже заметил, что блок «Избранное» не работает, как только Илья выпустит патч, сразу же накачу исправление. Патч выпущен, накатил новую версию, «Избранное» работает.
Из того, что изменилось кардинально с точки зрения пользователя — теперь есть возможность авторизовываться через социальные сети (я переезжал с очень старой версии, где их не было), это круто! Насколько я знаю, решили и проблему
Другая заметная вещь — «глаз». Около него пишется количество прочитавших заметку. Не знаю в точности что это значит, но занятная штука, пусть будет (она отключается). У меня посещаемость после борьбы с аудиторией упала на два порядка и теперь составляет примерно 800 человек в прыжке, более обычная цифра — около 400—500 в день.
Алфавит
Около Нового года многие подводят итоги. Я их подвожу в день рождения, поэтому в Новый год я завёл другую традицию — буду выкладывать небольшие признания. Ничего шокирующего, эпатировать читателей в мои планы не входит, просто
В школе, потом в техникуме и вузе иногда приходилось пользоваться бумажными словарями (интернет у меня появился только на втором курсе университета, а словари в интернете появились ещё позже), так что
В принципе, подумав, я могу вспомнить почти весь алфавит, вероятно
А как у вас? Знаете алфавит? Если да, то сможете перечислить его буквы задом наперёд?
1989—2019
На исходе 2019 года мне показалось очень символичным оцифровать и выложить сюда свой первый блог — «дневник жизни», который я начал вести 25 апреля 1989 года. Мне было 11 лет, я учится в 5Г классе средней школы №7 города Лениногорска. Получается как будто блогу в этом году 30 лет.
Дневник я начал с самого начала вести с расчётом на то, что его
В то время вокруг был СССР, дети ходили в кружки (офлайновые клубы по интересам), «отрабатывали» в школе (была такая обязательная трудовая повинность для школьников), ездили в колхозы (ещё один вид эксплуатации детского труда), сами мыли полы в школе, а родители делали ремонт в классах своими силами.
Школа для меня непростым и нелюбимым временем, мне, «сове», было трудно просыпаться к первому уроку, было неинтересно учиться, приходилось нередко очень жёстко драться (некоторые мои одноклассники получили нешуточные сотрясения мозга), из этих драк я никогда не выходил победителем.
За следующие тетради возьмусь нескоро — тонкие кончились, остались почти столистовые, некоторые из них содержат очень много рисунков и вклеек.
Салатница братьев Геннеберг
Почти две недели назад повезло отхватить интересную вещь — посеребрённую салатницу с клеймом братьев Геннеберг. Занимательно, что мимо неё, стоящей на табуретке, прошла толпа народу, включая нового хозяина помещения, но одному мне улыбнулась удача разглядеть в этой посудине дореволюционное происхождение.
Причина очевидна — на фотографии весь комплект в уже отмытом состоянии, а до того он был закопчённым, в проступившем
Мыл по распространённому рецепту — сначала прокипятил на фольге в воде с солью и содой, затем оттирал с использованием зубного порошка и уксусной кислоты.
Потратил несколько часов, вся грязь сошла, но повреждения никуда не делись, конечно — на фотографии видны проплешины
Я связался с профессором Давидом Никогосяном, по работам которого составлен клеймовник фабрики братьев Геннеберг. Он написал, что проплешины на таких изделиях — не редкость, так как при изготовлении старались экономить:
Это не медь, это сплав меди и цинка, называется бронза или латунь. Эти проплешины возникают всегда
из-за того что слой серебра всего 40—50 микрон и он стирается в часто используемых местах. Именноиз-за этого придумали напыление не на бронзу, а на сереброподобныймедь-никель-цинковый сплав, в этом случае стирание не столь заметно. Но этот сереброподобный сплав значительно дороже, и поэтому иногда его подменяют бронзой.
Клеймо, которое до чистки еле проглядывало, сейчас, после всех процедур читается почти идеально. На нём видны буквы «BM», номер изделия, основное клеймо фабрики и «герб» фирмы «Братья Геннеберг». Всё это позволяет отнести изделие к 1906 году. Вот ещё одна цитата из письма профессора:
Типичная русская (польская) халтура. Ведь они ставят штамп «В.М.», что означает белый металл (мельхиор, альпакка, нейзильбер), а в действительности используют обычную бронзу (без никеля!). «В.М.» содержит 10—15 % никеля. Эта вещь датируется 1906 годом. […] «28» к клейму не относится. Это обозначение детали.
Странно, что иногда в интернете братья Геннеберг упоминаются как Хеннеберг или Хённеберг. По всей видимости, это ошибка, так как
В последнее время задумываюсь — что делать со всеми этими предметами, которые начинают у меня копиться? Жена предложила заказать или купить готовый стеллаж, думаю это хороший выход, но пока
Дескрипторы файлов и PHP
На днях подошёл на работе один из программистов и спросил не знаю ли я способа как передать из ПХП во входной поток утилиты не один файл, а два. Когда мы разобрались, что он имеет ввиду, оказалось, что задача следующая: имеется утилита командной строки, которая делает PDF из двух файлов — тела и заголовочной части. Нужно работать с ней из ПХП, но создавать промежуточные файлы не хочется.
Один файл передаётся во входной поток, с этим многие знакомы и проблемы нет, но как передать два файла? В командной строке такой способ есть — создаём ещё один файловый дескриптор, связываем его с файлом или вводом/выводом
#!/bin/bash
# связываем третий дескриптор с чтением из указанного файла
exec 3< /etc/passwd
# связываем четвёртый со входом команды, которая будет писать в другой файл
exec 4> >(cat > /tmp/passwd)
# читаем из третьего дескриптора, пишем в четвёртый
cat <&3 >&4А можно ли так в ПХП? Документация к proc_open говорит, что да:
The file descriptor numbers are not limited to 0, 1 and 2 — you may specify any valid file descriptor number and it will be passed to the child process. This allows your script to interoperate with other scripts that run
as «co-processes».
Ну что же, давайте попробуем:
<?php
// заполняем первые три файловых дескриптора как обычно и,
// кое-что новое, — создаём ещё один
$ds = [
'stdin' => ['file', '/dev/null', 'r',],
'stdout' => ['pipe', 'w',],
'stderr' => ['file', '/dev/null', 'w',],
'stdnew' => ['pipe', 'r',],
];
// передаём наши дескрипторы команде 𝑐𝑎𝑡, специальный файл
// /𝑑𝑒𝑣/𝑓𝑑/3 связан с третьим (с нуля) дескриптором
$process = proc_open("cat /dev/fd/3", array_values($ds), $pipes);
// связываем дескрипторы с переменными, указанными в массиве $𝑑𝑠
// (пожалуйста не используйте 𝑒𝑥𝑡𝑟𝑎𝑐𝑡 без 𝑝ℎ𝑝𝑑𝑜𝑐 в своём коде)
extract(array_combine(array_intersect_key(array_keys($ds), $pipes), $pipes));
// пишем в наш новый дескриптор
fwrite($stdnew, "Hello world!\n");
fclose($stdnew);
// читаем из вывода переданное
fpassthru($stdout);
fclose($stdout);
proc_close($process);Всё работает! Фраза, переданная на такой не совсем стандартный вход, благополучно выводится на экран.
Должен сразу сказать — не все утилиты командной строки умеют работать таким образом, некоторые требуют указания настоящего файла, не знаю из каких соображений. Но с большинством это сделать получится.
Сломал третий «Макбук»
Не знаю, что со мной такое, то ли «Маки» хлипкие пошли, то ли я
Поехал в сервис, отдал крышку, срок ремонта — около двух недель. Работаю пока на нижней части и мониторе, даже не знал, что так можно. Если у вас та же беда, возьмите на заметку, хоть
В одном из чатов бывших коллег с прошлой работы уже пошутили, что пользуясь полосой в верхней части клавиатуры, где тачбар (TouchBar), можно обойтись и без монитора — однострочники писать, например. Ну хоть
Чтобы закончить на позитивной ноте, попробую найти
Новости майнинга ★
В субботу был на малой родине, у нас была встреча выпускников техникума, с большинством ребят мы не виделись почти 24 года. Заново познакомились, рассказали кто чем занимается, вспомнили разные случаи из учёбы.
На очередном перекуре один из бывших одногруппников — А. А. упомянул, что занимается ремонтом майнинговых ферм на «айсиках» (специализированных процессорах для «майнинга»). «Майнингом» сейчас называют задачу по вычислению «криптовалюты» — своеобразных электронных денег.
Меня это заинтересовало, ведь насколько я знаю, «майнить» сейчас невыгодно — стоимость затраченного электричества оказывается выше стоимости добытой криптовалюты.
Оказалось, с этим научились справляться. Дело в том, что большинство крупных предприятий закупает определённое количество электричества оптом. Если потратить слишком мало, закупочная цена в будущем вырастет. Поэтому предприятию выгодно
Другой способ — генерируемое электричество из сжигаемого газа. Моя малая родина находится в нефтяном районе, а нефти часто сопутствует газ. Возможно есть
Хотя… По дороге на встречу я видел несколько газовых факелов — две или три штуки. Кажется они горели и два года назад, в мою прошлую поездку в этом направлении. Возможно просто так совпало и оба раза я проезжал мимо, когда делали аварийный сброс или проводили
210 минут флоатинга
Летом попробовал флоатинг — разновидность сенсорной депривации, где в тишине, темноте и солёной воде люди пытаются получить интересные впечатления. Мои цели тогда были — испытать подобие невесомости и попытаться полностью расслабить тело. Есть ощущение, что я всё время сжат, напряжён и хотелось посмотреть получиться ли на флоатинге это изменить.
В прошлый раз ходил на час и покинул камеру с небольшим разочарованием — мне показалось, что не хватило совсем
Очень кстати на день рождения жена подарила сертификат на четыре часа и, чтобы наверняка
Сразу скажу — ничего приятного испытать не удалось. Расслабиться так и не смог, под конец стало невыносимо скучно, а когда выходил из камеры, почувствовал, насколько всё затекло — в области коленей были даже
Наверное несколько раз я либо засыпал, либо проваливался в некое беспамятство — было чувство, что времени прошло гораздо меньше, чем фактически. Как бы то ни было, три с половиной часа безделья пережились проще, чем ожидалось.
Опыт повторять больше не буду, хватит — по всей видимости мне просто недоступны те ощущения, за которыми люди идут на флоатинг.
Скрытая съёмка
Вокруг всё больше видимых камер, я
С тех пор у меня идефикс — поиграть в шпиона и найти такую камеру при помощи телефона, ведь его камера неплохо видит инфракрасный свет. Единственное — не было понятно на какую яркость ориентироваться.
Вспомнил, что у дочки в комнате стоит камера видеоняни, попробовал. На фото видно, что подсветка очень слабая, такую можно будет найти только в полной темноте. Пока ни на одну не наткнулся, включая помещения, где декларируется, что «вас снимает скрытая камера».
Немного о неточности регистрации событий
Когда только начинаешь заниматься составлением своего родового дерева, очень пугают неточности в архивных бумагах — записях о рождении, браке, смерти. Находишь своих предков, а в другом документе, который на десять лет старше, возраст не бьётся. Беспокоишься — как же так? Может это другие люди? Не может же быть таких ошибок в официальных записях?
Может, ещё как. При регистрации путали похожие имена (Мария, Марина), возраст смерти нередко писали «на глазок» (люди и сами точно не знали сколько им лет, родственники тем более), а иногда на бумаге трудно было корректно отделить одного члена семьи от другого (я встречал семьи, где было три Ивана — отец и два сына, все живые на время записи).
Цитата из свежепрочитанной книги на тему того как просто обходились с регистрацией браков, рождений и смертей в одном из советских сёл Осетии:
Не только регистрации детей, но и свидетельства о смерти выписывались нужным числом, а не по самому факту. Если так было удобно родственникам, то как можно им отказать? […]
В селе факт официальной регистрации не считался значимым документом. Важнее этой бумажки было объявление в газете, сам факт торжества и свидетельства родственников. В ЗАГС вообще молодые могли не прийти, поскольку сто пятьдесят свидетелей, гулявших на свадьбе, с легкостью могли подтвердить законность союза. Опять же, если старейшины села говорили, что брак был, то это считалось железобетонным доказательством, как сейчас — анализ ДНК. Если старейшины сомневались и не могли припомнить, сколько баранов было зарезано на ту свадьбу, то тут ни один официальный орган не доказал бы законность брака.
— Маша Трауб «Моя бабушка — Лермонтов»
Чекап. Итог
До чекапа я очень тревожился, что у меня
Более материальный результат — два рентгеновских снимка, один МРТ и пухлый отчёт о сорока страницах о всех взятых у меня анализах с четырьмя блоками назначенных лечений, коррекцией к тренировкам, рекомендацией по питанию и изменению веса.
Ещё придётся отдельно посетить отоларинголога (в МКДЦ, где я лежал, его просто нет) и травматолога с физиотерапевтом (их в трёхдневный чекап вместить не удалось).
Большой неожиданностью оказалось, что моё сильное падение с велосипеда четыре года назад, при поездке в Иннополис (на скорости занесло по мокрому песку), привело к воспалению, которое требует немедленного лечения, иначе дело может кончится неизлечимым изменением в плечевом суставе.
Займусь этим безотлагательно.
Вес сказали не менять
Чтобы закончить
Ложка Хаима Грюна
Несколько дней назад я писал про найденную в заброшенном доме ложку, в надежде, что
Помощь подоспела неожиданно быстро, один из читателей, не испорченный гипотезой неполностью прочитанного клейма, просто погуглил то, что удалось прочитать. Оказалось, что то, что я принял за нечитаемую часть — начало следующей надписи.
По итогу, ложка оказалась польского производителя еврейского происхождения Хаима Грюна (Chaim Grün); бесполезный штришок — фамилия переводится как «зелёный», «свежий», «сырой» со средневерхненемецкого языка.
Компания Грюна базировалась в Варшаве, была очень маленькой (либо просуществовала недолго) и выпускала различные столовые приборы. Последние два предположения можно сделать, изучая номенклатуру и объём найденного гуглением по этому клейму.
Я больше склоняюсь к версии о недолгом существовании — на «Мешке» находится подстаканник с двойным клеймом — Грюна и Шифферса, возможно Шифферс купил компанию Грюна, поэтому грюновских изделий так мало находится в интернете.
Возвращаясь к теории о неполном прочтении, то, что я принял за остаток надписи — цифры, кажется там «77», так обычно обозначают количество серебра в граммах, которое ушло на гальванопокрытие всего столового набора (ложки и вилки на дюжину персон).
Чекап. Второй день
В комментариях и в личке задали несколько вопросов, хочу на них ответить.
В уборной — раковина, унитаз, душевая кабина, полный гигиенический комплект — всякие там бритвы, мыльца, шампуни, три полотенца, зубная щётка и паста. Очень похоже на номер в нормальном отеле. Специфика больницы — в душе есть откидной стульчик, около унитаза — поручень и сигнальный шнурок для персонала.
Что не нравится — так это определённая врачебная специфика. Думаю, у врачей несколько упрощённое понимание приватности. Палата запирается на электронный замок, карточка любого сотрудника её отпирает, поэтому они просто стучат и сразу заходят. Меня это покоробило. Я не лежачий больной и мало ли в каком я виде.
Поэтому я взял столик для еды, вытянул его как можно выше (он регулируется по высоте) и подложил местный ноутбук. Как раз хватило подпереть ручку.
Спрашивали ещё про оборудование и врачей. На вид всё новое, врачи вежливые. Я бы сказал, что исследования более глубокие, чем во многих других клиниках города. Квалификация очень высокая — даже мазок из уретры взяли почти без боли, мужчины меня поймут. ФГДС («глотать кишку») сделали под наркозом, я вообще ничего не почувствовал и уже через 15 минут после процедуры был на ногах.
По врачам и процедурам водит закреплённая медсестра. Без неё я бы тут блуждал вечность — около семи корпусов, соединённых переходами, ориентироваться очень сложно.
Что немного странно — взяли очень много крови, за вчера и сегодня — больше 10 пробирок, завтра, вроде, ещё должны брать, но на мониторе распорядка дня этого
Чекап. Первый день
У меня нет в планах описывать каждый день чекапа, но сегодняшний я кратко зафиксирую, чтобы примерно дать понять на что это похоже.
Прийти меня попросили к 10:30, очень долго регистрировали, потом была неспешная беседа на предмет жалоб, и я уже было настроился на очень невысокий темп.
Оказалось зря, потом как на карусели. Анализов было столько, что у меня события путаются, я только и успевал ходить из кабинета в кабинет, почти без остановки. Помню, что были консультации с несколькими врачами, забрали восемь пробирок крови, провели узи всевозможных органов в пяти, кажется, разных кабинетах (было даже узи
В принципе, рутина, ничего интересного, только сильно хотелось есть — много анализов делают натощак, так что в первый раз я поел только в половину второго.
Чекап бывает амбулаторный и стационарный, в первом варианте можно ходить домой, во втором больницу не покидаешь. У меня второй вариант. Когда планируется столько анализов, как у меня, опций нет, только стационар.
В больнице, где я ныне пребываю, проходящему чекап выделяют отдельную унылую палату категории «чистенько» — 14 м², минимум удобств, довольно тоскливо. Поэтому я добавил денег и лежу
Завтра будет веселее — врачи, анализы, опять не есть до обеда, плюс процедура, которою в народе называют «глотать кишку». У меня это будет впервые и, учитывая мой повышенный рвотный рефлекс, вероятно будет что хотеть забыть. Первый анализ уже в 6:30 утра, так что надо бы ложиться спать.
Всем сладких снов!
Чекап
Не сказать, что я отличаюсь богатырским здоровьем, но в этом году аномально много и часто тяжело болею, особенно запомнился май, когда было совсем худо. Решил пройти процедуру так называемого «чекапа»
Ложка
Несколько недель назад обследовал одну заброшку (с ведома родственника её хозяина). Находок немного, одна из них — протёртая ложка, с которой почти облезла гальванизация. На черенке частично уцелели надписи, но полностью разобрать не удаётся.
Я развлекаюсь наблюдениями. Обращали ли вы внимание на то, что соль спадает с кончика ножа, не оставляя никаких следов, — нож блещет, как нетронутый; что пенсне переезжает переносицу, как велосипед; что человека окружают маленькие надписи, разбредшийся муравейник маленьких надписей: на вилках, ложках, тарелках, оправе пенсне, пуговицах, карандашах? Никто не замечает их. Они ведут борьбу за существование. Переходят из вида в вид, вплоть до громадных вывесочных букв! Они восстают — класс против класса: буквы табличек с названиями улиц воюют с буквами афиш.
— Юрий Олеша. «Зависть» (1927)
Надписи в таком плохом состоянии, что пришлось их разглядывать через небольшой микроскоп, специально покупал на такой случай.
Удалось разглядеть «BM» («Bialy Мetal», «белый металл») — в интернете пишут, что так обозначали мельхиор, «GALW.» («GALWANIZACJA», «гальванизация») — один металл покрыт другим методом гальванизации, «N» в шестиугольнике («Normal», «нормальный») — покрытие нормальной толщины и начало надписи «CH. GRUN…», дальше не разобрать, думаю это производитель.
Нагуглить
«Судьба человека» (1959)
Очень часто в американских фильмах герои с интересом и ностальгией смотрят по телевизору
Сегодня с женой посмотрели, пока дочка спала.
На этой сцене плакал. Вообще не думаю, что есть вообще человек, который бы сумел сдержаться. Фильм, конечно, депрессивный, но очень сильный и с настоящей игрой актёров, подустал уже от пластиковых кинокомиксов.
Планирую продолжить такое смотреть. Следующим возьму «Отец солдата» (1964), если можете
PythonFuck ★
Давайте вспомним, что у меня блог ещё и про программирование.
Есть такое развлечение — не используя
Для некоторых языков такого ещё никто не делал, приходится изобретать собственные приёмы, в конечном счете это интереснее всего. Я уже делал PHPFuck, BashFuck (и даже не один раз) и совмещал JavaScriptFuck с языком программирования Brainfuck.
Как правило ещё стараются использовать как можно меньше различных символов, но я этим не заморачиваюсь, мне гораздо интереснее соблюсти запрет на буквы и цифры.
Долго мне казалось, что с Пайтоном ничего такого не сделать и я даже пытался, но не получилось. А вчера, пока делал для студентов
_=(''<())+(''<());__=_**_**_
___='%'+('%'+`'±'`[_])%(__-_-_)
___*(_*_*_-_)%((
(__+_)*_*_,
`{_}`[_/_],
)+(`(''<'')`[_],)*_+\
(
__*_*_*_-__-_/_,
__*_+_/_,
))Это запускается и работает (выводит строку «Hello!»), но только из командной строки и только во второй версии Пайтона. Когда напишу небольшой разбор кода, станет понятным почему.