Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Mozgalica sa mogucim varijantama - kako resiti

[es] :: MS SQL :: Mozgalica sa mogucim varijantama - kako resiti

[ Pregleda: 2747 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MatezYU

Član broj: 4114
Poruke: 1586
212.200.31.*



+17 Profil

icon Mozgalica sa mogucim varijantama - kako resiti16.07.2008. u 13:45 - pre 192 meseci
Pozdrav.
Trebalo bi napraviti neku funkciju koja mi vraca sve moguce kombinacije brojeva.
primer:
select vrati(_5_6%)

da mi vrati sve moguce
05060001
05060002
..itd
15050001
itd..
svuda da idu od 0 - 9 vrednosti i da ukupno ima 10 cifara broj. Na mestima gde je _ idu vrednosti od 0 - 9 a iza % kao like sve moguce varijante do 10 cifara
 
Odgovor na temu

sallle
Sasa Ninkovic
GTECH
Beograd

Član broj: 146
Poruke: 480
*.adsl.beotel.net.

ICQ: 20785904


+4 Profil

icon Re: Mozgalica sa mogucim varijantama - kako resiti17.07.2008. u 01:05 - pre 192 meseci
varijanta a)
napravis neku while petlju od 1 do 10cif broja i gledas da li broj odgovara ulaznoj masci (like)

varijanta b)
krenes parsiras ulaznu masku, pa budzis 10 ugnjezdenih for petlji (od 0 do 9), pri cemu petlju i-tu ne vrtis ako je fixirana na odredjeni broj...


i pod a) i pod b) ces sve te brojeve da guras u neku tabelu pa sve to ispises, a i da ne gurnes, svakako ce u jednom trenutku svi da se nalaze u memoriji ili nesto slicno (pretpostavljam da neces sekvencijalno slati brojeve na neki izlazni port).
potencijalno resenje moze da ti sadrzi brojeve od 0 do 100 000 000 000-1. za predstavu max broja ti treba preko 32 bita. al aj nek je i dovoljno 4 bajta po broju.
4*100 000 000 000 = cca 400 giga ... ovo je gruba procena memorije koja ti treba za mozgalicu, tako da i nije neka mozgalica...

 
Odgovor na temu

MatezYU

Član broj: 4114
Poruke: 1586
212.200.31.*



+17 Profil

icon Re: Mozgalica sa mogucim varijantama - kako resiti17.07.2008. u 07:04 - pre 192 meseci
Imam varijantu sa kursorom ali to ne valja..
Previse je sporo. Do cetiri cifre je jos podnosljivo, odradi za 2 sekunde.
Medjutim kako idem dalje, 5 , 6 cifra on sve sporije radi..
Sa 8 cifara je nemoguce sporo. Ugnjezdio sam kursore jedan u drugog, medjutim to nije pravo resenje. Treba mi nesto efikasno, za zauzme malo memorije i da brzo radi..
 
Odgovor na temu

a_ddk
amater
Beograd

Član broj: 188454
Poruke: 3
79.101.228.*



Profil

icon Re: Mozgalica sa mogucim varijantama - kako resiti21.07.2008. u 13:58 - pre 191 meseci
Tebi dakle treba da se generisu brojevi po ovakvom formatu:

X5Y6ABCDEF

Ovo ima 10 brojeva duzine, 5 i 6 su fiksni a ostali svi mogu biti od 0-9

Bez kursora i petlje trebalo bi da moze ovako:

Imas tabelu Brojevi (Broi int) i u njioj 10 redova, sa vrednostima Broj = 0,1,2,..8,9

Da bi kombinovao sve vrednosti na pozicijama X Y pises nesto kao:

SELECT X = X.Broj, Y= Y.Broj
FROM Brojevi AS X, Brojevi AS Y

Ovo ce ti dati dekartov proizvod tabele Brojvi sa samom sobom, dakle 10x10 = 100 redova.

Po istom principu dodajes i ostale brojeve:

SELECT
X = X.Broj
, Y= Y.Broj
, A= A.Broj
, B= B.Broj
, C= C.Broj
, D= D.Broj
, E= E.Broj
, F= F.Broj
FROM Brojevi AS X
, Brojevi AS Y
, Brojevi AS A
, Brojevi AS B
, Brojevi AS C
, Brojevi AS D
, Brojevi AS E
, Brojevi AS F

Imaces 10^8 kombinacija, sto je 100,000,000 rekorda. Nije ni cudo sto je sporo, ali sta se moze. Kompjuteri su izmisljeni da bi nesto radili. Cisto iz radoznalosti radi u inkrementima (prvo samo X,Y pa onda X,YA pa XYAB, da vidis kako utice n brzinu. Verovatno nece proci sve u 2 sekunde, ali ce verujem biti brze od kursora.

U Accesu, za 6 brojeva (0 do 5) radi za 2 sekunde, sa 7 brojeva treba 20 sekundi (deset pota vise nego za prethodnih 7) pa pretpostavljam da ce za 8 brojeva trebati 10 puta vise nego za 7, to jest 200 sekundi, dakle malo vise od tri minuta. Nazalost, vreme izvrsavanja verovatno ne ide linearno, pa ce biti i vise. U MS SQL bice brze nego u Accessu. ej, to ti je ipak 100,000,000 rekorda. Sto miliona. Ako ces da ih insertujes u neku tabelu, pazi da te ne ubije administratr baze ;-)

O, evo ga, pukao kveri u Accesu, posle 5 minuta, na nekih 64,000,000 rekorda javio 'not enough memory in temporary disk' Bice da se posao mora razbiti na delove, barem u Accessu.

:-)






[Ovu poruku je menjao a_ddk dana 21.07.2008. u 15:14 GMT+1]
 
Odgovor na temu

MatezYU

Član broj: 4114
Poruke: 1586
212.200.31.*



+17 Profil

icon Re: Mozgalica sa mogucim varijantama - kako resiti21.07.2008. u 14:50 - pre 191 meseci
Pokusao sam resiti problem i resio isto kao sto si ti napisao malopre..
Ok je varijanta do 4 cifre, onda radi relativno brzo, odradi za 1-2 sekunde na sql serveru. Medjutim posle 5 i 6 cifre pocinje glavobolja..
Kada unesem recimo samo jedan broj npr. 5xxxxxxx ove x cifre generise jako dugoooo... Radio sam sa privremenim tabelama i pokusao da optimizujem ali dzaba.. Ipak je to jako veliki broj cifara i kombinacija.. Napunicu jednu tabelu sa svim mogucim kombinacijama pa cu iz nje da vucem select-e. Ne vidim bolje resenje.. Ovako je sporo..
 
Odgovor na temu

[es] :: MS SQL :: Mozgalica sa mogucim varijantama - kako resiti

[ Pregleda: 2747 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.