Новости

Регистрация: Логин

Решение от Артура Ханова

26.02.10 14:58 автор: ilya Zelenchuk (‎i1ya‎)

$/=undef;($x,$y,$w,@a)=split/\W+/,<>;@w=split//,$w;push@{$c{$a[$_]}},$_ for(0..$#a);$,=' ';sub r{if($_[0]eq$w){print map{int$_/$y,$_% $y}@ans;exit;}for(@{$c{$w[$_[1]]}}){$q=$_[2];if(abs($q-$_)==1or abs(abs($_-$q)-$y+1)<3 or $q==-1){$ans[$_[1]]=$_;r($_[0].$w[$_[1]],$_[1]+1,$_);}}}r("",0,-1,@ans);

Решение от Алексея Сурикова

26.02.10 14:38 автор: ilya Zelenchuk (‎i1ya‎)

use re 'eval';($w,$h,$s,$/)=split' ',<>;($m=<>)=~s/\W//gs;$m=~m<$_(?{$p=pos()-1;$r=int$p/$h;$c=$p-$w*$r;push@_,$r,$c})> or last for split'',$s;$"=' ';print"@_"if@_==2*length$s

Perlgolf на Perlburg'е

19.02.10 14:00 автор: ilya Zelenchuk (‎i1ya‎)

Участникам Perlburg'a предлагается принять участие в гольф.

Задание

Дана строка, состоящая из маленьких английских букв. Найти её на прямоугольном поле из символов, разделенных пробелами. При этом если символы являются соседними в строке, то они должны быть соседними и на поле (по вертикали, горизонтали или диагонали). На стандартный вход подается файл, в первой строке которого указана размерность поля и искомая строка, далее идет сама таблица из символов, разделенная пробелами. В ответе нужно выдать набор чисел-координат символов на поле - "номер строки" и "номер столбца", разделенные пробелами (Нумерация идет с нуля), указанные в порядке следования букв в строке. Данные корректны. В случае отсутствия строки ничего не выдавать.
Например, файл input.txt содержит:
5 5 qwerty
q f e g a
b w r p n
k d t n d
c y c v n
h u k s a
	
$ perl solve.pl < input.txt
0 0 1 1 0 2 1 2 2 2 3 1