=()= / Говнокод #26005 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
use Unicornify::URL;
 
my $url = unicornify_url( email => '<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="abc7cad9d9d2ebdccac7c785c4d9cc">[email protected]</a>' );

https://metacpan.org/pod/Unicornify::URL

Запостил: PACTPOBblu_nemyx PACTPOBblu_nemyx, (Updated )

Комментарии (78) RSS

    • Это иллюзия. О форсе «Перла» говорить рано. Имею подозрение, что здесь мало кто умеет жонглировать контекстом (@, $ — вот это всё). Даже в «PHP», несмотря на то, что поначалу синтаксис был немножко похож на «Перл», самые вкусности тащить не стали.

      Попробуй опубликовать подборку программ, в которых особенности «Перла» позволяют лаконично решить задачу.
      Ответить
        • Прикольно. Dummy00001 можно смело нанимать адвокатом. Он защитит любое прыщеговно из прошлого века. Я помню, как он защищал некокококонсистентность сишки.
          Ответить
          • На самом деле перл просто стал использоваться не теми людьми и не для тех задач.

            В перле огромное количество идиом из awk, sed, vi (точнее в vi и sed они из ed) и sh, потому прыщебляди командлайновой он прост и понятен, а когда на нем пришли делать сайты люди, которые пользовались win98 и писали на паскале до этого, то у них начал глаз дергаться от синтаксиа.

            почему
            $foo =~tr/abc/xyz/;

            потому что
            $ tr -s "abc" "xyz"

            почему
            $foo =~s/A+/A/gi;

            потому что
            $ sed "s/A+/A/gi"

            Почему $1?
            потому что в shell и awk $1.
            Почему
            BEGIN {
            print "foo";
            }

            Потому что
            $ awk 'BEGIN{print "foo"}'

            итд
            Ответить
      • Пи умеет, дамми, санта-микробе, элвинфайтер..
        На самом деле ничего сложного.

        Есть три типа данных:
        * Скаляр
        * Массив
        * Хеш

        О скаляре можно всегда думать, как о строке (типа нет даже в рантайме).
        У каждого типа свой неймспейс (как у структов в сях), тип задается по сиглу.

        my $name; # скаляр
        my @users; # массив
        my %data; # хеш


        Казалось бы, обращаться к элементу массива нужно бы так
        @users[42];
        но! В массиве и хеше могут лежать только скаляры, и обращаясь к конкретному элементу мы обращаемся к скаляру, ведь элемент скаляр.

        потому мы пишем
        $users[42];

        "$" означает как-бы "артикль единственного числа", а "@" -- артикль множественного.

        @foo = @bar; #скопировать массив
        print $foo[32]; # напечатать его элемент

        важно что
        $foo
        и $foo[32] находятся в разных немспейсах.

        Массив можно инициализировать конструкцией языка -- списокм
        @users = ("foo", "bar");

        Любое выражение может иметь разное значение в зависимости от контекста (их два -- списковый и скалярный) так же как слово "часы" может означать часы на стене или часы как время.

        При присваивании lvalue выбирает контекст.

        список в скалярном контексте возвращает последний элемент
        $foo = ("A", "B", "C"); # будет "C"
        а в списковом -- заполняет массив
        @foo =("A", "B", "C");

        Массив в скалярномконтексте возвращает размер
        $foo = @foo; #3, как размер массива.

        идиома
        if (@foo) #выполнится если массив не пустой так как 0 означает false)
        print @foo; # выведет массив склеив его
        зафорсить контекст можно так:
        print scalar @foo; #выведет 5

        Оператор <> получает дескриптор файла и в скалярномконтексте считывает одну строку, а в списковом -- массив

        @foo = <STDIN>;
        но
        while (my $foo = <STDIN>) {
        print $foo;
        }

        Почти все операторы по разному ведут себя в скалярном и списковом контексте
        Ответить
        • Так как в массиве можно хранить только скаляры, то для помещения массива в массив нужна ссылка (ссылка тоже скаляр)

          $arrRef = \@foo;
          @bar = (42, $arrRef);

          разыменовывают ссылку так:
          @foo = @{$arrRef};
          Косвенно обращаются к элементу так
          $arrRef->[42] #как в си.

          можно сразу создать анонимный массив и получить на него ссылку. нужны квадратные скобки
          $arrRef = [1,2,3,4,5];

          Есть еще вивификация: при обращении к Undef переменной как к ссылке намассив он создается
          my $arrRef;
          $arrRef->[13] ='a';

          Хеш работает аналогично, узнавание о нем оставлю тебе вкачестве домашней работы
          Ответить
        • >> О скаляре можно всегда думать, как о строке (типа нет даже в рантайме).

          Смотрел исходники. Тип есть, но он недоступен простым смертным. API для доступа к типу отсутствует напрочь. Интерпретатор сам выбирает, в ячейку какого типа сохранить значение, и сам на лету конвертирует при извлечении.

          Так что да, проще думать, как о строке, которая может автоматически сконвертироваться в число, если встретится выражение с арифметическими операторами.
          Ответить
          • Думать как "о строке" правильно еще и потому, что нет перегрузок операторов.

            В python есть явное знание о типе переменной
            name * 19 # много раз позвать
            iq * 10 # приувеличить iq


            В перле так нельзя, потому операторы там разные: * и x.
            И для кокатенации: . и +
            И для сравнения (как в ш, только наборот)

            $iq == $iq;
            $name eq $name;

            Это отличается и от JS, где хоть тип и есть, но он может неявно приводиться (в питоне не может, а в перле и типа-то как бы нет, как в sh)

            В общем как в lua есть один нескалярный тип -- табла
            так и в перле есть один скалярный тип
            Ответить
          • хорошая фраза, чтобы понять котекст

            In computer lingo, the functions are overloaded on the type of their return value.


            в .NET есть тоже такая перегрузка, но C# внее не может
            Ответить
            • Есть еще такой прикол.

              Оператор <FILE> в скалярном котексте возврашает следующую строку, а в списоковом --массив.

              Мы хотим получить количество строк в файле.

              если мы напишем так
              open(F, "<", q/c:\temp\1.txt/);
              my $foo = <F>;

              то $foo зафорсит скалярный контекст, и получит первую строчку из файла.

              Конечно, можно сказать так
              my @foo = <F>; # @foo форсит списковый контекст и получает файл в массив
              my $foo = @foo; # $foo форсит скалярный и получает размер массива

              но хочется меньше буков.
              То-есть нам нужно
              * сфорсить списковый контекст
              * а затем сфорсить скалячрный

              Для этого есть оператор goatse. Правому операнду он обеспечивает списковый контекст, затем результату форсит скалярный
              my $foo =()= <F>;

              на самом деле левая "=" тут это часть оператора присваивания, можно сказать так
              print scalar(()=<F>); #()= форсит списковый , а scalar форсит скалярный


              Можно так же воспользоваться тем, что оператор анонимного массива [] форсит списковый контекст для всех своих операторов, и схлопывает их
              my @arr = (1,2,3);
              my $arrRef = ['a', @arr];
              # arrRef ссылка на массив ['a',1,2,3]


              так что можно скзаать так
              print scalar @{[<F>]}; 
              # создать ссылку на анонимный массив, 
              # вылить в тот массив  <F>, 
              # разыменовать и зафорсить скаляр


              и так, получение количества строк в файле в перле
              open(F, "<", q/c:\temp\1.txt/);
              my $lines = @{[ <F> ]};

              либо так
              open(F, "<", q/c:\temp\1.txt/);
              my $lines =()=<F>;
              Ответить
              • но есть так же волшебная переменная "$." которая увеличивается с каждым чтением из дескртиптора, так что можно и не грузить массив в память:
                open(F, "<", q/c:\temp\1.txt/);
                while (<F>) {}; # дочитать до конца неявно крутя эту переменную, while это скалярный контекст
                print($.);


                Такой вот чудесный язык. Для такой простой задачи три способа, один другого лучше.
                Ответить
                • А что происходит с переменной «$.», если у нас несколько одновременно открытых файлов?
                  Ответить
                  • возвращает резульат последнего чтения из файлового дескриптора
                    use strict;
                    use warnings;
                    
                    my @files;
                    open $files[@files], '<', "$_" or die $! foreach qw(1.txt 2.txt);
                    
                    for (1..2) {
                       print scalar <$_>, ' -- ', $., "\n" foreach (@files);
                    }


                    file_1_line_1
                     -- 1
                    file_2_line_1
                     -- 1
                    file_1_line_2
                     -- 2
                    file_2_line_2
                     -- 2
                    Ответить
                    • Ну то есть эту переменную нужно использовать СРАЗУ после файловой операции, примерно как SELECT LAST_INSERT_ID(), пока значение не затёрлось другой операцией?
                      Ответить
                      • да
                        как и $! (ошибка последней операции)
                        как и $? в шеле
                        как и %ERRORLEVEL% сам знаеш где
                        как и errno
                        вот это всё
                        Ответить
      • вырезание комментов
        c:\temp>type 1.c
        #include<stdio.h>
        
        /**
        This is my app
        
        
        me cool
        **/
        
        void main(){}
        
        c:\temp>type 1.c | perl -e "while(<>){print unless /\/\*/../\*\//}";
        #include<stdio.h>
        
        
        void main(){}

        например
        Ответить
      • > жонглировать контекстом (@, $ — вот это всё). Д

        О сигилах можно думать, как об артиклях: Ларри же лингвист,

        Если ты говоришь о скаляре, то ты скажешь "$"
        Если о массиве -- @
        Хеш будет %
        Функция &, но в современном языке уже можно опускать
        Если ты говоришь обо всем сразу, то *, но в этом часто путаются даже нативщики, так что забей.


        Нужно только помнить, что ссылка это скаляр, на что бы она ни указывала (точно так же, как в C/C++/C# поинтер и/или референс всегда просто небольшое число, и всегда одного размера, в независимости от того, на что оно указывает).

        @petoohs -- массив петухов
        $petoohs[1] -- конкретное значение в массиве (это всегда скаляр, в массиве только скаляры могут храниться

        my $hashRef = \%petuhsToKurochkas; # ссылка на хеш петухов на курочек.

        При этом хеши и массивы -- типы списковые, а скаляр это скаляр.
        Cписковые типы имеют внутри список (причем список можно представить как хеш (k,v,k,v) а можно как массив.

        Возвращаемое значение функции зависит от контекста (то есть от того, что я прошу ее вернуть): скалярного или списковово.

        $petuhs = get_petuhs(); #я прошу функцию вернуть скаляр
        @petuhs =get_petuhs(); # прошу массив

        Всё просто же
        Ответить
    • Кстати, возникла идея для первого апреля: на сайте поменять URL аватарок с gravatar.com на unicornify.pictures.
      Ответить
      • Можно просто добавить как дефолт к граватару.
        Ответить
    • А помнишь, что для генерации шрифтов для «ТеХа» Дональд Кнут придумал специальный язык «METAFONT»? Язык с паскалеподобным синтаксисом, на котором можно писать и императивно, и декларативно. В нём есть императивный оператор присвоения := и декларативный оператор «приравнивания» =. В последнем случае интерпретатор для нахождения значений неизвестных переменный решает уравнение, даже нелинейное, и даже систему. Кривые Безье там чуть ли не из коробки.

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

      Так вот «METAFONT» форкнули и написали «METAPOST», который на выходе генерирует не растровый шрифт, а векторную картинку на языке «Postscript».

      Мне кажется, «METAPOST» неплохо бы подошёл для вореций аватарок. Описываем контур петуха, а потом меняем некоторые параметры и получаем пачку картинок.
      Ответить
  • Спойлер для тех, у кого нет доступа к «Перлу» или к «CPAN»: некто по адресу https://unicornify.pictures/ ( http://unicornify.appspot.com/ ) поднял сервис, альтернативный «Граватару»: по переданному хэшу он генерирует картинку пони.

    Например, исходный адрес моей картинки:
    https://gravatar.com/avatar/43609ded576a8abf167f193618a45cd1
    Заменяем точку входа на «Unicornify»:
    https://unicornify.pictures/avatar/43609ded576a8abf167f193618a45cd1?s=128

    К сожалению, сервис не умеет генерировать єдинорігів крупнее, чем 128×128.
    Ответить
    • Awk, Forth, Eiffel, ML, APL, Haskell — это они серьёзно? Ещё язык для принтеров и язык для описания диаграмм в этот список включили.
      Ответить
      • Кстати, давайте програмировать на авке

        найти всех живых узеров на машине
        BEGIN {
        	times = 10;
        	while (times--) printf "*";
        	print "\nThose are your users";
        	FS=":";
        }
        
        !/(false|nologin)$/{ 
        	home = $6;
        	login = $1;
        	if (index(home, "home")) print login;
        }
        
        END {
        	print "(c) 2019 The Awk Experts Software. All rights reserved";
        }


        $ awk --lint -f 1.awk /etc/passwd
        Ответить
      • Кстати, давайте програмировать на PostScript
        Ответить
            • Шар земной, устав вращаться,
              Может вдруг с цепи сорваться
              И ко всем чертям умчаться,
              Превратив живое в тлен.

              Ничему не удивляться,
              Ничему не удивляться,
              Ничему не удивляться,
              Никогда не должен истый джентльмен!
              Ответить
              • Недавно пересматривал, кстати
                Это же по О'Генри
                Ответить
            • Как листья моей осени,
              Где я могу найти надежду, которая не покидает меня?
              Я буду ждать, думая, где спрятать себя
              В моих мыслях я буду спать и в тишине я проснусь
              Мелодии, которые заставляют меня вспомнить и забыть

              Правитель. Ты оставил мне мечту?
              Перестань... И вспомни нас...
              Ты должен остановиться и вспомнить нас
              Где вы прячете нас, пока ты наблюдаешь из ниоткуда?
              Почему бы тебе не вернуться из своего безымянного бессознательного состояния?
              Ты тот, кого я встретил - ты смерть.

              Я не сплю, потому что ты ничего не оставил для нас. ничего.
              Я взял все из этой жизни. Там, где нет пути назад.

              Хотите вспомнить, забыть и пропустить?
              Ответить
    • use warnings FATAL => 'all';
      use strict;
      
      print map {chr($_ - 1)} map {unpack("W*", $_)} (<DATA>);
      
      __END__
      
      +!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+h!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!hp!0!!!!!]!!!!!!!!!!!!!]!!!!!!!!!!!!0!!!!]!!!!!!!pb}!!!!!!!}!!!!!!!!!!!!!]!!!!!!!!!!}!!!!!!}!!!!!!bu}!!!!!!!a/!!!!!!!!!!!!!}!!!!!!!!!}!!!!!!!;!!!!!uta!!!!!!!!}!!!!!!!!!!!!!}!!!!!!!!]}!!!!!!!}!!!!!tf!]!!!!!!!}!0!!!!!!!0!!]]]!!!..``!]]!!!!!!!;!!!!fy!!]!!!!!!]0!!!`..!!!!!!!!!!..``}!]!!!!!}!!!!y+!!!]!!!!!!]`.!!!!!!!!!!!!!!!!!!!!.`]!!!!}!!!!+h!!!!]`!!!!!]!!!!!!!!`/......../``````]}!!!}!!!!hp!!!!!!]!!!!!]``````00!`!```!`!)`)``?!!]!!!}!!!!pb!!!!!!!]!!!/!!D!```*!!``````!)`)````?!!}!!0!!!!bu!!!!!!!0]!}!!!D!````*0!!!!!!]!)`````?!!}`0!!!!!ut!!!!!!0!0]}!!!D`````*!!!!!!!}!!)```?!!!0!!]!!!!tf!!!!!}!!!)!!!`D`````*]``````0!!00!`0!0!!!!!]!!!fy!!!!!}!!!!]!!}``!!!]]`````````00!)``0!!!!!!!}!!y+!!!!}!]!!!!]````*!!!a....!!!..(!!!!!!!!!!!!!}!!+h!!!!}!!]`!!!!!!!!!!```]!!!!!!!0`!!!!!!!!!!`0!}!hp!!!}!!!!!!!!!!!!!!0!!!!}!!!!!}!!]!!!!!!!!!!!!}!pb!!!}!!!!!!!!!!!!!}!!!!0!!!!!!!]!!]!!!!!!!!!!!}!bu!!!}!!!!!!!!!!0!0!!!!}!!!!!!!!!}!!]!!!!!!!!!!!}ut!!!}!!!!!!!!!0!0!!!!!!]``0]```0!!!!}!!!!!!!!!!}tf!!}!!!!!!!!!!!0!!!!!!!!}!!!!}!!!!!!!}!!!!!!!!!}fy!!}!!!!!!!!!!}!!!!!!!!!}!!!!}!!!!!!!}!!!!!!!!!}y+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+


      друзья, проверьте, у вас работает?
      Ответить
          • <?php
            
            const DATA = <<<__END__
            +!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+h!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!hp!0!!!!!]!!!!!!!!!!!!!]!!!!!!!!!!!!0!!!!]!!!!!!!pb}!!!!!!!}!!!!!!!!!!!!!]!!!!!!!!!!}!!!!!!}!!!!!!bu}!!!!!!!a/!!!!!!!!!!!!!}!!!!!!!!!}!!!!!!!;!!!!!uta!!!!!!!!}!!!!!!!!!!!!!}!!!!!!!!]}!!!!!!!}!!!!!tf!]!!!!!!!}!0!!!!!!!0!!]]]!!!..``!]]!!!!!!!;!!!!fy!!]!!!!!!]0!!!`..!!!!!!!!!!..``}!]!!!!!}!!!!y+!!!]!!!!!!]`.!!!!!!!!!!!!!!!!!!!!.`]!!!!}!!!!+h!!!!]`!!!!!]!!!!!!!!`/......../``````]}!!!}!!!!hp!!!!!!]!!!!!]``````00!`!```!`!)`)``?!!]!!!}!!!!pb!!!!!!!]!!!/!!D!```*!!``````!)`)````?!!}!!0!!!!bu!!!!!!!0]!}!!!D!````*0!!!!!!]!)`````?!!}`0!!!!!ut!!!!!!0!0]}!!!D`````*!!!!!!!}!!)```?!!!0!!]!!!!tf!!!!!}!!!)!!!`D`````*]``````0!!00!`0!0!!!!!]!!!fy!!!!!}!!!!]!!}``!!!]]`````````00!)``0!!!!!!!}!!y+!!!!}!]!!!!]````*!!!a....!!!..(!!!!!!!!!!!!!}!!+h!!!!}!!]`!!!!!!!!!!```]!!!!!!!0`!!!!!!!!!!`0!}!hp!!!}!!!!!!!!!!!!!!0!!!!}!!!!!}!!]!!!!!!!!!!!!}!pb!!!}!!!!!!!!!!!!!}!!!!0!!!!!!!]!!]!!!!!!!!!!!}!bu!!!}!!!!!!!!!!0!0!!!!}!!!!!!!!!}!!]!!!!!!!!!!!}ut!!!}!!!!!!!!!0!0!!!!!!]``0]```0!!!!}!!!!!!!!!!}tf!!}!!!!!!!!!!!0!!!!!!!!}!!!!}!!!!!!!}!!!!!!!!!}fy!!}!!!!!!!!!!}!!!!!!!!!}!!!!}!!!!!!!}!!!!!!!!!}y+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+
            __END__;
            
            print implode(array_map(function($v){return chr($v - 1);},unpack("C*",DATA)));


            Можно ещё так:
            print strtr(DATA, array_combine(range(chr(1), chr(255)), range(chr(0), chr(254))));
            Ответить
            • echo a. {~ <: a. i. '+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+h!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!hp!0!!!!!]!!!!!!!!!!!!!]!!!!!!!!!!!!0!!!!]!!!!!!!pb}!!!!!!!}!!!!!!!!!!!!!]!!!!!!!!!!}!!!!!!}!!!!!!bu}!!!!!!!a/!!!!!!!!!!!!!}!!!!!!!!!}!!!!!!!;!!!!!uta!!!!!!!!}!!!!!!!!!!!!!}!!!!!!!!]}!!!!!!!}!!!!!tf!]!!!!!!!}!0!!!!!!!0!!]]]!!!..``!]]!!!!!!!;!!!!fy!!]!!!!!!]0!!!`..!!!!!!!!!!..``}!]!!!!!}!!!!y+!!!]!!!!!!]`.!!!!!!!!!!!!!!!!!!!!.`]!!!!}!!!!+h!!!!]`!!!!!]!!!!!!!!`/......../``````]}!!!}!!!!hp!!!!!!]!!!!!]``````00!`!```!`!)`)``?!!]!!!}!!!!pb!!!!!!!]!!!/!!D!```*!!``````!)`)````?!!}!!0!!!!bu!!!!!!!0]!}!!!D!````*0!!!!!!]!)`````?!!}`0!!!!!ut!!!!!!0!0]}!!!D`````*!!!!!!!}!!)```?!!!0!!]!!!!tf!!!!!}!!!)!!!`D`````*]``````0!!00!`0!0!!!!!]!!!fy!!!!!}!!!!]!!}``!!!]]`````````00!)``0!!!!!!!}!!y+!!!!}!]!!!!]````*!!!a....!!!..(!!!!!!!!!!!!!}!!+h!!!!}!!]`!!!!!!!!!!```]!!!!!!!0`!!!!!!!!!!`0!}!hp!!!}!!!!!!!!!!!!!!0!!!!}!!!!!}!!]!!!!!!!!!!!!}!pb!!!}!!!!!!!!!!!!!}!!!!0!!!!!!!]!!]!!!!!!!!!!!}!bu!!!}!!!!!!!!!!0!0!!!!}!!!!!!!!!}!!]!!!!!!!!!!!}ut!!!}!!!!!!!!!0!0!!!!!!]``0]```0!!!!}!!!!!!!!!!}tf!!}!!!!!!!!!!!0!!!!!!!!}!!!!}!!!!!!!}!!!!!!!!!}fy!!}!!!!!!!!!!}!!!!!!!!!}!!!!}!!!!!!!}!!!!!!!!!}y+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+'
              Какой приз поебдителю?
              Ответить
              • А теперь упражнения со стеком:
                :NONAME
                  S" +!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+h!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!hp!0!!!!!]!!!!!!!!!!!!!]!!!!!!!!!!!!0!!!!]!!!!!!!pb}!!!!!!!}!!!!!!!!!!!!!]!!!!!!!!!!}!!!!!!}!!!!!!bu}!!!!!!!a/!!!!!!!!!!!!!}!!!!!!!!!}!!!!!!!;!!!!!uta!!!!!!!!}!!!!!!!!!!!!!}!!!!!!!!]}!!!!!!!}!!!!!tf!]!!!!!!!}!0!!!!!!!0!!]]]!!!..``!]]!!!!!!!;!!!!fy!!]!!!!!!]0!!!`..!!!!!!!!!!..``}!]!!!!!}!!!!y+!!!]!!!!!!]`.!!!!!!!!!!!!!!!!!!!!.`]!!!!}!!!!+h!!!!]`!!!!!]!!!!!!!!`/......../``````]}!!!}!!!!hp!!!!!!]!!!!!]``````00!`!```!`!)`)``?!!]!!!}!!!!pb!!!!!!!]!!!/!!D!```*!!``````!)`)````?!!}!!0!!!!bu!!!!!!!0]!}!!!D!````*0!!!!!!]!)`````?!!}`0!!!!!ut!!!!!!0!0]}!!!D`````*!!!!!!!}!!)```?!!!0!!]!!!!tf!!!!!}!!!)!!!`D`````*]``````0!!00!`0!0!!!!!]!!!fy!!!!!}!!!!]!!}``!!!]]`````````00!)``0!!!!!!!}!!y+!!!!}!]!!!!]````*!!!a....!!!..(!!!!!!!!!!!!!}!!+h!!!!}!!]`!!!!!!!!!!```]!!!!!!!0`!!!!!!!!!!`0!}!hp!!!}!!!!!!!!!!!!!!0!!!!}!!!!!}!!]!!!!!!!!!!!!}!pb!!!}!!!!!!!!!!!!!}!!!!0!!!!!!!]!!]!!!!!!!!!!!}!bu!!!}!!!!!!!!!!0!0!!!!}!!!!!!!!!}!!]!!!!!!!!!!!}ut!!!}!!!!!!!!!0!0!!!!!!]``0]```0!!!!}!!!!!!!!!!}tf!!}!!!!!!!!!!!0!!!!!!!!}!!!!}!!!!!!!}!!!!!!!!!}fy!!}!!!!!!!!!!}!!!!!!!!!}!!!!}!!!!!!!}!!!!!!!!!}y+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+"
                  2DUP OVER + SWAP
                  DO
                    -1 I +!
                  LOOP
                  TYPE ; EXECUTE
                Ответить
      • Проверил. Комп распидорасило, пишу с утюга. Работает, но в первой строчке выводится несколько лишних пробелов.
        Ответить
          • Если убрать пустую строчку после __END__, то лишние табы исчезают.
            Ответить
            • тогда так
              use warnings FATAL => 'all';
              use strict;
              
              print map {chr($_ - 1)} map {unpack("W*", $_)} (<DATA>) && (<DATA>);
              
              __END__
              
              +!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+h!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!hp!0!!!!!]!!!!!!!!!!!!!]!!!!!!!!!!!!0!!!!]!!!!!!!pb}!!!!!!!}!!!!!!!!!!!!!]!!!!!!!!!!}!!!!!!}!!!!!!bu}!!!!!!!a/!!!!!!!!!!!!!}!!!!!!!!!}!!!!!!!;!!!!!uta!!!!!!!!}!!!!!!!!!!!!!}!!!!!!!!]}!!!!!!!}!!!!!tf!]!!!!!!!}!0!!!!!!!0!!]]]!!!..``!]]!!!!!!!;!!!!fy!!]!!!!!!]0!!!`..!!!!!!!!!!..``}!]!!!!!}!!!!y+!!!]!!!!!!]`.!!!!!!!!!!!!!!!!!!!!.`]!!!!}!!!!+h!!!!]`!!!!!]!!!!!!!!`/......../``````]}!!!}!!!!hp!!!!!!]!!!!!]``````00!`!```!`!)`)``?!!]!!!}!!!!pb!!!!!!!]!!!/!!D!```*!!``````!)`)````?!!}!!0!!!!bu!!!!!!!0]!}!!!D!````*0!!!!!!]!)`````?!!}`0!!!!!ut!!!!!!0!0]}!!!D`````*!!!!!!!}!!)```?!!!0!!]!!!!tf!!!!!}!!!)!!!`D`````*]``````0!!00!`0!0!!!!!]!!!fy!!!!!}!!!!]!!}``!!!]]`````````00!)``0!!!!!!!}!!y+!!!!}!]!!!!]````*!!!a....!!!..(!!!!!!!!!!!!!}!!+h!!!!}!!]`!!!!!!!!!!```]!!!!!!!0`!!!!!!!!!!`0!}!hp!!!}!!!!!!!!!!!!!!0!!!!}!!!!!}!!]!!!!!!!!!!!!}!pb!!!}!!!!!!!!!!!!!}!!!!0!!!!!!!]!!]!!!!!!!!!!!}!bu!!!}!!!!!!!!!!0!0!!!!}!!!!!!!!!}!!]!!!!!!!!!!!}ut!!!}!!!!!!!!!0!0!!!!!!]``0]```0!!!!}!!!!!!!!!!}tf!!}!!!!!!!!!!!0!!!!!!!!}!!!!}!!!!!!!}!!!!!!!!!}fy!!}!!!!!!!!!!}!!!!!!!!!}!!!!}!!!!!!!}!!!!!!!!!}y+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+
              Ответить
                • Я не знаю PHP.
                  Но починилось же?
                  Кстати, очень много ненужных скобок.

                  Я за
                  print map {chr $_ - 1} map {unpack "W*", $_} <DATA> && <DATA>;
                  
                  __END__
                  
                  +!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+h!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!hp!0!!!!!]!!!!!!!!!!!!!]!!!!!!!!!!!!0!!!!]!!!!!!!pb}!!!!!!!}!!!!!!!!!!!!!]!!!!!!!!!!}!!!!!!}!!!!!!bu}!!!!!!!a/!!!!!!!!!!!!!}!!!!!!!!!}!!!!!!!;!!!!!uta!!!!!!!!}!!!!!!!!!!!!!}!!!!!!!!]}!!!!!!!}!!!!!tf!]!!!!!!!}!0!!!!!!!0!!]]]!!!..``!]]!!!!!!!;!!!!fy!!]!!!!!!]0!!!`..!!!!!!!!!!..``}!]!!!!!}!!!!y+!!!]!!!!!!]`.!!!!!!!!!!!!!!!!!!!!.`]!!!!}!!!!+h!!!!]`!!!!!]!!!!!!!!`/......../``````]}!!!}!!!!hp!!!!!!]!!!!!]``````00!`!```!`!)`)``?!!]!!!}!!!!pb!!!!!!!]!!!/!!D!```*!!``````!)`)````?!!}!!0!!!!bu!!!!!!!0]!}!!!D!````*0!!!!!!]!)`````?!!}`0!!!!!ut!!!!!!0!0]}!!!D`````*!!!!!!!}!!)```?!!!0!!]!!!!tf!!!!!}!!!)!!!`D`````*]``````0!!00!`0!0!!!!!]!!!fy!!!!!}!!!!]!!}``!!!]]`````````00!)``0!!!!!!!}!!y+!!!!}!]!!!!]````*!!!a....!!!..(!!!!!!!!!!!!!}!!+h!!!!}!!]`!!!!!!!!!!```]!!!!!!!0`!!!!!!!!!!`0!}!hp!!!}!!!!!!!!!!!!!!0!!!!}!!!!!}!!]!!!!!!!!!!!!}!pb!!!}!!!!!!!!!!!!!}!!!!0!!!!!!!]!!]!!!!!!!!!!!}!bu!!!}!!!!!!!!!!0!0!!!!}!!!!!!!!!}!!]!!!!!!!!!!!}ut!!!}!!!!!!!!!0!0!!!!!!]``0]```0!!!!}!!!!!!!!!!}tf!!}!!!!!!!!!!!0!!!!!!!!}!!!!}!!!!!!!}!!!!!!!!!}fy!!}!!!!!!!!!!}!!!!!!!!!}!!!!}!!!!!!!}!!!!!!!!!}y+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+
                  Ответить
                  • Я за «Python».
                    s = '+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+h!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!hp!0!!!!!]!!!!!!!!!!!!!]!!!!!!!!!!!!0!!!!]!!!!!!!pb}!!!!!!!}!!!!!!!!!!!!!]!!!!!!!!!!}!!!!!!}!!!!!!bu}!!!!!!!a/!!!!!!!!!!!!!}!!!!!!!!!}!!!!!!!;!!!!!uta!!!!!!!!}!!!!!!!!!!!!!}!!!!!!!!]}!!!!!!!}!!!!!tf!]!!!!!!!}!0!!!!!!!0!!]]]!!!..``!]]!!!!!!!;!!!!fy!!]!!!!!!]0!!!`!!!!!!!!!..``}!]!!!!!}!!!!y+!!!]!!!!!!]`!!!!!!!!!!!!!!!!!!!.`]!!!!}!!!!+h!!!!]`!!!!!]!!!!!!!!`/......../``````]}!!!}!!!!hp!!!!!!]!!!!!]``````00!`!```!`!)`)``?!!]!!!}!!!!pb!!!!!!!]!!!/!!D!```*!!``````!)`)````?!!}!!0!!!!bu!!!!!!!0]!}!!!D!````*0!!!!!!]!)`````?!!}`0!!!!!ut!!!!!!0!0]}!!!D`````*!!!!!!!}!!)```?!!!0!!]!!!!tf!!!!!}!!!)!!!`D`````*]``````0!!00!`0!0!!!!!]!!!fy!!!!!}!!!!]!!}``!!!]]`````````00!)``0!!!!!!!}!!y+!!!!}!]!!!!]````*!!!a....!!!..(!!!!!!!!!!!!!}!!+h!!!!}!!]`!!!!!!!!!!```]!!!!!!!0`!!!!!!!!!!`0!}!hp!!!}!!!!!!!!!!!!!!0!!!!}!!!!!}!!]!!!!!!!!!!!!}!pb!!!}!!!!!!!!!!!!!}!!!!0!!!!!!!]!!]!!!!!!!!!!!}!bu!!!}!!!!!!!!!!0!0!!!!}!!!!!!!!!}!!]!!!!!!!!!!!}ut!!!}!!!!!!!!!0!0!!!!!!]``0]```0!!!!}!!!!!!!!!!}tf!!}!!!!!!!!!!!0!!!!!!!!}!!!!}!!!!!!!}!!!!!!!!!}fy!!}!!!!!!!!!!}!!!!!!!!!}!!!!}!!!!!!!}!!!!!!!!!}y+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+'
                    print(''.join(map(lambda x: chr(ord(x) - 1), s)))
                    Ответить
                    • И за «zlib».
                      import zlib
                      import base64
                      
                      
                      s = 'eNqVVLuOhDAM/BV3B0jg/opr9jcsGQpESQEFhT/+YscJCbBabYqQx/g149DBAitMsMMGMxzQfdov8N1YVkBbUHVc7bA8WSfxlbyzkOoz7Qk4DpWF3Fa/Nu/bCI8h8o7qFLY5RxevxpIm0uO+ZwaiMsR85HxJ8ZxDKFj8zpwf3Vkb8QOBPVMGR/YdlgnhofcxsA1LX5z9AkvxGjEkFL5hbrhh/ov3Etkv6A50vhTYAkTLiDcLcdmmPfFB5sEMuMXkxfBmwOjsJ/7Q8nwZoD0JbyLeCHb2EwGNVusGqZgADPVg0WXKfqqHNLDyRY6P9TfMeEY0DcBloZTOqIyaZD/XLok6SK2YEp+4KI8xAE2HutliwpJcUh3CdHjoTjzloerOdJDSO97eQGVhOsgVb/UjsfNTOBTVQa75Z9D90YrqIG+f44PB0X37N/oHNInudQ=='
                      print(zlib.decompress(base64.b64decode(s)).decode('utf-8'))
                      Ответить
                    • s = b'+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+h!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!hp!0!!!!!]!!!!!!!!!!!!!]!!!!!!!!!!!!0!!!!]!!!!!!!pb}!!!!!!!}!!!!!!!!!!!!!]!!!!!!!!!!}!!!!!!}!!!!!!bu}!!!!!!!a/!!!!!!!!!!!!!}!!!!!!!!!}!!!!!!!;!!!!!uta!!!!!!!!}!!!!!!!!!!!!!}!!!!!!!!]}!!!!!!!}!!!!!tf!]!!!!!!!}!0!!!!!!!0!!]]]!!!..``!]]!!!!!!!;!!!!fy!!]!!!!!!]0!!!`..!!!!!!!!!!..``}!]!!!!!}!!!!y+!!!]!!!!!!]`.!!!!!!!!!!!!!!!!!!!!.`]!!!!}!!!!+h!!!!]`!!!!!]!!!!!!!!`/......../``````]}!!!}!!!!hp!!!!!!]!!!!!]``````00!`!```!`!)`)``?!!]!!!}!!!!pb!!!!!!!]!!!/!!D!```*!!``````!)`)````?!!}!!0!!!!bu!!!!!!!0]!}!!!D!````*0!!!!!!]!)`````?!!}`0!!!!!ut!!!!!!0!0]}!!!D`````*!!!!!!!}!!)```?!!!0!!]!!!!tf!!!!!}!!!)!!!`D`````*]``````0!!00!`0!0!!!!!]!!!fy!!!!!}!!!!]!!}``!!!]]`````````00!)``0!!!!!!!}!!y+!!!!}!]!!!!]````*!!!a....!!!..(!!!!!!!!!!!!!}!!+h!!!!}!!]`!!!!!!!!!!```]!!!!!!!0`!!!!!!!!!!`0!}!hp!!!}!!!!!!!!!!!!!!0!!!!}!!!!!}!!]!!!!!!!!!!!!}!pb!!!}!!!!!!!!!!!!!}!!!!0!!!!!!!]!!]!!!!!!!!!!!}!bu!!!}!!!!!!!!!!0!0!!!!}!!!!!!!!!}!!]!!!!!!!!!!!}ut!!!}!!!!!!!!!0!0!!!!!!]``0]```0!!!!}!!!!!!!!!!}tf!!}!!!!!!!!!!!0!!!!!!!!}!!!!}!!!!!!!}!!!!!!!!!}fy!!}!!!!!!!!!!}!!!!!!!!!}!!!!}!!!!!!!}!!!!!!!!!}y+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+!h!p!b!u!t!f!y!+'
                      print(*(chr(i - 1) for i in s), sep = '')
                      З.Ы. У тебя некоторые символы при купировании проебались.
                      Ответить

Добавить комментарий

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8