Jump to content
BulForum.com

Аде да си ги премерим...


ov3rm4n

Recommended Posts

hello,

 

$o=$_,s/[\W_]+/\./g,rename($o,$_)for grep!/^\.\.?$/,<*>

 

55 strokes

 

ako ni trqbva samo za failove:

 

$o=$_,s/[\W_]+/\./g,rename($o,$_)for grep!-d,<*>

 

48 strokes

 

s malyk trick koito e potencialno opasen:

 

$o=$_,s/[\W_]+/\./g,`mv $o $_`for grep!-d,<*>

 

45 strokes

 

i nakraq rekursivno:

 

/^(.*?)([^\/\n]+)$/,$p=$1,$o=$_=$2,s/[\W_]+/\./g,rename($p.$o,$p.$_)for `find *|tac`

 

84 strokes

 

cheers! :)

ps: btw: zashto

 ne e s fixiran font?!
Link to comment
Share on other sites

  • Replies 61
  • Created
  • Last Reply
Ми какво да кажа... Нямам думи. Рупам ряпа и си мълча... Вече няма да си го търся. Някой друг да дава.

:blink:  :blink:  :blink:

Понеже и аз ще си "рупам ряпата", единственото, което ми остава е да вляза в незавидната роля на тестер :woot , мухаха :D :lol:

 

Още на пръв поглед може да се каже, че основен проблем при използването на mv командата в третия скрипт на cade е ситуацията с интервали в имената на файла, което налага промяната на:

$o=$_,s/[\W_]+/\./g,`mv "$o" $_`for grep!-d,<*>

вече 47, но се справя с проблема и пак си е рекордьор ;)

 

Ако ми остане време, ще се заровя за по-изчанчени ситуации :D

Link to comment
Share on other sites

  • 2 weeks later...

Значи проблема е следния : имаме две крайни множества съответно с m и n елемента (m и n са цели положителни числа). Всеки елемент на двете множества е наредена двойка - съответно (p1,q1) и (p2,q2) където p1,q1,p2 и q2 са цели положителни числа. Елементите на тези две множества се образуват от друго едно множество с елементи (x,y,z) където x,y,z са цели положителни числа, така че p1=x и q1=y , p2=x и q2 = z. Елементите на множествата са сортирани във възходящ ред по стойностите на q1 и q2, числата p1 и p2 са уникални - тоест няма два елемента на първото множество за които p1 на първия елемент да е равно на p1 на втория елемент, аналогично и за второто множество (числата x са уникални и не се повтарят никога), елементите на множествата също са уникални - т.е. при тяхното образуване елеминираме еднаквите елементи (p1,q1) - за първото множество и (p2,q2) за второто. Освен това има един елемент (q3,q4) , q3 и q4 са праметри които също са цели положителни числа и са известни. Трябва да се образува едно ново множество с елементи r. За всеки два елемента на първото и второто множество за които е вярно q1=q3 и q2=q4 добаваяме по един елемент r=p1=p2 в новообразуваното множество (ясно е че за q1=q3 и q2=q4 , p1=p2). Възможно е множеството да бъде и празно.Така изказана тази задачка може и да изглежда малко абстрактна но не е. Представете си че двете множества всъщност са два индекса на една таблица от БД - p1 и p2 са id-та на записите, q1 и q2 са индексираните полета а q3 и q4 е един критерий по който търсим в тази таблица (примерно имаме таблица с информация за фирми където има полета id , държава и град и ние искаме да видим всички фирми които са от дадена държава и град).Всъщност тази задача е опростен случай не търсенето в таблица на БД. Естествено задачата може да се разшири и за k множества не само за две защото и полетата може да са k на брой (k е цяло >=1) и да искаме да търсим по всички тях едновременно. Има един частен случай в който k=1 и търсенето става само в едно множество но той е тривиален така че не представлява интерес (търсене само по един критерий не по два - q3 и q4). Случая в който някое от множествата в които търсим е празно (то всъщност ако едно е празно и другите ще са празни) също е тривиален защото тогава няма елементи които да отговарят на условията и новото множество също е празно (в таблицата на нашата БД няма записани никакви данни) - значи и той не е интересен.След един-два дена ще постна тука някакво решение на проблема ( или поне частично решение , ако до тогава го измисля ;) )

Edit :"Елементите на множествата са сортирани във възходящ ред по стойностите на q1 и q2" - това всъщност не е задължително по-принцип като се замисля така че сортирайте ги ако искате

Link to comment
Share on other sites

Ето тука едно решение на задачката ама е дървено, ще го модифицирам тея дни да е с двоично търсене

Link to comment
Share on other sites

Е ти изби рибата, братче... Ние тука говорим за решения в рамките на 100 байта, ти изскочи с цяла програма... А аз се мъча като грешен дявол от сума ти време да го натъпча в един ред условието ти... и не успявам. Ако е за толкова дълго решение - проблем няма. Има хиляди.

Link to comment
Share on other sites

E верно в 100 байта няма как да го натъпчеш ама не е и толкоз дълго. Ама явно аз нещо не съм разбрал - ние тука значи търсиме ловки задачи с къси решения - о.к. моя грешка.Все пак може да фърлите и едно око на решението на един приятел.Той счита че двата индекса вече са филтрирани по критерия и остава само да направи сечение на резултата (което в случая трябва да е ловко) и го прави много по-добре от мен (т.е. по-бързо за повече записи и съвпадения)

overman съжалявам изобщо не съм искал да те засегна нещо или да се ебавам просто тая задачка ми попадана а тя има и известно практическо приложение - да речем търсене в html документи в които си си ембеднал javascript с въпросните индекси. Примерно имаш един каталог в html формат и искаш да има и търсене в него - и това е един начин - да си генерираш индекси предварително и после само да ги searchvash със script-a.

Link to comment
Share on other sites

  • 3 months later...

Кво ша кажетe за тоя if :)

void CDialogProcessor::DetermineState(Event *event)

{

if(((event->m_nToolbarState == ISTATE_ARROW)) && (event->m_nEventType == E_MOUSE_L_UP) && (m_nState != EMODE_MOVE_BY_MOUSE) && (m_nState != EMODE_MANIPULATE_COPY) && (m_nState != EMODE_DRAW_SWEEP)){

  m_nState = EMODE_REDRAW_FRAME;

}

else if((event->m_nToolbarState == ISTATE_DOT) && (event->m_nEventType == E_MOUSE_L_DOWN) && (m_nState != EMODE_DRAW_DOT)){

  GetPoint(event);

  m_nState = EMODE_DRAW_DOT;

}

else if((event->m_nToolbarState == ISTATE_DOT) && (event->m_nEventType == E_MOUSE_L_DOWN) && (m_nState == EMODE_DRAW_DOT)){

  GetPoint(event);

  m_nState = EMODE_DRAW_DOT;

}

else if((event->m_nToolbarState == ISTATE_DOT) && (event->m_nEventType == E_MOUSE_MOVE) && (m_bedit)){

  m_nState = EMODE_DRAW_DOT;

}

else if((event->m_nToolbarState == ISTATE_LINE) && (event->m_nEventType == E_MOUSE_L_DOWN) && (m_nState != EMODE_DRAW_LINE)){

  GetPoint(event);

  m_nState = EMODE_DRAW_LINE;

}

else if((event->m_nToolbarState == ISTATE_LINE) && (event->m_nEventType == E_MOUSE_MOVE) && (m_bedit)){

  m_nState = EMODE_DRAW_LINE;

}

else if((event->m_nToolbarState == ISTATE_LINE) && (event->m_nEventType == E_MOUSE_L_DOWN) && (m_nState == EMODE_DRAW_LINE)){

  GetPoint(event);

  m_nState = EMODE_DRAW_LINE;

}

else if ((event->m_nEventType == E_REDRAW) && (!m_bedit)){

  m_nState = EMODE_REDRAW;

}

else if((event->m_nEventType == E_UP_DOWN) && (event->m_nToolbarState == ISTATE_ARROW)){

  m_nState = EMODE_MOVE_UP;

}

else if((event->m_nEventType == E_DOWN_DOWN) && (event->m_nToolbarState == ISTATE_ARROW)){

  m_nState = EMODE_MOVE_DOWN;

}

else if((event->m_nEventType == E_LEFT_DOWN) && (event->m_nToolbarState == ISTATE_ARROW)){

  m_nState = EMODE_MOVE_LEFT;

}

else if((event->m_nEventType == E_RIGHT_DOWN) && (event->m_nToolbarState == ISTATE_ARROW)){

  m_nState = EMODE_MOVE_RIGHT;

}

else if((event->m_nEventType == E_SELECT_ALL) && !m_bedit){

  m_nState = EMODE_SELECT_ALL;

}

else if((event->m_nToolbarState == ISTATE_ARROW) && (event->m_nEventType == E_MOUSE_L_DOWN)){

  m_nState = EMODE_SELECT;;

}

else if((event->m_nToolbarState == ISTATE_ARROW) && (event->m_nEventType == E_MOUSE_MOVE) && (m_nState == EMODE_SELECT)){

  m_nState = EMODE_MOVE_BY_MOUSE;

}

else if((event->m_nToolbarState == ISTATE_ARROW) && (event->m_nEventType == E_MOUSE_MOVE) && (m_nState == EMODE_MOVE_BY_MOUSE)){

  m_nState = EMODE_MOVE_BY_MOUSE;

}

else if((event->m_nToolbarState == ISTATE_ARROW) && (event->m_nEventType == E_MOUSE_L_UP) && (m_nState == EMODE_MOVE_BY_MOUSE)){

  m_nState = EMODE_REDRAW_FRAME;

}

else if((event->m_nToolbarState == ISTATE_ARROW) && (event->m_nEventType == E_MOUSE_MOVE) && (m_nState == EMODE_DRAW_SWEEP)){

  m_nState = EMODE_DRAW_SWEEP;

}

else if((event->m_nToolbarState == ISTATE_ARROW) && (event->m_nEventType == E_MOUSE_L_UP) && (m_nState == EMODE_DRAW_SWEEP)){

  m_nState = EMODE_SWEEP_SELECT;

}

else if((event->m_nEventType == E_DEL_DOWN) && !m_bedit){

  m_nState = EMODE_DELETE;

}

else if((event->m_nEventType == E_UP_DOWN) && (event->m_nToolbarState == ISTATE_ROTATE)){

  m_nState = EMODE_ROTATE_BY_KEY;

}

else if((event->m_nEventType == E_DOWN_DOWN) && (event->m_nToolbarState == ISTATE_ROTATE)){

  m_nState = EMODE_ROTATE_BY_KEY;

}

else if((event->m_nEventType == E_LEFT_DOWN) && (event->m_nToolbarState == ISTATE_ROTATE)){

  m_nState = EMODE_ROTATE_BY_KEY;

}

else if((event->m_nEventType == E_RIGHT_DOWN) && (event->m_nToolbarState == ISTATE_ROTATE)){

  m_nState = EMODE_ROTATE_BY_KEY;

}

else if((event->m_nEventType == E_UP_UP) && (event->m_nToolbarState == ISTATE_ROTATE) && (m_nState = EMODE_ROTATE_BY_KEY)){

  m_nState = EMODE_REDRAW_FRAME;

}

else if((event->m_nEventType == E_DOWN_UP) && (event->m_nToolbarState == ISTATE_ROTATE) && (m_nState = EMODE_ROTATE_BY_KEY)){

  m_nState = EMODE_REDRAW_FRAME;

}

else if((event->m_nEventType == E_LEFT_UP) && (event->m_nToolbarState == ISTATE_ROTATE) && (m_nState = EMODE_ROTATE_BY_KEY)){

  m_nState = EMODE_REDRAW_FRAME;

}

else if((event->m_nEventType == E_RIGHT_UP) && (event->m_nToolbarState == ISTATE_ROTATE) && (m_nState = EMODE_ROTATE_BY_KEY)){

  m_nState = EMODE_REDRAW_FRAME;

}

else if((event->m_nEventType == E_UP_UP) && (event->m_nToolbarState == ISTATE_ARROW) && ((m_nState = EMODE_MOVE_UP) || (m_nState = EMODE_MOVE_DOWN) || (m_nState = EMODE_MOVE_LEFT) || (m_nState = EMODE_MOVE_RIGHT))){

  m_nState = EMODE_REDRAW_FRAME;

}

else if((event->m_nEventType == E_DOWN_UP) && (event->m_nToolbarState == ISTATE_ARROW) && ((m_nState = EMODE_MOVE_UP) || (m_nState = EMODE_MOVE_DOWN) || (m_nState = EMODE_MOVE_LEFT) || (m_nState = EMODE_MOVE_RIGHT))){

  m_nState = EMODE_REDRAW_FRAME;

}

else if((event->m_nEventType == E_LEFT_UP) && (event->m_nToolbarState == ISTATE_ARROW) && ((m_nState = EMODE_MOVE_UP) || (m_nState = EMODE_MOVE_DOWN) || (m_nState = EMODE_MOVE_LEFT) || (m_nState = EMODE_MOVE_RIGHT))){

  m_nState = EMODE_REDRAW_FRAME;

}

else if((event->m_nEventType == E_RIGHT_UP) && (event->m_nToolbarState == ISTATE_ARROW) && ((m_nState = EMODE_MOVE_UP) || (m_nState = EMODE_MOVE_DOWN) || (m_nState = EMODE_MOVE_LEFT) || (m_nState = EMODE_MOVE_RIGHT))){

  m_nState = EMODE_REDRAW_FRAME;

}

else if((event->m_nToolbarState == ISTATE_ROTATE) && (event->m_nEventType == E_MOUSE_L_DOWN)){

  SavePoint(event);

  m_nState = EMODE_ROTATE_BY_MOUSE;

}

else if((event->m_nToolbarState == ISTATE_ROTATE) && (event->m_nEventType == E_MOUSE_MOVE) && (m_nState == EMODE_ROTATE_BY_MOUSE)){

  m_nState = EMODE_ROTATE_BY_MOUSE;

}

else if((event->m_nToolbarState == ISTATE_ROTATE) && (event->m_nEventType == E_MOUSE_L_UP) && (m_nState == EMODE_ROTATE_BY_MOUSE)){

  m_nState = EMODE_REDRAW_FRAME;

}

else if((event->m_nToolbarState == ISTATE_ARROW) && (event->m_nEventType == E_MOUSE_MOVE) && (m_nState == EMODE_MANIPULATE_COPY)){

  m_nState = EMODE_MANIPULATE_COPY;

}

else if((event->m_nToolbarState == ISTATE_ARROW) && (event->m_nEventType == E_MOUSE_L_UP) && (m_nState == EMODE_MANIPULATE_COPY)){

  m_nState = EMODE_MANIPULATE;

}

else if((event->m_nToolbarState == ISTATE_ELLIPSE) && (event->m_nEventType == E_MOUSE_L_DOWN)){

  SavePoint(event);

  m_nState = EMODE_DRAW_ELLIPSE;

}

else if((event->m_nToolbarState == ISTATE_ELLIPSE) && (event->m_nEventType == E_MOUSE_MOVE) && (m_nState == EMODE_DRAW_ELLIPSE)){

  m_nState = EMODE_DRAW_ELLIPSE;

}

else if((event->m_nToolbarState == ISTATE_ELLIPSE) && (event->m_nEventType == E_MOUSE_L_UP) && (m_nState == EMODE_DRAW_ELLIPSE)){

  m_nState = EMODE_CREATE_ELLIPSE;

}

else if(event->m_nEventType == E_GROUP && !m_bedit){

  m_nState = EMODE_GROUP;

}

else if(event->m_nEventType == E_UNGROUP && !m_bedit){

  m_nState = EMODE_UNGROUP;

}

else if(event->m_nEventType == E_TOBACK && !m_bedit){

  m_nState = EMODE_ARRANGE_TOBACK;

}

else if(event->m_nEventType == E_TOFRONT && !m_bedit){

  m_nState = EMODE_ARRANGE_TOFRONT;

}

else if(event->m_nEventType == E_CONTEXT_MENU && !m_bedit){

  m_nState = ShowPopUpMenu(event);

}

else if((event->m_nEventType == E_MOUSE_L_DOWN) && (event->m_nToolbarState == ISTATE_RECT)){

  SavePoint(event); 

  m_nState = EMODE_DRAW_RECT;

}

else if((event->m_nEventType == E_MOUSE_MOVE) && (event->m_nToolbarState == ISTATE_RECT) && (m_nState == EMODE_DRAW_RECT)){

  m_nState = EMODE_DRAW_RECT;

}

else if((event->m_nEventType == E_MOUSE_L_UP) && (event->m_nToolbarState == ISTATE_RECT) && (m_nState == EMODE_DRAW_RECT)){

  m_nState = EMODE_CREATE_RECT;

}

else

{

  m_nState = EMODE_NOP;

  int et = event->m_nEventType;

  if((et == E_DEL_DOWN || et == E_GROUP || et == E_UNGROUP || et == E_CONTEXT_MENU || et == E_TOFRONT || et == E_TOBACK || et == E_SELECT_ALL) && m_bedit)

  {

   ReleaseCapture();

   m_points_collection.RemoveAll();

   m_nState = EMODE_REDRAW;

   m_bedit = false;

  }

}

}

Като се замисля с тоя if май се улях все можеше и по-добре да го измисля:)

Link to comment
Share on other sites

Кво ша кажетe за тоя if :)

...

Като се замисля с тоя if май се улях все можеше и по-добре да го измисля:)

"On an infinitely wide screen, every program is a one liner."

--Christian Bauernfeind.

;)

Link to comment
Share on other sites

"On an infinitely wide screen, every program is a one liner."

--Christian Bauernfeind.

;)

Харесва ми тоя пич :):):)

Link to comment
Share on other sites

  • 2 months later...

mnogo off topic..... "tup sum" ...na 99.9% ve4e se otkazvam ot opitite si da navlqza v tazi oblast...(programiraneto)..mai she se sredoto4a kum drugite ezici..govorimite :) shapka vi svalqm!

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.


×
×
  • Create New...