ORG

quake.net.pl » Polskie Centrum Quake od 1998 roku



Wersja: Jasna / Ciemna

wagowa metoda kodowania ?

bisz

Od: 2003-04-29

Ranga: Newbie

Dodano dnia: 2004-10-13 18:23:04

witam, mam pytanie do tutejszych mózgów, i matematyków tu czyt Yaboll, bryan, cerfes (to corvus fizyk ?:P)

znacie zapewne taką metode np nadawania jakiejs funkcji chociazby admin na serwerze counter strike (kiedys to instalowalem w cafe)

jest szereg 15 uprawnień

wygladających następująco
2 uprawnienie 1

4 uprawnienie 2

8 uprawnienie 3

16 uprawnienie 4

32 uprawnienie 5

64 uprawnienie 6

128 uprawnienie 7

256 uprawnienie 8

512 uprawnienie 9

1024 uprawnienie 10

2048 uprawnienie 11

4096 uprawnienie 12

8192 uprawnienie 13

16384 uprawnienie 14

32768 uprawnienie 15
jak zapewne bystrzy matematycy zauważą są to kolejne potęgi 2.

i chcemy dać takiemu adminowi wybrane z tych uprawnień niech to będą uprawnienia numer 1,6,3 i 4, sumujemy te liczby noi powiedzmy ze tutaj dodałem (mam nadzieje ze sie nie pomyliłem wyszło 90)

wklepujemy liczbe do configa servera i w tym momencie nasz server interpretujac liczbe 90 na swoj sposob wie ze chodzi nam o uprawnienia numer 1,3,4,6
moje pytanie brzmi.... jaki jest kod źródłowy takiego rozkodowującego algorytmu ???? bo przeciez tych kombinacji kurczę troszke będzie (nie chce mi sie liczyc bo kombinatorykę dawno miałem i musiałbym do tablic patrzec na te wzorki) ale troszke będzie i machinom troche czasu by to zajęło więc pytam jaki jest na to algorytm inteligentny bo jakis musi byc... prosze nie wypowiadac sie jesli nie ma sie nic do powiedzenia..

przodownikpracy

Od: 2002-07-09

Ranga: BFG Fragger

Dodano dnia: 2004-10-13 19:07:04

to jest proste, kiedys sobie napisalem funkcje ``dekodujaaca\'\' ale zrodla dawno wsiakly =/
odejmujesz najwyzsza mozliwa potege dwa i sprawdzasz czy wynik >= 0 - jesli jest to dane uprawnienie jest ustawione, i tak zlazisz ze stopniami poteg do 0. panimajesz?

Эй, диджей, давай, давай, делай, делай хорошо!

ToTo

Od: 2004-02-18

Ranga: Newbie

Dodano dnia: 2004-10-14 00:33:22

a może on poprostu zamienia tą liczbę na binarną. I wg bitów sprawdza, które uprawnienia mają 1 a które 0. np 90=1011010,(ostatni bit liczony jest jako 0 pewnie).

26.08.2004- Data przyjecia na rekruta do 150watt :)

Vymmiatacz

Od: 2002-08-08

Ranga: Rocket Rider

Dodano dnia: 2004-10-14 11:14:06

Mniej więcej coś takiego, napisałem to w minutę, i mogą być błędy :-)
unsigned int premissions;

unsigned int power<15>={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768}
for (int i=0; i<16; i++)

if (premissions & power*) daj_uprawnienie(i);
W miejsce ostrych nawiasów daj kwadratowe, to ograniczenie tego forum.*

"Kwak you" - said the president... "spieprzaj dziadu" - powiedziała kaczka...**

**

przodownikpracy

Od: 2002-07-09

Ranga: BFG Fragger

Dodano dnia: 2004-10-14 11:33:22

a jak t ma niby dzialac? poza tym wychodzisz poza tablice

Эй, диджей, давай, давай, делай, делай хорошо!

bisz

Od: 2003-04-29

Ranga: Newbie

Dodano dnia: 2004-10-14 13:16:50

ej dobra juz koniec tematu zamykac >D

cerfes

Od: 2003-09-05

Ranga: Newbie

Dodano dnia: 2004-10-15 16:14:05

jak ktoś mądrze powiedział: jak zamienisz 90 na binarną, to dostaniesz:
1011010
jak widać jedynki mamy dla pierwszego, trzeciego, czwartego i szóstego bitu. już wiemy jakie ma kto uprawnienia. oczywiście tak samo działa (też przez kogoś wspomniana) metoda odejmowania największej możliwej wielokrotności dwójki. w sumie wszystko jasne, ale temat póki co się nie zaśmieca a może z tego wyniknąć ciekawa dyskusja. nadaną mi władzą :P pozostawię otwarty.

przodownikpracy

Od: 2002-07-09

Ranga: BFG Fragger

Dodano dnia: 2004-10-15 19:36:48

hm... zdaje sie nie jest mozliwe adresowanie pojedynczych bitow pamieci, nie liczac pol bitowych, a te z kolei nie sa chyba dostepne we wszystkich jezykach wysokiego poziomu. z drugiej stronki giery sie robi zazwyczaj w c, a tam owe pola sa...
bek, obstawiam jednak swoja metode.

Эй, диджей, давай, давай, делай, делай хорошо!

Yaboll

Od: 2002-04-05

Ranga: BFG Fragger

Dodano dnia: 2004-10-16 21:25:04

1 bit nie jest brany pod uwage (pamietajcie ze liczy sie od tylu).
2^0=1

uprawnienia liczone sa dopiero od 2 bitu
czyli 2^1, 2^2 itd.

Ale chyba sie po kims powtarzam.

Podręcznik skauta (USA, 1934)*

W ciało każdego chłopca, który stał się nastolatkiem, Stwórca wszechświata wlał bardzo ważny płyn.

Ten płyn to płyn płciowy...

Każde działanie, które doprowadza chłopca do wydalenia tego płynu z ciała, osłabia jego siłę i zmniejsza jego zdolność do obrony prz...

Vymmiatacz

Od: 2002-08-08

Ranga: Rocket Rider

Dodano dnia: 2004-10-19 10:37:04

No dobra ludziska, macie co chcecie:

includeinclude

unsigned int permissions=666;

int i;
void main()

{

clrscr();
for (i=0; i

if (permissions & (unsigned)pow(2,i)) printf(\"%.0f\n\",pow(2,i));

}
Ten programik rozłoży liczbę 666 na składniki (potęgi dwójki)

"Kwak you" - said the president... "spieprzaj dziadu" - powiedziała kaczka...**

**

przodownikpracy

Od: 2002-07-09

Ranga: BFG Fragger

Dodano dnia: 2004-10-19 20:16:00

> #include

windziarz! ;)

Эй, диджей, давай, давай, делай, делай хорошо!

bisz

Od: 2003-04-29

Ranga: Newbie

Dodano dnia: 2004-10-19 21:25:07

btw frag mam problemy z zaintalowaniem c++ ... zglosze sie do ciebie >]