Godfather Posted February 26, 2004 Share Posted February 26, 2004 ov3rm4n, не става така , най-малкото трябва да е undef$/;$@a{..., но и в този случай не върви, май няма да стане $_ да се използва за брояч или поне не по този начин. Файлът ми е доста голям, но ще видя дали не мога да кача нещо такова. Link to comment Share on other sites More sharing options...
ov3rm4n Posted February 26, 2004 Author Share Posted February 26, 2004 ov3rm4n, не става така , най-малкото трябва да е undef$/;$@a{..., но и в този случай не върви, май няма да стане $_ да се използва за брояч или поне не по този начин.Файлът ми е доста голям, но ще видя дали не мога да кача нещо такова. Е не целия де... Нещо малко - 10 реда от него стигат... Link to comment Share on other sites More sharing options...
Godfather Posted February 26, 2004 Share Posted February 26, 2004 Ето тук нещо примерно Link to comment Share on other sites More sharing options...
ov3rm4n Posted February 26, 2004 Author Share Posted February 26, 2004 perl -le 'for(<>){$s{$&}++if/\d+\.\d+\.\d+\.\d+/g}print"$_:$s{$_}"for keys%s' file_to_process Резултат с тестовия пример: 5.50.4133.2400:1 24.172.74.87:1 96.164.178.36:1 192.168.80.5:1 41.190.210.38:1 69.148.51.238:1 24.14.61.179:1 33.131.71.113:1 210.117.100.126:1 Първия резултат е кофти, но е от реджекса... Много познато ми изглежда на мен кода.... Търся друг вариант в момента с undef$/, но едва ли ще е по-различен... Я - преместили са темата, така както си бях вътре! Благодарско! Дано не съм натежал... Link to comment Share on other sites More sharing options...
peachlover Posted February 26, 2004 Share Posted February 26, 2004 sq 6te mi se spukate ot smqh ama ade nqkoi da prepora4a literatura i software za tezi rabotki.. dale4 sam ot misalta 4e 6te se nau4a nqkoga kato vas da go pravq ama.. Link to comment Share on other sites More sharing options...
Godfather Posted February 26, 2004 Share Posted February 26, 2004 perl -le 'for(){$s{$&}++if/\d+\.\d+\.\d+\.\d+/g}print"$_:$s{$_}"for keys%s' file_to_process Мдам, това вече работи @peachlover: www.perldoc.com Link to comment Share on other sites More sharing options...
sasquatch Posted February 26, 2004 Share Posted February 26, 2004 furiozo said : "btw da vzema da te pokanq v #warez.ru @ bgirc, sha mojesh da obsyjdash programistki problemi s TQ_ " С малко закъснение (2 - 3 месеца)- кой е TQ_ да не е нещо като PD P.S. аз за съжаление съм скаран с perl (aaa pain in the ass:) ) иначе python го уча по малко, та защо тука не ръгнем някоя задачка която да се решава независимо от езика за програмиране? Link to comment Share on other sites More sharing options...
ov3rm4n Posted February 26, 2004 Author Share Posted February 26, 2004 Че то това беше идеята - да се "мерим" всеки със езика, който знае. Условието обаче е едно за всички - възможно най-късо парче код... Не цели програми от по 20-1000-10000 реда код. Не знам на Python дали може да се праскат такива one-liner's - ако може, ще се радвам да ме опровергаеш - Godfather е писал по-горе какво се иска от кода да направи, остава ти да ни изненадаш с Python-ски код за решаване на проблема... От самосебе си се разбира, че по обясними причини С++ или друг компилиран код (като Джава примерно) не влиза в категорията... РНР обаче става за целта. Само за протокола да спомена - РНР произлиза от Perl - самото съкращение означава Perl Home Page - първата версия на езика (то даже не е било още език) е служила на автора му да си поддържа сайта и е била чист Perl - после се откъсва от него и разработката преминава в отделен език... Link to comment Share on other sites More sharing options...
ov3rm4n Posted February 27, 2004 Author Share Posted February 27, 2004 Нещо се отплеснах по регулярния израз... Бая вариации са възможни се оказва. perl -le 'for(<>) {$s{$&}++if /([01]?\d\d|2[0-4]\d|25[0-5])\.([01]?\d\d|2[0-4]\d|25[0-5])\.([01]?\d\d|2[0-4]\d|25[0-5])\.([01]?\d\d|2[0-4]\d|25[0-5])/g} print"$_:$s{$_}" for keys%s' file_to_process ^--1 Тоя път реджекс-а се държи сполучливо, но пък става по-длъжко... Разделих го на повече от един ред просто, за да не се скапва изгледа във форума - иначе както си требе - всичко е на един ред. Регулярния израз е от Perl Cookbook[©]. perl -le 'for(<>){$s{$&}++if(/(\d+)\.(\d+)\.(\d+)\.(\d+)/and$1<256and$2<256and$3<256and$4<256)}print"$_:$s{$_}"for keys%s' file_to_process ^--2 Маалко по-късичък реджекс, но пак връща само валидните IP-та... perl -le 'for(<>){$s{$&}++if(/(\d+)\.(\d+)\.(\d+)\.(\d+)/&(1|$1|$2|$3|$4)<256)}print"$_:$s{$_}"for keys%s' file_to_process ^--3 Това пък е един малко откачен и "мръсен" реджекс, ама пак е стриктен към IP-тата ... perl -le 'for(<>){$s{$&}++if(/@{[q<(\d+)\.>x3]}(\d+)/&(1|$1|$2|$3|$4)<256)}print"$_:$s{$_}"for keys%s' file_to_process ^--4 Най-късия и най-шантавия до сега, и въпреки това пак връща само реални IP-та... Последно: perl -nle '$s{$&}++if(/@{[q<(\d+)\.>x3]}(\d+)/&(1|$1|$2|$3|$4)<256)END{print"$_:$s{$_}"for keys%s}' file_to_process ^--5 bytes count: -------------- 1 - 99: №5 2 - 102: №4 3 - 106: №3 4 - 122: №2 5 - 177: №1 -------------- Скрипта, който ги преброи... В преброяването се включва частта "perl -le", тъй като това си е един вид шебанг реда... Баси и темата се заформи - почна се от скрипт за спамери, а сега вече се борим срещу спамерите ... Link to comment Share on other sites More sharing options...
Godfather Posted February 27, 2004 Share Posted February 27, 2004 Мухаха, ov3rm4n, посред нощите ти идва ищах за Пърл В последния скрипт обаче има една корекцийка: трябва да има ; преди END: perl -nle '$s{$&}++if(/@{[q<(\d+)\.>x3]}(\d+)/&(1|$1|$2|$3|$4)<256);END{print"$_:$s{$_}"for sort keys%s}' file_to_process Освен това сложих и едно sort - да излизат по-добре Link to comment Share on other sites More sharing options...
ov3rm4n Posted February 27, 2004 Author Share Posted February 27, 2004 Моля, моля !! Не ми увеличавай кода !! Грешката е вярна! При мен на 5.8 си се парсва коректно и без ; - все пак по условие се търси работещ код, не код отговарящ стриктно на документацията и синтаксиса! Иначе сортирането си е на място - опен сорс е все пак, може да се променя ! Мда - получи се малко нещо "малка нощна музика" при мен... Link to comment Share on other sites More sharing options...
Godfather Posted February 27, 2004 Share Posted February 27, 2004 При мен на 5.8 си се парсва коректно и без ; И аз съм с 5.8 (linux) но не парсва без ; Link to comment Share on other sites More sharing options...
furiozo Posted February 27, 2004 Share Posted February 27, 2004 ne vyrvi 3ma da si pishem php ne proizliza ot perl, nito kato ime, nito kato sintaxis, nito kato ideologiq Link to comment Share on other sites More sharing options...
ov3rm4n Posted February 27, 2004 Author Share Posted February 27, 2004 В момента съм на друга машина под Уиндоус, Perl 5.8.0 и наистина не става без ;... Явно съм се обълкал , но ще мога да го твърдя със сигурност когато седна пак на машината на която го пробвах първия път. Освен да е някаква стара версия там... Но много добре си спомням, че съзнателно махнах ; от кода и го тествах - за да го сваля под 100. И ако не беше сработило, нямаше да го пусна тук. Както и да е - до утре няма да мога да го проверя. Ако съм се объркал, ще коригирам резултата. Някой да даде ново условие - тъкмо съм набрал скорост... Link to comment Share on other sites More sharing options...
Godfather Posted February 27, 2004 Share Posted February 27, 2004 ne vyrvi 3ma da si pishemphp ne proizliza ot perl, nito kato ime, nito kato sintaxis, nito kato ideologiq furiozo, това е много силно казано. Все пак имат имат сериозна връзка, особено в ранния стадий на развитие на PHP (в момента съкращението се развива рекурсивно, аналогично на GNU като "PHP: Hypertext Preprocessor" , но в началото повечето варинати почти винаги първата буква се асоциираше с Perl). Link to comment Share on other sites More sharing options...
ov3rm4n Posted February 27, 2004 Author Share Posted February 27, 2004 ne vyrvi 3ma da si pishemphp ne proizliza ot perl, nito kato ime, nito kato sintaxis, nito kato ideologiq Ами хайде и други да се намесят, де. Знам, че има такива хора тук. За имена няма смисъл да спорим - не името прави човека, дето се вика, а аз добавям - същото важи и за езиците... За компенсация на засегнатите ще приведа една от особено любимите ми дешифровки на Perl, не особено "ласкава", но пък много забавна: Pathologically Eclectic Rubbish Lister Link to comment Share on other sites More sharing options...
tedy Posted February 27, 2004 Share Posted February 27, 2004 поразгледах темата, и ми се струва, че по-подходящо заглавие за нея е например "най-късия и неразбираем ред от знаци, генерирани от реда с цифровите клавиши, комбинирани с Shift" Не, сериозно, аз не разбирам от Perl ни най-малко, макар че схващам регулярните ви изрази. Това да се направи на PHP е възможно, но по дължина не може да се мери със синтаксиса на Пърл. Затова и няма да се опитвам да го правя, понеже 50-60 знака е почти непосилно за ПХП. Link to comment Share on other sites More sharing options...
Godfather Posted February 27, 2004 Share Posted February 27, 2004 Това да се направи на PHP е възможно, но по дължина не може да се мери със синтаксиса на Пърл. Затова и няма да се опитвам да го правя, понеже 50-60 знака е почти непосилно за ПХП. Мдам, това е една от отличителните черти на Perl и бих казал дори "очарованието" на Perl Link to comment Share on other sites More sharing options...
sasquatch Posted February 27, 2004 Share Posted February 27, 2004 Ovrman аз ще се поръчкам с тоя python ама нямам много свободно време толкова работа имам че няправо свят ми се завива Но и на мен ми стана интересно дали наистина на python може да се напише програма която да е толкова къса (силно се съмнявам). Link to comment Share on other sites More sharing options...
furiozo Posted February 28, 2004 Share Posted February 28, 2004 furiozo, това е много силно казано. Все пак имат имат сериозна връзка, ... nope ne vijdam nikakva vryzka po syshtestvo mejdu tqh. originalnoto php e Personal Home Page, ako nqkoi e tvyrdql che ima perl v php neshto se e zamotal, ne che tolkva sym zapoznat no prosto nqma nachin, ne mislq che nqkoi koito e zapoznat za kvo staa duma bi tvyrdql che dvata ezika sa shodni Link to comment Share on other sites More sharing options...
ov3rm4n Posted February 28, 2004 Author Share Posted February 28, 2004 Не искам да разваляме хубавата тема с подобни спорове. Но историята си е история. По същество днес двата езика са си съвсем отделни и с много малко общо по между им. Не така е било през 1995. Поради което и никъде няма да намериш PHP version 1 - започва направо от 2. PHP 1 е пакет Perl скриптове, работещи на домашната страница на Размус през 1995. Една корекция и за мен - наистина не е Perl Home Page, а Personal Home Page. History of PHP PHP/FIPHP succeeds an older product, named PHP/FI. PHP/FI was created by Rasmus Lerdorf in 1995, initially as a simple set of Perl scripts for tracking accesses to his online resume. He named this set of scripts 'Personal Home Page Tools'. As more functionality was required, Rasmus wrote a much larger C implementation, which was able to communicate with databases, and enabled users to develop simple dynamic Web applications. Rasmus chose to release the source code for PHP/FI for everybody to see, so that anybody can use it, as well as fix bugs in it and improve the code. PHP/FI, which stood for Personal Home Page / Forms Interpreter, included some of the basic functionality of PHP as we know it today. It had Perl-like variables, automatic inDerpretation of form variables and HTML embedded syntax. The syntax itself was similar to that of Perl, albeit much more limited, simple, and somewhat inconsistent. http://www.zend.com/zend/hof/rasmus.php С какво ще се главоблъскаме днес? Никой ли няма идея? Godfather, не може да не ти трябва някое малко туул-че в системната поддръжка, не бъди егоист - дай и на нас малко да си почешем мозъците! Link to comment Share on other sites More sharing options...
cade Posted February 28, 2004 Share Posted February 28, 2004 hi, tova ne e uchastie v igrata a dokolkoto znam tq e i prikliuchila shte mi se da izbegna standartnata situaciq tipichna za golf konkurs a imenno: 2 dni entusiazym posledvan ot mrachen mesec v opiti da se izpermutirat 5 dumi v poveche ot 120 varianta! i zatova dolniq tekst e samo primer za variant, nishto poveche. vzeh posledniq (kakto uspqh da razbera nai--kys) variant na programata za proverka na ip-ta. kakto razbrah ot implementaciqta o otkyslechnite zabelejki vhoda e spisyk s ip-ta po edno na red i izhodniq format ne e zadyljitelen. razbira se ima osobenosti kym smqtaneto na strokes v golf-ovete no az izbrah tozi: cip1.pl ---begin--- #!/usr/bin/perl -nl $s{$&}++if(/@{[q<(\d+)\.>x3]}(\d+)/&(1|$1|$2|$3|$4)<256);END{print"$_:$s{$_}"for keys%s} ---end--- 109 bytes. vidno e che nqma mnogo mqsto za myrdane, vse pak trqbva da proverim chislata no na men mnogo mi se shteshe da mahna tezi or's. drugoto koeto makar zabavno syshto strqska osobeno neopitnite e interpoliraneto na regexp-a. polzvaneto na END i razpechatvane na hash vinagi sa bili tromavi (no pyk horata sporeqt za END-a). za da mahna END se nalaga da mahna i `-n' ot komandnata liniq, koeto se okazva syshto tolkova dylgo: -nEND{}; for(<>){} (9 bukvi) i az predpochetoh for-a. kolkoto do otpechatvaneto na hash-a poshikalkavih s uslovieto, sorry, no izhoda e kakto se iziskva: ip+count eto kakvo se poluchi: cip2.pl ---begin--- #!/usr/bin/perl for(<>){$&>255?$_=0:0while/\d+/g;$s{$&}++if/((\d+)\.?){4}/}print join"\n",%s ---end--- 93 bytes. i v kraina smetka 16 baita po-malko (kak iskam da mahna tezi 10 strokes: ` join"\n",' (testovite danni si gi pravih sam, dano ne sym propusnal sluchai) just for the record. later... ps: netroot shte ti skysam ushite! poharchih blizo 2 chasa Link to comment Share on other sites More sharing options...
ov3rm4n Posted February 28, 2004 Author Share Posted February 28, 2004 Е най-накрая! Защо да не е участие? Срок не е имало поставен. Радвам се че се намеси! За броенето ако държим да е голф и да го обърнем на турнирче, викам да ползваме това... Взел съм го от сайт с основните правила на голфа. Но тая тема аз поне я почнах просто с идеята да си правим фън - не точно като голф турнир, за това и няма срокове и такива работи. Пък и наистина сме малко за сега за турнир. А и честно казано не ми харесват много условията на задачките по тия турнири - иска ми се кода да има все пак някакво практическо приложение, не просто да е сам за себе си... Както и можеше да се предполага, ти направо ме размаза иначе... Честно казано опитах се и аз да вкарам ?: в употреба, но така и не стигнах до работещ вариант - оказва се като гледам твоя код, че съвсем в погрешна посока съм вървял... Нищо. Надявам се следващия път да се стегна. Като казах следващ път - давйте нещо де! Link to comment Share on other sites More sharing options...
Godfather Posted February 28, 2004 Share Posted February 28, 2004 Мухаха, ей тва вече е серизона приказка, Link to comment Share on other sites More sharing options...
ov3rm4n Posted February 29, 2004 Author Share Posted February 29, 2004 opendir D,".";while($_=readdir D){if(~!/^\.\.?$/){$n=$_;$n=~s/\W+|_+/\./g;rename($_,$n)}} 89: wur.plx Преименува всички файлове в директорията на скрипта, така че имената да отговарят на ъплоад правилата в уарез.ру - интервали, подчертавки и други не-буквено-цифрени знаци се заменят с точка. Работи под Уин и под *nix (в зависимост от разрешенията!!). Преименува и поддиректориите, но не работи рекурсивно и в тях. НЕ РАБОТИ - ПОРАДИ НЕКАДЪРНОСТ НА АВТОРА!!Би могло да се направи да работи и в директории различни от тази на скрипта, но с малко повече байтове: $d=shift;opendir D,"$d";while($_=readdir D){if(~!/^\.\.?$/){$n=$_;$n=~s/\W+|_+/\./g;rename($_,$n)}} 99: wur1.plx В тоя случай се очаква да се подаде като аргумент пълен път до директорията в която са файловете за преименуване. Вариант има и с извикване на -МCwd от командния ред, без подаване на аргумент: perl -MCwd 'opendir D,cwd();while($_=readdir D){if(~!/^\.\.?$/){$n=$_;$n=~s/\W+|_+/\./g;rename($_,$n)}}' 104: wur2.plx (броено с "perl -MCwd") 91: wur2.plx (броено без "perl -MCwd", не сме се уточнили още ...) Дали може да се ореже още повече? А да се включи и рекурсивно обработване на поддиректориите?? Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.