-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!.POSTED!not-for-mail
From: Piotrne <p...@p...onet.pl>
Newsgroups: pl.comp.programming
Subject: Re: funkcja haszująca/skrótu
Date: Tue, 24 Sep 2013 00:53:22 +0200
Organization: ATMAN - ATM S.A.
Lines: 92
Message-ID: <l1qgp1$dpi$1@node1.news.atman.pl>
References: <l1q5qe$d61$1@node2.news.atman.pl>
<5...@g...com>
NNTP-Posting-Host: pc-nest02-68.sikornik.net
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: node1.news.atman.pl 1379976801 14130 91.123.219.68 (23 Sep 2013 22:53:21
GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Mon, 23 Sep 2013 22:53:21 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 5.2; rv:17.0) Gecko/20130801 Thunderbird/17.0.8
In-Reply-To: <5...@g...com>
Xref: news-archive.icm.edu.pl pl.comp.programming:204534
[ ukryj nagłówki ]W dniu 2013-09-23 22:35, Wojciech Muła pisze:
> No dobra, a dlaczego nie możesz posługiwać się piątką liczb 1..52
> i potraktować je jako cyfry dla systemu liczenia o podstawie 52?
> Wtedy miałbyś od razu indeks do tablicy, kosztem 5 mnożeń i 4 dodawań.
Przypuszczam, z powodem jest 52^5 = 380204032, większe od 2,5 miliona.
> Jeśli to jednak nie przejdzie, to może lepiej rozważ użycie drzew
> trie.
Napisałem funkcję c2num, która wykonuje przekształcenie, o które pytał
autor wątku. W funkcji używane są współczynniki dwumianowe, które
oczywiście można stablicować zamiast liczyć za każdym razem.
Przykład (C) pokazuje przypadek dla n=6, k=2.
long long int bin2int(char *s)
{
long long int res = 0;
while(*s)
{ res = 2 * res + (*s=='1');
s++;
}
return res;
}
/* Współczynnik dwumianowy */
int binom(int n, int k)
{ if ((k==0) || (k==n)) return 1; else return binom(n-1,k-1)+binom(n-1,k); }
/* Wyznaczenie numeru kombinacji zapisanej w C jako ciąg zero-jedynkowy */
int c2num(int n, int k, long long int C)
{
int res;
long long int mask;
mask = 1;
res = 0;
while (k>0 && n>0)
{
n--;
if ((C & mask)==0) res += binom(n,k-1); else k--;
mask <<= 1;
}
return res;
}
int main()
{
printf ("%d\n",c2num(6,2,bin2int("000011")));
printf ("%d\n",c2num(6,2,bin2int("000101")));
printf ("%d\n",c2num(6,2,bin2int("001001")));
printf ("%d\n",c2num(6,2,bin2int("010001")));
printf ("%d\n",c2num(6,2,bin2int("100001")));
printf ("%d\n",c2num(6,2,bin2int("000110")));
printf ("%d\n",c2num(6,2,bin2int("001010")));
printf ("%d\n",c2num(6,2,bin2int("010010")));
printf ("%d\n",c2num(6,2,bin2int("100010")));
printf ("%d\n",c2num(6,2,bin2int("001100")));
printf ("%d\n",c2num(6,2,bin2int("010100")));
printf ("%d\n",c2num(6,2,bin2int("100100")));
printf ("%d\n",c2num(6,2,bin2int("011000")));
printf ("%d\n",c2num(6,2,bin2int("101000")));
printf ("%d\n",c2num(6,2,bin2int("110000")));
return 0;
}
Wynik:
0
1
2
3
4
5
...
14
P.
Następne wpisy z tego wątku
- 24.09.13 06:06 bartekltg
- 24.09.13 14:13 Piotrne
- 25.09.13 07:56 Przemysłąw Dębski
- 25.09.13 12:36 JDX
- 25.09.13 15:05 p...@g...pl
- 25.09.13 17:30 JDX
- 25.09.13 19:01 Ghost
Najnowsze wątki z tej grupy
- Prezydent SZAP/USONA Trump ułaskawił prezydenta Hondurasu Hernandeza skazanego na 45 lat więzienia
- Rosjanie chwalą się prototypem komputera kwantowego. "Najważniejszy projekt naukowy Rosji"
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Re: Najgorszy język programowania
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
Najnowsze wątki
- 2026-01-09 Warszawa => Dynamics 365 Commerce/POS Developer <=
- 2026-01-09 Ładowanie w 13 minut
- 2026-01-08 Umiejętność tankowania na egzaminie z prawa jazdy
- 2026-01-08 Nowy akumulator Donut Lab
- 2026-01-08 Komenda policji nie ma nic wspólnego ze sprawą zgwałcenia policjantki
- 2026-01-08 Pilot do zamka/bramy
- 2026-01-08 Ślad węglowy
- 2026-01-08 Prezydent SZAP/USONA Trump ułaskawił prezydenta Hondurasu Hernandeza skazanego na 45 lat więzienia
- 2026-01-08 Prezydent SZAP/USONA Trump ułaskawił prezydenta Hondurasu Hernandeza skazanego na 45 lat więzienia
- 2026-01-08 Agora zwalnia grupowo, mimo że w firmie pojawiły się zyski, czyli załoga zapracowała na siebie
- 2026-01-08 Agora zwalnia grupowo, mimo że w firmie pojawiły się zyski, czyli załoga zapracowała na siebie
- 2026-01-08 Dlaczego wrzucenie szkolnego krzyża do śmieci to zbrodnia mniejsza od zgaszenia sejmowej menory?
- 2026-01-08 NR 5G -- mity, hity, kity, bez satelity...
- 2026-01-07 Oszustwa w go go
- 2026-01-07 Jaka myjka ultradźwiękowa?




5 Najlepszych Programów do Księgowości w Chmurze - Ranking i Porównanie [2025]