Algoritmusok

scoreboard keszitese

Fórumok

(Pl. bizonyos) webszerverek biztositanak egy olyan feature-t, hogy az egyes child processzek eppen milyen allapotban jarnak. A kerdes az, hogy hova erdemes irni ezeket az allapot infokat?

Hirtelen felindulasbol csinaltam egy mysql memory tablat, es oda mennek az 'update status ....' sql query-k (ezt jelenleg tesztelem). De gondoltam meg arra is, menjenek ezek az update-ek inkabb memcached-be. Ti hogy oldanatok meg ezt a feladatot? (Amugy egy C-ben irt demonrol van szo).

[Megoldva] teljesítmény elosztás erőművek között

Fórumok

Sziasztok,
az alábbi egyszerű teljesítmény-elosztásra szeretnék ötleteket kapni:

van n darab erőmű. Az n darab erőmű között kéne szétosztani p teljesítményt. Az erőműveknek van súlyozása, azaz szeretnénk, ha ez alapján a súlyozás alapján osztanák el a teljesítményt egymás között.
A nehézség, hogy van az erőműveknek max. teljesítménye, illetve hogy nem képződhet maradék (az összes teljesítményt fel kell használni, se többet, se kevesebbet, azaz az osztásból eredő kerekítési hibát a végén szét kell kenni az erőművek között).

Példák:
Igényelt: 3000
Erőmű 1. (max. telj. 2000) - súly 1/3 = 3000 * 1/3 = 1000
Erőmű 2. (max. telj. 3000) - súly 2/3 = 3000 * 2/3 = 2000 (ez ok)

Igényelt: 5001
Erőmű 1. (max. telj. 3000) - súly 1/3 = 6000 * 1/3 = 1667
Erőmű 2. (max. telj. 3000) - súly 2/3 = 6000 * 2/3 = 3334 (nem ok, mert átléptük a max. teljesítményt, pedig ki tudtuk volna elégíteni az igényt ha az Erőmű 1.-et tovább húzzuk)

Igényelt: 3950
Erőmű 1. (max. telj. 2000) - súly 1/3 = 3950 * 1/3 = 1316
Erőmű 2. (max. telj. 3000) - súly 2/3 = 3950 * 2/3 = 2633 (majdnem ok, de a kerekítésekből adódoan még hozzá kell adni 1-et valamelyik erőműhöz, amelyiknek maradt szabad kapacitása, jelen esetben mindegy melyikhez )

Szerkesztve (ez sikerült hétvégén):

http://pastebin.com/E4Wdp821

Még majd a setPlantsRatio()-s részt még átnézem, nem vagyok benne biztos, hogy a súlyozást újra kell e számolni a ciklusban.
Mindenkinek köszönöm a segítséget, és az ötleteket!

saját hash-függvény

Fórumok

Sziasztok,

van egy ca. 9500 db termékböl álló listám excelben, ezeket egy másik mappába olvasom be vba-val sorról sorra.
Van opció a duplán megjelenö termékek kiszürésére is. Jelenleg ez úgy müködik, hogy mielött berakom az éppen beolvasott terméket egy tömbbe, megnézem, hogy a tömbben már benne van-e. Ez elég lassú(kb 15mp.) és exponenciálisan nö több termékkel, de utána már csak ca. 7300 termék marad.

A következöt gondoltam ki és már müködik is nagyjából:
gyártok egy függvényt, ami a termékek leírásából gyárt egy hash értéket (jelenleg 1 és kb 1.000.000 között), long adattípusban. Egy bool tömbben (1.000.000 elemmel) megnézem, az adott hash index alatt "false" érték van-e - ha igen, berakom a terméket a másik tömbbe, és a hash index alatti értéket "true"-ra változtatom (a két listának az az oka, hogy meg kell tartanom az eredeti sorrendet a termékek között, ezért egy igazi hash tabella nem játszik).
Ez eddig jól müködik, csak még nem sikerült olyan függvényt gyártanom, amelyik az összes termékleírásra tud egyedi hash értéket generálni (kb 7200-ra sikerül*).

Van valakinek ötlete egy gyors és müködö függvényre? Excelben/VBA-ban nincs md5 vagy sha1, ezeket idegen könyvtárakból nem akarnám betölteni, és ezek nem is egésszámú indexeket generálnának. Persze ha sikerül lejebb szorítani a max. hash értéket, azért sem haragszom.

Jelenleg a betük ascii értékét a karakterlánc beli elhelyezkedésükkel kombinálom és modulo 6 maradékkal dolgozva más és más értéket is hozzá adok a maradékosztály által elöállított blokkoknak.

elöre is köszi a tippeket.

*egy eshetöség létezik még, hogy az eredeti, tömb-végig-keresös-algorithmus hibázik és tényleg csak ca. 7200 termék van duplák nélkül - ezt még nem teszteltem.

adatok átvitele két rendszer között

Fórumok

Olyat kéne csinálnom, hogy két ~2000 táblás rendszer között adatokat átvinni. a probléma csak annyi, hogy az egyik rendszeren is van szoftver ami masszírozza az adatokat és a másikon is, szóval az FK-k és az indexek nem biztos, hogy ugyanazok lesznek. A rendszerek egyedileg konzisztensek.
Jön az user és azt mondja, hogy ezt a 2 tábla adatait szeretném átvinni A-ból B-be.
A 2 tábla mondjuk user és user_address, egy usernek lehet több címe is.

Mit csinálnátok?

Algoritmust keresek. "A" rendszerből kicsomagolom FK és index helyesen bizonyos táblák adatait, "B" rendszerbe meg beimportálom FK és index helyesen.
Algoritmust keresek, merre induljak el?

Darabolás [MEGOLDVA]

Fórumok

Belebonyolódtam egy feladatba, tud valaki segíteni?

Adott egy X érték (pozitív egész szám), amit szét kell darabolnom egy tömbbe úgy, hogy a tömb első eleme szigorúan Y, az utolsó eleme legfeljebb Y legyen, a közbelsők (ha vannak), akkor 2Y maximum. Mi a legjobb elosztás, hogy a lehető legjobban megközelítsük a 2Y-t a köztes elemeken?

Pl. ha X = 50, Y = 5, akkor az elosztás: 5, 10, 10, 10, 10, 5, a képlet, amivel próbálkoztam, csak ideális esetben jó: ((X-2Y) / 2Y) + 2

Az egyszerűség kedvéért maradjunk az Y = 5 értéknél, bármilyen X-re működnie kell.

UPDATE, MEGOLDÁS:

Írtam egy függvényt, ami tetszőleges közbenső értékekkel is működik (2Y helyett bármi lehet).
Az $x = összes elem, $y = első és utolsó maximális elem (az első egyenlő $y-nal), $insider = közbenső maximális elemek száma.

Felhasználható olyan listák előállítására, ahol az első és az utolsó oldalon fejléc található (több helyet foglal), a közbenső oldalakon meg nem (több tétel fér el), pl. többoldalas számlák előállítása esetén.


function partition($x, $y, $insider)
{
 $after_first_item = $x - $y;
 $singularity = $after_first_item;
 $next = 0;
 $next_try = $insider;
 $items = array($x);
  if ($singularity > 0)
  {
   do 
    {
	if ($singularity <= $y && $singularity > 0)
		{
		$items[] = $singularity;
		break;		
		}
	if ($singularity < 0)
	        { 
	        $next++;
	        $next_try = $insider - $next;
                $singularity = $after_first_item;
	        $items = array($x);	
                }
	$items[] = $singularity;
	$singularity = ($singularity - $next_try) ;
	
    } while (1);
  }

 $count_items = count($items);
 return array($next_try, $count_items);
}

regexp kiértékelési érdekesség

Fórumok

A következő érdekes dologgal találkoztam, és nem tudom megmagyarázni. Remélem, van köztetek olyan, aki jobban ért ehhez, mint én, és elmondja, mi miért.

Szóval van egy reguláris kifejezés: a+(ab)*(abc)*

Van egy minta: aaaababababcabcabc

A reguláris kifejezés, amennyire értem, úgy kéne működjön, hogy legalább 1, de lehetőleg minél több "a" betűt kéne találjon, aztán 0 vagy több "ab" kombinációt, aztán 0 vagy több "abc" kombinációt.

Pl. ezen az oldalon azt írják, hogy "the plus is greedy. That is, the plus causes the regex engine to repeat the preceding token as often as possible. Only if that causes the entire regex to fail, will the regex engine backtrack."

Ennek alapján az a+-nak 4 darab a-t kéne találnia, és ezután az ab 0-t talál, abc 0-t talál. A kifejezés illeszkedik, hiszen 0 ab és 0 abc az elegendő.

C#-ban ez állítólag így is működik, meg állítólag a Visual Studio search boxában is.

Viszont pl. ha linux alatt az egrep parancsot használom, akkor nem.
$ echo aaaababababcabcabc | egrep --color a+
az első 4 a betűt beszínezi,
echo aaaababababcabcabc | egrep --color a+(ab)*(abc)*
viszont beszínezi az egész mintát.

Szóval arra lennék kíváncsi, hogy ez miért van.

[megoldva] Status code - egy (int) adat kuldese, tobb tartalommal

Fórumok

Udv!

Keresem egy megoldas nevet, amikor pl egy status code-ot ilyen modon ertelmezek:
- 0: ures adat
- 1: "piros"
- 2: "nagy"
- 4: "kocka"

igy pl:
- ha kapok egy 3-ast, akkor egy "nagy piros"
- ha kapok egy 5-ost akkor "piros kocka"
- ha kapok egy 6-ost, akkor "nagy kocka"
- ha kapok egy 7-est, akkor "nagy piros kocka"

tehat az egyes szamok osszegebol derul ki, hogy mi a vegso adat.

Van ennek valami hivatalos elnevezese?

Koszi!

Kétértelmű kódolt üzenet előállítása

Fórumok

Sziasztok!

Nemrég jutott eszembe az alábbi kódolási feladat, és szerintem érdekes, cserébe hátha másnak is.

Adott két kódolandó üzenet, körülbelül azonos hosszúságúak. Feladat: állítsunk elő egy kódolt üzenetet és két jelszót. A két jelszóval ugyanabból a kódolt üzenetből dekódolhatjuk az eredetieket.

Egyik triviális megoldás a Vigenère-rejtjel, ahol a kódolt üzenettel megegyező hosszúságú jelszóval minden annál rövidebb üzenet előállítható – ezért a feladatnak legyen mondjuk kritériuma, hogy a jelszavak lényegesen rövidebbek a kódolt szövegnél.

Másik triviális megoldás, ha a két kódolt üzenetet egymás után fűzzük – az algoritmus visszaadja azt a részét az üzenetnek, amelyet képes dekódolni a megadott jelszóval. Ezt is kerüljük.

Van olyan rejtjelezési megoldás, amivel a fenti feladat megoldható?

Offline, DB nélküli LAN chat - hogyan?

Fórumok

Sziasztok,

Szeretnék egy offline chat jellegű programot készíteni (lényegében adott problémákat lehetne felvenni, majd arra válaszolni). A programhoz nem használható semmilyen DB, viszont a kommunikációhoz van egy megosztott mappa amit minden gép elér. A felhasználók nincsenek egyszerre online, így mindenfajta üzenetküldés kilőve, viszont a problémákról és arra kapott válaszokról nekik is értesülniük kell.

A jelenlegi legjobb ötlet, hogy minden problémára indított beszélgetési szál egy szöveges fájl lenne a megosztott mappában, timestamppel. Így a kliensek időnként megnéznék, hogy frissült-e, és ha igen, akkor végigolvasnák. Ha valaki hozzászól, akkor ezt a fájlt frissítené.
A probléma az, hogy elméletben hozzáférhetnek többen, egy időben, bár erre kicsi az esély (egyszerre max 50 online felhasználóval).

Ti hogyan állnátok neki egy ilyen program megvalósításának? (Nem a programozás résznek!)