Código Natural/Listagens com representações: mudanças entre as edições

m
Sem resumo de edição
 
(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 ''b15h'' são as representações em base4h e base16h respectivamente.  
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 ''hbit'' é 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.
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").


== Tamanho 1 ==
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 !! hbit !! b4h  !! b16h
!count !!bitstring !! hInt !! hidd !! b4h  !! b16h
|-
|-
|0 || <code></code>       ||    1 ||    ||  
|0 || <code></code> ||  0  ||    1 ||    ||  
|-
|-
|1 || <code>0</code>       ||    2 || G    || G
|1 || <code>0</code> ||  1    ||    2 || G    || G
|-
|-
|2 || <code>1</code>       ||    3 || Q    || Q
|2 || <code>1</code> ||  16385  ||    3 || Q    || Q
|}
|}


== Tamanho 2 ==
== 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 !! hbit !! b4h  !! b16h
!count !!bitstring !! hInt !! hidd !! b4h  !! b16h
|-
|-
|0 || <code></code>       ||    1 ||    ||  
|0 || <code></code> ||  0    ||    1 ||    ||  
|-
|-
|1 || <code>0</code>       ||    2 || G    || G
|1 || <code>0</code> ||    1  ||    2 || G    || G
|-
|-
|2 || <code>00</code>       ||    4 || 0    || H
|2 || <code>00</code> ||  2  ||    4 || 0    || H
|-
|-
|3 || <code>01</code>       ||    5 || 1    || M
|3 || <code>01</code> ||  8194  ||    5 || 1    || M
|-
|-
|4 || <code>1</code>       ||    3 || Q    || Q
|4 || <code>1</code> ||  16385    ||    3 || Q    || Q
|-
|-
|5 || <code>10</code>       ||    6 || 2    || R
|5 || <code>10</code> ||  16386  ||    6 || 2    || R
|-
|-
|6 || <code>11</code>       ||    7 || 3    || V
|6 || <code>11</code> ||  24578  ||    7 || 3    || V
|}
|}


== Tamanho 8 ==
== 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 !! hbit !! b4h  !! b16h
!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]]
2 434

edições