Last active
August 29, 2015 14:02
-
-
Save dionys/2e6166fef29f79246576 to your computer and use it in GitHub Desktop.
YAPC::Russia 2014 Perl Golf
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!perl -plaF'[,:]\s' | |
$n//=pop@F;pop@F;push@$_,@F | |
for@F}{$i=1;for(;$n;$i++){$n{$_}//=$n | |
ne$_?$i:0for@$n;@$n=();($n)=grep@$_,keys%n}$_=$n{Erdos}//Inf |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
https://github.com/timurn/yr2014golf
Конкурс Perl Golf для YAPC::Russia 2014
«Число Эрдёша»
Венгерский математик Эрдёш написал за свою жизнь 1475 статей, причём многие из этих работ были созданы в соавторстве. Традиционно в математике совместная статья является скорее исключением, чем правилом, поэтому наличие такого большого числа соавторов породило в фольклоре математиков понятие «число Эрдёша».
Это число определяется следующим образом: у самого Эрдёша оно равно нулю, у непосредственных соавторов Эрдёша это число равно единице, соавторы людей с числом Эрдёша, равным n, имеют число Эрдёша n+1, из нескольких вариантов связей выбирается самый короткий, т. е. минимально возможное число.
Входные данные: Первая строка содержит фамилию учёного, для которого нужно определить число Эрдёша. Последующие строки содержат список публикаций: фамилии авторов через запятую и пробел, и название работы, отделённое двоеточием. Заданная фамилия может не присутствовать ни в одной публикации.
Пример: Chen Smith, M.N., Martin, G., Erdos, P.: Newtonian forms of prime factor matrices Erdos, P., Reisig, W.: Stuttering in petri nets Smith, M.N., Chen, X.: First oder derivates in structured programming Jablonski, T., Hsueh, Z.: Selfstabilizing data structures
Данные подаются на STDIN: cat data | perl golf.pl
Необходимо вывести число Эрдёша для заданного учёного. В случае, если связи с Эрдёшем нет — вывести Inf.