Jak z trzech liczb zrobic jedna?

0

Mam 3 liczby całkowite: 2 od 0 do 255 i jedną od 1 do 31. Chcę z nich zrobić jedną liczbę całkowitą. Mam do dyspozycji wszystkie operatory arytmetyczne i bitowe oraz power i sqrt. Jak to zrobić? Proszę o jak najbardziej skomplikowane rozwiązania.

0

Co znaczy "zrobić z trzech liczb jedną"? Skleić cyfry, stworzyć unikalny identyfikator...

0

pierwsza liczba + druga liczba + 3 liczba = s1_liczba najlepiej żeby to było s1_liczba : single;

chyba ze chcesz dodawać to w formie ciąguu np to co przed przecinkiem to przed przecinkiem a to co po przecinku to po przecinku sie dodaje :X

0

a czy zabieg ma być odwracalny?

0

Sprecyzuj do czego Ci to potrzebne. Jakis hash robisz czy co?

0

((a*256+b)*256+c)^X modulo Y

Y liczba pierwsza, większa od 2^24, np. 20000093,
X jakaś 32-bitowa liczba
zabieg prosty i chyba odwracalny.

0

najkrócej chyba:

type a = array[0 .. 3] of byte;
var b: a;

b[0] := 31;
b[1] := 255;
b[2] := 255;
{ b[3] nie uzywane - moze zawierac losowa liczbe }

i zamiana:

liczba := Integer(b);

z powrotem:

b := a(liczba);

albo drugi sposób ew:

liczba := b[0] or b[1] shl 5 or b[2] shl 13;

z powrotem:

b[0] := n and 31;
b[2] := n shr 5 and 255;
b[3] := n shr 13 and 255;

to daje "czyste" wyniki, możesz pomieszać bity w wyniku czy coś - nie wiem o jakie kombinowanie chodzi ani czy zabieg ma być odwracalny, czy to kod ma być skomplikowany, czy algorytm czy sam wynik ?
w każdym razie 10 bitów jest wolnych i można je dobrze spożytkować

0

Nie musi być odwracalny, wystarczy że będzie go można powtórzyć i otrzymać ten sam wynik. Skomplikowany ma być algorytm.

0
hes napisał(a)

Co znaczy "zrobić z trzech liczb jedną"? Skleić cyfry, stworzyć unikalny identyfikator...

Napisać funckcję z 3ma argumentami typu byte, która zwróci np. ShortInt

1 użytkowników online, w tym zalogowanych: 0, gości: 1