![]() |
| |||||||
| Home | Register | Blogs | FAQ | Members List | Calendar | Downloads | Arcade | Mark Forums Read |
| Algorithms The source of algorithms for your project |
![]() |
| | LinkBack | Thread Tools | Display Modes |
| | #31 |
| Дошкольник Join Date: Aug 2004 Location: Oxford
Posts: 141
Rep Power: 4 Reputation:
10 | Re: Минимальные, оптимальные, красивые решения простых задач :) PHP Code:
__________________ Она нахмурила свой узенький лобок... |
| | |
| | #32 | ||
| Какое небо, бля, Багдад! Join Date: Oct 2005 Location: Ереван
Posts: 1,646
Rep Power: 3 Reputation:
68 | Re: Минимальные, оптимальные, красивые решения простых задач :) Мое решение. Ограничения: корректность строки не проверяется, не должно быть пробелов, из чисел только неотрицательные целые, число с точностью unsigned int, всё выражение с точностью double, деление на ноль не отслеживается. Code: double eval(char *str, unsigned int end, unsigned int start=0){
unsigned int v=0, brk=0, hi=0, i;
for(i=start; i<end; i++){
if(str[i]=='('){brk++;}
else if(str[i]==')'){if(i==end-1 && !hi){return eval(str, --end, ++start);}brk--;}
else if(!brk && (((str[i]=='*' || str[i]=='/') && (str[hi]!='+' && str[hi]!='-')) || (str[i]=='+' || str[i]=='-'))){hi=i;}
else v=v*10+str[i]-'0';
}
if(!hi){return v;}
double l=eval(str, hi, start), r=eval(str, end, hi+1);
return str[hi]=='+' ? l+r : str[hi]=='-' ? l-r : str[hi]=='*' ? l*r : l/r;
} Cамый короткий вариант - javascript:eval(str); ![]() ======== Quote:
функиция, нумерующая элементы множества (от 0 по ++), количество всевозвожных элементов n, и уменьшить нужно ТОЛЬКО расход памяти, то элементарно и грубо решается в среднем расходуя n*sizeof(bool) (может лучше использовать char) плюс 3-4 инта. Можно даже меньше в несколько раз, если использовать массив битов. Тогда код возрастет. Что-то вроде этого... но, опять таки, решение в лоб... Code: template<class T, unsigned int n, unsigned int (*nE)(T)> double dist(T *A, unsigned int nA, T *B, unsigned int nB){
unsigned int nU=0, nD=0, i; bool b[n];
for(i=0; i<n; b[i++]=0);
for(i=0; i<nA; b[nE(A[i++])]^=1);
for(i=0; i<nB; b[nE(B[i++])]^=1);
for(i=0; i<n; nD+=b[i++]); //можно(?) включить в два предыдущих
for(i=0; i<nA; b[nE(A[i++])]=1);
for(i=0; i<nB; b[nE(B[i++])]=1);
for(i=0; i<n; nU+=b[i++]); //можно(?) включить в два предыдущих
return (double)nD/nU;
} Quote:
...Но иногда хочется расслабиться .
__________________ мордой об лавку LISP is the only language that is truly beautiful. d . Хочу трахнуть Nissan Skyline R34, и ездить на Alessandra Ambrosio | ||
| | |
| | #33 | |
| Дошкольник Join Date: Aug 2004 Location: Oxford
Posts: 141
Rep Power: 4 Reputation:
10 | Re: Минимальные, оптимальные, красивые решения простых задач :) Quote:
Kod knightmare vrode kak bolee kompakten, zato moy gorazdo bolee chitabelen (po moemu) i napisan byl na sutki bystree, tak chto Python rulez! ![]()
__________________ Она нахмурила свой узенький лобок... | |
| | |
| | #34 |
| Какое небо, бля, Багдад! Join Date: Oct 2005 Location: Ереван
Posts: 1,646
Rep Power: 3 Reputation:
68 | Re: Минимальные, оптимальные, красивые решения простых задач :) 2Ablertus: Всё то, о чем ты говоришь, безусловно верно, и к этому приходят опытные программисты... и потом, иногда, в свободные минуты, с ностальгией пишут программы, соответствующие названию темы ,чисто для эстетического наслаждения. А написав, быстро удаляют код, не соответствующий никаким правилам "хорошего тона", правилам переносимости и разным другим ограничением мира... (о.. как загнул!) ...Ждем новых задач! ![]()
__________________ мордой об лавку LISP is the only language that is truly beautiful. d . Хочу трахнуть Nissan Skyline R34, и ездить на Alessandra Ambrosio |
| | |
| | #35 |
| Какое небо, бля, Багдад! Join Date: Oct 2005 Location: Ереван
Posts: 1,646
Rep Power: 3 Reputation:
68 | Re: Минимальные, оптимальные, красивые решения простых задач :) Кстати, о задаче про дистанцию... Кокого это решение? Чисто исходя из практики? 2*(n+An+Bn) обычно бывает больше nA*nB (плюс расход на сравнение при прямом решении)? И всегда ли можно легко реализовать быструю/маленькую нумерующую функцию? Если, конечно, кто-либо вообще сталкивался с этим на практике...
__________________ мордой об лавку LISP is the only language that is truly beautiful. d . Хочу трахнуть Nissan Skyline R34, и ездить на Alessandra Ambrosio |
| | |
| | #36 | |
| Дошкольник Join Date: Aug 2004 Location: Oxford
Posts: 141
Rep Power: 4 Reputation:
10 | Re: Минимальные, оптимальные, красивые решения простых задач :) Quote:
) Ty sozdaesh massiv bitov dopolnitelno k uzhe sushestvujushim v pamjati massivam mnozhestv? Zachem?
__________________ Она нахмурила свой узенький лобок... | |
| | |
| | #37 |
| Какое небо, бля, Багдад! Join Date: Oct 2005 Location: Ереван
Posts: 1,646
Rep Power: 3 Reputation:
68 | Re: Минимальные, оптимальные, красивые решения простых задач :) b[i]=1 если i-ый элемент присутствует и т.д. (при XOR - исключается двойное вхождение, в оба массива), ну а потом просто считаем 1-ы. Это всё оправданно, если тип T ооочень большой + элементы дорого сравнивать + но легко индексировать.
__________________ мордой об лавку LISP is the only language that is truly beautiful. d . Хочу трахнуть Nissan Skyline R34, и ездить на Alessandra Ambrosio |
| | |
| | #38 |
| Дошкольник Join Date: Aug 2004 Location: Oxford
Posts: 141
Rep Power: 4 Reputation:
10 | Re: Минимальные, оптимальные, красивые решения простых задач :) Ponjatno, znachit vse taki imela mesto optimizacija s maksimizaciej skorosti. Ladno, togda chto nibud sam predlozhi ![]()
__________________ Она нахмурила свой узенький лобок... |
| | |
| | #39 |
| Какое небо, бля, Багдад! Join Date: Oct 2005 Location: Ереван
Posts: 1,646
Rep Power: 3 Reputation:
68 | Re: Минимальные, оптимальные, красивые решения простых задач :) Если нельзя изменять массивы, то этот вариант не только быстрее, но и меньше памяти расходует... см. требования. Кстати я чуть-чуть ошибся в их определении: возможность индексации решает проблему сравнивания .
__________________ мордой об лавку LISP is the only language that is truly beautiful. d . Хочу трахнуть Nissan Skyline R34, и ездить на Alessandra Ambrosio |
| | |
| | #40 | |
| Дошкольник Join Date: Aug 2004 Location: Oxford
Posts: 141
Rep Power: 4 Reputation:
10 | Re: Минимальные, оптимальные, красивые решения простых задач :) Quote:
__________________ Она нахмурила свой узенький лобок... | |
| | |
| | #41 |
| Какое небо, бля, Багдад! Join Date: Oct 2005 Location: Ереван
Posts: 1,646
Rep Power: 3 Reputation:
68 | Re: Минимальные, оптимальные, красивые решения простых задач :) Ну ладно, понятно с памятью всё уже... я просто про скорость не забывал... Есть еще задачи???
__________________ мордой об лавку LISP is the only language that is truly beautiful. d . Хочу трахнуть Nissan Skyline R34, и ездить на Alessandra Ambrosio |
| | |
| | #42 |
| Дошкольник Join Date: Aug 2004 Location: Oxford
Posts: 141
Rep Power: 4 Reputation:
10 | Re: Минимальные, оптимальные, красивые решения простых задач :) ladno, ya ne xotel sporit, prosto bylo interesno net, ya sam zhdu ![]()
__________________ Она нахмурила свой узенький лобок... |
| | |
| | #43 |
| Какое небо, бля, Багдад! Join Date: Oct 2005 Location: Ереван
Posts: 1,646
Rep Power: 3 Reputation:
68 | Re: Минимальные, оптимальные, красивые решения простых задач :) Вот проблема (лучше что-нибудь, чем ничего). Дан двумерный массив NxM с булев. значениями. Нужно выбрать случайный элемент со значением true - выбрать пару (x, y). С оптимизацией во все стороны. ![]() Доступна rand(), ну или что там еще бывает. ![]()
__________________ мордой об лавку LISP is the only language that is truly beautiful. d . Хочу трахнуть Nissan Skyline R34, и ездить на Alessandra Ambrosio |
| | |
| | #44 |
| Дикообраз-безобраз | Re: Минимальные, оптимальные, красивые решения простых задач :) при чтении массива в память дзери хет ншел которые тру и псевдослучайно их тыкать.
__________________ Forza Alb-Violeţii. |
| | |
| | #45 | |
| Какое небо, бля, Багдад! Join Date: Oct 2005 Location: Ереван
Posts: 1,646
Rep Power: 3 Reputation:
68 | Re: Минимальные, оптимальные, красивые решения простых задач :) Quote:
...или я чего-то не понял? Т. е. создавать еще один массив пар координат элементов, значения которых в главном массиве true? А лучше?
__________________ мордой об лавку LISP is the only language that is truly beautiful. d . Хочу трахнуть Nissan Skyline R34, и ездить на Alessandra Ambrosio | |
| | |