1. Perl / Говнокод #26005

    +1

    1. 1
    2. 2
    3. 3
    use Unicornify::URL;
     
    my $url = unicornify_url( email => '[email protected]' );

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

    Запостил: PACTPOBblu_nemyx, 30 Октября 2019

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

    • SEO-пост: вот что я кукареку.
      Ответить
    • https://unicornify.pictures/avatar/f66d3596b598a720bfb2586171dbd80e

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

        Попробуй опубликовать подборку программ, в которых особенности «Перла» позволяют лаконично решить задачу.
        Ответить
        • Обссыкали уже. http://govnokod.ru/13110#comment180432
          Ответить
          • Прикольно. 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(){}

          например
          Ответить
      • Кстати, возникла идея для первого апреля: на сайте поменять URL аватарок с gravatar.com на unicornify.pictures.
        Ответить
        • Можно просто добавить как дефолт к граватару.
          Ответить
      • Оказывается, подобных сервисов сейчас море.

        https://robohash.org/f66d3596b598a720bfb2586171dbd80e.png?set=set4


        https://avatars.dicebear.com/v2/avataaars/f66d3596b598a720bfb2586171dbd80e.svg
        Ответить
        • На второй картинке syoma.
          Ответить
        • Для говнокода лучше взять аватарок отсюда https://blog.emojipedia.org/content/images/2019/09/chicken-memoji-emojipedia.jpg (из https://blog.emojipedia.org/ios-13-adds-memoji-to-emoji-keyboard/ )
          А то котики это явно не в тему
          Ответить
          • Как это не в тему?
            Ответить
          • Ммм... Какие цыпочки )))
            Ответить
            • Не знаю почему, но я представляю, что рустер выглядит как-то так: https://cdn.fishki.net/upload/post/2016/06/20/1987752/gallery/tn/lhxg515.jpg
              Ответить
              • Угадал только пол, в остальном все наоборот.

                А почему ты представляешь себе брутальных мущинок?
                Ответить
                • Ты знаешь кто это? Эти ребята тоже немного поехавшие, и занимаются бесполезной, но интересной хуйнёй.
                  Ответить
                  • Я бесполезной хуйней не занимаюсь.
                    Ответить
                    • https://www.ctvnews.ca/health/fatal-rooster-attack-woman-bled-to-death-after-rooster-pecked-her-varicose-vein-1.4577072
                      Ответить
                    • Сказал J-шник и Forth-ник.
                      Ответить
                      • Я J как калькулятор часто использую и для небольших однострочников.

                        Форт и правда в основном ради фана, ну и иногда хексы считаю. Хотя, например, если вдруг понадобится какой-нибудь DSL, парсер или типа того, то там форт мог бы пригодиться. Но это врядли.

                        Еще у меня есть всякие недописанные тулзы для личного пользования, например недописанная скриншотилка под венду на SP-Forth, на которую я забил когда понял что например скрыншот видосика средствами одного винапи не осилить :(
                        Ответить
      • А помнишь, что для генерации шрифтов для «ТеХа» Дональд Кнут придумал специальный язык «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.
      Ответить
      • кодец, например
        https://bitbucket.org/balpha/go-unicornify/src/default/main.go
        Ответить
        • Самое интересное происходит тут (осторожно, вореционный алгоритм):
          https://bitbucket.org/balpha/go-unicornify/src/default/unicornify/
          Ответить
          • какой-то этот ваш го скучный
            if parallelize {
                    parts := size / 128
                    if parts < 8 {
                        parts = 8
                    }    
                    DrawTracerParallel(tracer, wv, img, yCallback, parts)
                } else {
                    DrawTracer(tracer, wv, img, yCallback)
            }

            В другом хорошем языке это пишется в одну примерно строчку
            Ответить
            • Именно поэтому я за «PHP».
              Ответить
              • перепиши на пхп
                Ответить
                • $parallelize ? DrawTracerParallel($tracer, $wv, $img, $yCallback, min($size / 128, 8)) : DrawTracer($tracer, $wv, $img, $yCallback);
                  Ответить
                • Извращённый вариант:
                  call_user_func_array('DrawTracer' . ($parallelize ? 'Parallel' : ''),
                      array_merge([$tracer, $wv, $img, $yCallback], 
                      $parallelize ? [min($size / 128, 8)] : []));
                  Ответить
    • https://www.amazon.com/Masterminds-Programming-Conversations-Creators-Languages/dp/0596515170

      забавная какая книжка есть

      заметьте кстати, языка в кавычках в списке нет
      мнение макак никого не ебет
      Ответить
      • 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
          Ответить
          • Тлен и безысходность?
            Ответить
            • https://cs7.pikabu.ru/post_img/big/2017/12/04/11/1512411843172119923.jpg
              Ответить
              • Шар земной, устав вращаться,
                Может вдруг с цепи сорваться
                И ко всем чертям умчаться,
                Превратив живое в тлен.

                Ничему не удивляться,
                Ничему не удивляться,
                Ничему не удивляться,
                Никогда не должен истый джентльмен!
                Ответить
                • Недавно пересматривал, кстати
                  Это же по О'Генри
                  Ответить
                  • Вы хотите сказать, по О\\\\\\\\\\\\\\'Генри?
                    Ответить
                    • Хочу сказать что ошибка SQL
                      "SELECT *FROM PISATELI WHERE FAMILIA=O"
                      Ответить
              • Как листья моей осени,
                Где я могу найти надежду, которая не покидает меня?
                Я буду ждать, думая, где спрятать себя
                В моих мыслях я буду спать и в тишине я проснусь
                Мелодии, которые заставляют меня вспомнить и забыть

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

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

                Хотите вспомнить, забыть и пропустить?
                Ответить
          • Давайте лучше на GostScript.
            Ответить
    • )
      Ответить
      • Двумерный график расширяющего отображения.
        Ответить
      • 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!+


        друзья, проверьте, у вас работает?
        Ответить
        • А вдруг там патч Бармина?
          Ответить
          • запусти без рута
            или в IDE.one
            Ответить
            • <?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))));
              Ответить
              • да, перл много лаконичнее

                https://pbs.twimg.com/media/EINnf2hXYAEh7mI.jpg:large
                Ответить
              • 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».
                  Ответить
                  • Я не знаю 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 = '')
                        З.Ы. У тебя некоторые символы при купировании проебались.
                        Ответить
    • Кошаки прикольные.
      Ответить

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