2 526
edições
Sem resumo de edição |
m (Peter moveu Código natural/Listagens com representações para Código Natural/Listagens com representações: nme próprio) |
||
(6 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
Nas tabelas abaixo são apresentadas amostragens de '''''códigos naturais'' ordenados'''. Conjuntos de tamanhos crescentes, de ''X''<sub>1</sub>, ''X''<sub>2</sub>, ..., ''X''<sub>8</sub>. A coluna ''count'' é um contador de linhas para o humano acompanhar em representação decimal a sequência, as colunas ''b4h'' e '' | Nas tabelas abaixo são apresentadas amostragens de '''''códigos naturais'' ordenados'''. Conjuntos de tamanhos crescentes, de ''X''<sub>1</sub>, ''X''<sub>2</sub>, ..., ''X''<sub>8</sub>. A coluna ''count'' é um contador de linhas para o humano acompanhar em representação decimal a sequência, as colunas ''b4h'' e ''b16h'' são as representações em [[base4h]] e [[base16h]] respectivamente. | ||
A coluna '' | A coluna ''hInt'' é a representação "cache-length", descrita em ??. Como depende do tamanho máximo, a ilustração ficou com Smallint (16 bits) ao invés do usual Bigint (64 bits). Na prática, como o bit de sinal é perdido e o cache usa 4 bits, sobram 16-4-1=11 bits, que resulta no valor máximo 32763 (da ''bitstring'' "11111111111"). | ||
== | A coluna ''hidd'' é a representação "hidden bit", onde a inclusão à esquerda do dígito 1 na ''bitstring'' resulta em um valor decimal maior. Por exemplo as ''bitstrings'' <code>0</code>, <code>1</code> e <code>00</code> com o 1 na frente serão <code>10</code>, <code>11</code> e <code>100</code>, que em decimal serão 2, 3 e 4. | ||
Código-fonte SQL usando a biblioteca de https://git.osm.codes/NaturalCodes/tree/main/src-sql | |||
<syntaxhighlight lang="sql"> | |||
SELECT row_number() over() AS count, bitstring, | |||
natcod.vBit_to_hSml( bitstring ) as "hInt", | |||
natcod.vbit_to_hiddenBig( bitstring ) as hidd, | |||
natcod.vbit_to_baseh(bitstring,4,true) as b4h, | |||
natcod.vbit_to_baseh(bitstring,16,true) as b16h | |||
FROM natcod.generate_vbit_series(8) t(bitstring); | |||
</syntaxhighlight> | |||
== Comprimento 1 == | |||
''X''<sub>1</sub>: códigos naturais com no máximo 1 bit. | ''X''<sub>1</sub>: códigos naturais com no máximo 1 bit. | ||
{| class="wikitable" | {| class="wikitable" | ||
!count !!bitstring !! | !count !!bitstring !! hInt !! hidd !! b4h !! b16h | ||
|- | |- | ||
|0 || <code></code> | |0 || <code></code> || 0 || 1 || || | ||
|- | |- | ||
|1 || <code>0</code> | |1 || <code>0</code> || 1 || 2 || G || G | ||
|- | |- | ||
|2 || <code>1</code> | |2 || <code>1</code> || 16385 || 3 || Q || Q | ||
|} | |} | ||
== | == Comprimento 2 == | ||
''X''<sub>2</sub>: códigos naturais com no máximo 2 bits. | ''X''<sub>2</sub>: códigos naturais com no máximo 2 bits. | ||
{| class="wikitable" | {| class="wikitable" | ||
!count !!bitstring !! | !count !!bitstring !! hInt !! hidd !! b4h !! b16h | ||
|- | |- | ||
|0 || <code></code> | |0 || <code></code> || 0 || 1 || || | ||
|- | |- | ||
|1 || <code>0</code> | |1 || <code>0</code> || 1 || 2 || G || G | ||
|- | |- | ||
|2 || <code>00</code> | |2 || <code>00</code> || 2 || 4 || 0 || H | ||
|- | |- | ||
|3 || <code>01</code> | |3 || <code>01</code> || 8194 || 5 || 1 || M | ||
|- | |- | ||
|4 || <code>1</code> | |4 || <code>1</code> || 16385 || 3 || Q || Q | ||
|- | |- | ||
|5 || <code>10</code> | |5 || <code>10</code> || 16386 || 6 || 2 || R | ||
|- | |- | ||
|6 || <code>11</code> | |6 || <code>11</code> || 24578 || 7 || 3 || V | ||
|} | |} | ||
== | == Comprimento 8 == | ||
Abaixo listagem obtida de [https://git.osm.codes/NaturalCodes/blob/main/src/step91assert-p2_diff.sql git.osm.codes/NaturalCodes/src/step91assert-p2_diff.sql] | Abaixo listagem obtida de [https://git.osm.codes/NaturalCodes/blob/main/src/step91assert-p2_diff.sql git.osm.codes/NaturalCodes/src/step91assert-p2_diff.sql] | ||
com resultado completo em [https://git.osm.codes/NaturalCodes/blob/main/data/assert-p2_diff.txt data/assert-p2_diff.txt]. | com resultado completo em [https://git.osm.codes/NaturalCodes/blob/main/data/assert-p2_diff.txt data/assert-p2_diff.txt]. | ||
Linha 44: | Linha 56: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
!count !!bitstring !! | !count !!bitstring !! hidd !! b4h !! b16h | ||
|- | |- | ||
|0 || <code></code> || 1 || || | |0 || <code></code> || 1 || || | ||
Linha 206: | Linha 218: | ||
|510 || <code>11111111</code> || 511 || 3333 || ff | |510 || <code>11111111</code> || 511 || 3333 || ff | ||
|} | |} | ||
== Comprimento 8 em level order == | |||
A coluna ''hidd'' proporciona a "Level order", que não é a ordem natural (lexicográfica) para uma hierarquia, mas proporciona intervalos contendo mesmo tamanho. Pode ser conseguido com a coluna ''hInt'' usando <code>ORDER BY hInt&15, hInt</code>. | |||
<pre> | |||
count | bitstring | hInt | hidd | b4h | b16h | |||
-------+-----------+-------+------+-----+------ | |||
1 | 0 | 1 | 2 | G | G | |||
2 | 1 | 16385 | 3 | Q | Q | |||
3 | 00 | 2 | 4 | 0 | H | |||
4 | 01 | 8194 | 5 | 1 | M | |||
5 | 10 | 16386 | 6 | 2 | R | |||
6 | 11 | 24578 | 7 | 3 | V | |||
7 | 000 | 3 | 8 | 0G | J | |||
8 | 001 | 4099 | 9 | 0Q | K | |||
9 | 010 | 8195 | 10 | 1G | N | |||
10 | 011 | 12291 | 11 | 1Q | P | |||
11 | 100 | 16387 | 12 | 2G | S | |||
12 | 101 | 20483 | 13 | 2Q | T | |||
13 | 110 | 24579 | 14 | 3G | Z | |||
14 | 111 | 28675 | 15 | 3Q | Y | |||
15 | 0000 | 4 | 16 | 00 | 0 | |||
16 | 0001 | 2052 | 17 | 01 | 1 | |||
17 | 0010 | 4100 | 18 | 02 | 2 | |||
18 | 0011 | 6148 | 19 | 03 | 3 | |||
19 | 0100 | 8196 | 20 | 10 | 4 | |||
20 | 0101 | 10244 | 21 | 11 | 5 | |||
21 | 0110 | 12292 | 22 | 12 | 6 | |||
22 | 0111 | 14340 | 23 | 13 | 7 | |||
23 | 1000 | 16388 | 24 | 20 | 8 | |||
24 | 1001 | 18436 | 25 | 21 | 9 | |||
25 | 1010 | 20484 | 26 | 22 | a | |||
26 | 1011 | 22532 | 27 | 23 | b | |||
27 | 1100 | 24580 | 28 | 30 | c | |||
28 | 1101 | 26628 | 29 | 31 | d | |||
29 | 1110 | 28676 | 30 | 32 | e | |||
30 | 1111 | 30724 | 31 | 33 | f | |||
31 | 00000 | 5 | 32 | 00G | 0G | |||
32 | 00001 | 1029 | 33 | 00Q | 0Q | |||
33 | 00010 | 2053 | 34 | 01G | 1G | |||
34 | 00011 | 3077 | 35 | 01Q | 1Q | |||
35 | 00100 | 4101 | 36 | 02G | 2G | |||
... | |||
250 | 1111011 | 31495 | 251 | 331Q | fP | |||
251 | 1111100 | 31751 | 252 | 332G | fS | |||
252 | 1111101 | 32007 | 253 | 332Q | fT | |||
253 | 1111110 | 32263 | 254 | 333G | fZ | |||
254 | 1111111 | 32519 | 255 | 333Q | fY | |||
255 | 00000000 | 8 | 256 | 0000 | 00 | |||
256 | 00000001 | 136 | 257 | 0001 | 01 | |||
257 | 00000010 | 264 | 258 | 0002 | 02 | |||
258 | 00000011 | 392 | 259 | 0003 | 03 | |||
259 | 00000100 | 520 | 260 | 0010 | 04 | |||
... | |||
495 | 11110000 | 30728 | 496 | 3300 | f0 | |||
496 | 11110001 | 30856 | 497 | 3301 | f1 | |||
497 | 11110010 | 30984 | 498 | 3302 | f2 | |||
498 | 11110011 | 31112 | 499 | 3303 | f3 | |||
499 | 11110100 | 31240 | 500 | 3310 | f4 | |||
500 | 11110101 | 31368 | 501 | 3311 | f5 | |||
501 | 11110110 | 31496 | 502 | 3312 | f6 | |||
502 | 11110111 | 31624 | 503 | 3313 | f7 | |||
503 | 11111000 | 31752 | 504 | 3320 | f8 | |||
504 | 11111001 | 31880 | 505 | 3321 | f9 | |||
505 | 11111010 | 32008 | 506 | 3322 | fa | |||
506 | 11111011 | 32136 | 507 | 3323 | fb | |||
507 | 11111100 | 32264 | 508 | 3330 | fc | |||
508 | 11111101 | 32392 | 509 | 3331 | fd | |||
509 | 11111110 | 32520 | 510 | 3332 | fe | |||
510 | 11111111 | 32648 | 511 | 3333 | ff | |||
</pre> | |||
== Comprimento 11 == | |||
Inteiros Smallint possuem 2 bytes (16 bits), como 1 bit é consumido pelo sinal (sempre positivo) e outros 4 bits pelo ''cache-length'' (comprimentos 0 a 11), restam 16-1-4=11 bits. | |||
Abaixo as representações decimal e binária deste formato, mostrando como o valor numérico (coluna ''hint_dec'') segue exatamente a ordem lexicográfica. | |||
<pre> | |||
bitstring | hint_dec | hint_bin | |||
-------------+----------+-------------------- | |||
| 0 | 0 00000000000 0000 | |||
0 | 1 | 0 00000000000 0001 | |||
00 | 2 | 0 00000000000 0010 | |||
000 | 3 | 0 00000000000 0011 | |||
0000 | 4 | 0 00000000000 0100 | |||
00000 | 5 | 0 00000000000 0101 | |||
000000 | 6 | 0 00000000000 0110 | |||
0000000 | 7 | 0 00000000000 0111 | |||
00000000 | 8 | 0 00000000000 1000 | |||
000000000 | 9 | 0 00000000000 1001 | |||
0000000000 | 10 | 0 00000000000 1010 | |||
00000000000 | 11 | 0 00000000000 1011 | |||
00000000001 | 27 | 0 00000000001 1011 | |||
0000000001 | 42 | 0 00000000010 1010 | |||
00000000010 | 43 | 0 00000000010 1011 | |||
00000000011 | 59 | 0 00000000011 1011 | |||
000000001 | 73 | 0 00000000100 1001 | |||
0000000010 | 74 | 0 00000000100 1010 | |||
00000000100 | 75 | 0 00000000100 1011 | |||
00000000101 | 91 | 0 00000000101 1011 | |||
0000000011 | 106 | 0 00000000110 1010 | |||
00000000110 | 107 | 0 00000000110 1011 | |||
00000000111 | 123 | 0 00000000111 1011 | |||
00000001 | 136 | 0 00000001000 1000 | |||
000000010 | 137 | 0 00000001000 1001 | |||
... | |||
1111111011 | 32618 | 0 11111110110 1010 | |||
11111110110 | 32619 | 0 11111110110 1011 | |||
11111110111 | 32635 | 0 11111110111 1011 | |||
11111111 | 32648 | 0 11111111000 1000 | |||
111111110 | 32649 | 0 11111111000 1001 | |||
1111111100 | 32650 | 0 11111111000 1010 | |||
11111111000 | 32651 | 0 11111111000 1011 | |||
11111111001 | 32667 | 0 11111111001 1011 | |||
1111111101 | 32682 | 0 11111111010 1010 | |||
11111111010 | 32683 | 0 11111111010 1011 | |||
11111111011 | 32699 | 0 11111111011 1011 | |||
111111111 | 32713 | 0 11111111100 1001 | |||
1111111110 | 32714 | 0 11111111100 1010 | |||
11111111100 | 32715 | 0 11111111100 1011 | |||
11111111101 | 32731 | 0 11111111101 1011 | |||
1111111111 | 32746 | 0 11111111110 1010 | |||
11111111110 | 32747 | 0 11111111110 1011 | |||
11111111111 | 32763 | 0 11111111111 1011 | |||
</pre> | |||
=== Comprimentos maiores === | |||
[[Arquivo:NatCod-lexOrder-sawShaped1.png|miniaturadaimagem|380x380px|Independente do comprimento das cadeias, toda listagem sistemática terá o mesmo formato de serra.]] | |||
Abaixo o inicio da listagem de comprimento 20. | |||
<pre> | |||
0 | |||
00 | |||
000 | |||
0000 | |||
00000 | |||
000000 | |||
0000000 | |||
00000000 | |||
000000000 | |||
0000000000 | |||
00000000000 | |||
000000000000 | |||
0000000000000 | |||
00000000000000 | |||
000000000000000 | |||
0000000000000000 | |||
00000000000000000 | |||
000000000000000000 | |||
0000000000000000000 | |||
00000000000000000000 | |||
00000000000000000001 | |||
0000000000000000001 | |||
00000000000000000010 | |||
00000000000000000011 | |||
000000000000000001 | |||
0000000000000000010 | |||
00000000000000000100 | |||
00000000000000000101 | |||
0000000000000000011 | |||
00000000000000000110 | |||
00000000000000000111 | |||
00000000000000001 | |||
000000000000000010 | |||
0000000000000000100 | |||
00000000000000001000 | |||
00000000000000001001 | |||
0000000000000000101 | |||
00000000000000001010 | |||
00000000000000001011 | |||
000000000000000011 | |||
... | |||
</pre> | |||
[[Categoria:Código natural]] | [[Categoria:Código natural]] |
edições