|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Serge Chervjakov 2:5020/400 16 Sep 2004 18:20:38 To : All Subject : OCR --------------------------------------------------------------------------------
Hi All,
Hаткнулся на прикольную прикольную вещь в нете:
First place: Keith Winstein's optical character recognition engine. both
judges almost figured this one out after Keith blew his cover by naming a
subroutine ocr. Clever code, however!
#!/usr/bin/perl -l
print ocr(<<TPJ);
# # # ## ## ## ## # # # # # ## # # # #
### # # # # # # # # # # # # # # # # ## # # # #
# ### ## ## ## ## # # # # # # ## # ## ### #
# # # # # # # # # # # # # # # # # # # # # #
# # # ## # ## # # ## ### # ### # # # # # # ##
TPJ
sub ocr{@{$-[$@++]}=split$,for(split'\n',shift);for$@(0..4){for(0..51){++$_{$_
}if($-[$@][$_]=~$")}}@&=(-1);for(sort{$a<=>$b}keys%_){push@&,$_ if($_{$_}>4)
}push@&,52;for$@(0..13){@{$|[$@][$_]}=@{$-[$_]}[$&[$@]+1..$&[$@+1]-1]for(0..
4)}for(@|){**=$_;$w=@{$*[$^=$$=0]}-1;for$@(0..4){for(1..$w){$^++if$*[$@][$_
]ne$*[$@][$_-1]}}for(0..$w){for$@(1..4){$$++ if$*[$@][$_]ne$*[$@-1][$_]}}
for(0..20){push@},chr$_+65if(7*(8,4,2,9,2,3,7,8,1,$@,5,4,9,10,10,6,3,8,4,
8,8)[$_]+(5,8,3,3,4,2,1,2,8,2,7,1,5,4,6,$@,3,6,8,4,1)[$_]==7*$^+$$)}}@}}
По идее должно вывестись ThePerlJournal ну может в другом регистре.. но у меня
не прет - под виндой вообще пустой результат, под линуксом ругается что
Modification of a read-only value attempted at ./cool.pl line 11.
Разобраться в коде возможным мне не представляется - не видывал столь
запутанного кода:).
У кого-нить есть рабочая версия?:)
ЗЫ: оригинал на http://www.foo.be/docs/tpj/issues/vol4_3/tpj0403-0017.html
если плохо скопировалось сюды..
--- ifmail v.2.15dev5.3
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/166795de050bb.html, оценка из 5, голосов 10
|