День рождения Perl и лучшие решения Golf от Moscow.pm

в 12:52, , рубрики: perl, Блог компании Mail.Ru Group, поздравление, Программирование

День рождения Perl и лучшие решения Golf от Moscow.pm - 1Сегодня исполняется 27 лет со «дня рождения» одного из самых популярных на сегодня языков программирования — Perl. На нём создано несметное множество приложений и интернет-ресурсов, в том числе и имеющие многомиллионные аудитории, и соответствующие финансовые обороты. За примерами далеко ходить не придётся: Amazon, Yahoo!, Slashdot. Последние 20 лет он входит в десятку наиболее используемых языков, несмотря на слухи о своей кончине. Однако многомиллионная армия Perl-программистов, ежегодно выдающая на-гора множество продуктов, убедительно опровергает инсинуации верблюдоненавистников. Как говорится, собака лает — караван идёт. С момента своего появления в 1987 году, Perl взрастил уже два поколения программистов, и нет никаких причин отказываться от Жемчужного Корабля Пустыни ещё лет 30 как минимум. Так что мы с удовольствием поздравляем всех Perl-программистов с днём рождения их «родного» языка, Ларри Уоллу желаем долголетия календарного и творческого, чтобы ему хватило задора на создание ещё пары версий Perl.

Также ко дню рождения этого замечательного языка мы приурочили публикацию решений победителей в небольшом конкурсе программистов Golf, объявленном 3 октября в рамках митапа Moscow.pm.

Напомним условия задачи:

Найти максимально длинное кольцо, которое можно составить из списка предложенных вам костяшек или вывести 0, если их нельзя закольцевать.

Входные данные: Строка из пар чисел от 0 до 6, разделенных пробелом. Каждая пара — одна костяшка.
Пример: 01 11 12 22 31 32
Данные подаются на STDIN: cat data | golf.pl
Пример ответа: 11 12 22 23 31

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

День рождения Perl и лучшие решения Golf от Moscow.pm - 2

Денис Евдокимов (110 символов):

#!/usr/bin/perl -lap
$_=0;while(--$^T){@F=sort{$a=reverse$a;rand>0.5?1:-1}@F;$_=$&if"@F"=~/(d)((d) 3)*1/&&length$&>length}

Виталий Дятлов (116 символов):

$><<(gets+$/+$_.reverse).split.permutation.map{|b|b*' '=~/(?!.*(.)(.) .*21)(.)((.) 5)*3/&&$&||?0}.max_by(&:size)

Тимур Нозадзе (119 символов):

#!/usr/bin/perl -pl
sub c{$_=pop;s/dd/c("@_ $&",$'.$`)/eg;$_=pop;$m=$1 if!/(d)(d).*21/&/^ ((.)((.) 4)*2)$/}c$_.reverse;$_=$m//0

И ещё один код от П.Я., который получил приз зрительских симпатий:

#!/usr/bin/ruby -apF
$_='0';$F.permutation{|o|a=d='';o.map{|i|i[d]&&a+=d+i.sub(d,'')+' ';a[0][d=a[-2]]&&a>$_&&$_=a.chop}} 

Автор: Dzirtik

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js