Discussão:Código Natural/Representação interna: mudanças entre as edições

m
 
(4 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
== Gerador didático ==
Usar <code>select * from natcod.generate_vbit_series_didactic(4)</code> para destacar a necessidade de uso do ''lval'':
<pre>
  s  | len | rval | lval | lval_rotated+len | rval_bin | lval_bin | len_bin
------+-----+------+------+------------------+----------+----------+---------
0    |  1 |    0 |    0 |                1 | 0000    | 0000    | 0001
00  |  2 |    0 |    0 |                2 | 0000    | 0000    | 0010
000  |  3 |    0 |    0 |                3 | 0000    | 0000    | 0011
0000 |  4 |    0 |    0 |                4 | 0000    | 0000    | 0100
0001 |  4 |    1 |    1 |              12 | 0001    | 0001    | 0100
001  |  3 |    1 |    2 |              19 | 0001    | 0010    | 0011
0010 |  4 |    2 |    2 |              20 | 0010    | 0010    | 0100
0011 |  4 |    3 |    3 |              28 | 0011    | 0011    | 0100
01  |  2 |    1 |    4 |              34 | 0001    | 0100    | 0010
010  |  3 |    2 |    4 |              35 | 0010    | 0100    | 0011
0100 |  4 |    4 |    4 |              36 | 0100    | 0100    | 0100
0101 |  4 |    5 |    5 |              44 | 0101    | 0101    | 0100
011  |  3 |    3 |    6 |              51 | 0011    | 0110    | 0011
0110 |  4 |    6 |    6 |              52 | 0110    | 0110    | 0100
0111 |  4 |    7 |    7 |              60 | 0111    | 0111    | 0100
1    |  1 |    1 |    8 |              65 | 0001    | 1000    | 0001
10  |  2 |    2 |    8 |              66 | 0010    | 1000    | 0010
100  |  3 |    4 |    8 |              67 | 0100    | 1000    | 0011
1000 |  4 |    8 |    8 |              68 | 1000    | 1000    | 0100
1001 |  4 |    9 |    9 |              76 | 1001    | 1001    | 0100
101  |  3 |    5 |  10 |              83 | 0101    | 1010    | 0011
1010 |  4 |  10 |  10 |              84 | 1010    | 1010    | 0100
1011 |  4 |  11 |  11 |              92 | 1011    | 1011    | 0100
11  |  2 |    3 |  12 |              98 | 0011    | 1100    | 0010
110  |  3 |    6 |  12 |              99 | 0110    | 1100    | 0011
1100 |  4 |  12 |  12 |              100 | 1100    | 1100    | 0100
1101 |  4 |  13 |  13 |              108 | 1101    | 1101    | 0100
111  |  3 |    7 |  14 |              115 | 0111    | 1110    | 0011
1110 |  4 |  14 |  14 |              116 | 1110    | 1110    | 0100
1111 |  4 |  15 |  15 |              124 | 1111    | 1111    | 0100
</pre>


== Geração dos exemplos ==
== Geração dos exemplos ==


<syntaxhighlight lang="sql">
<syntaxhighlight lang="sql">
select s, len,  rval, lval, rval_bin, lval_bin FROM natcod.generate_vbit_series_didactic(5) limit 11;
select s, len,  rval, lval, (lval<<2)+len as "(lval<<2)+len" FROM natcod.generate_vbit_series_didactic(3);
CREATE VIEW wiki_print1_hbig AS  
CREATE VIEW wiki_print1_hbig AS  
   SELECT len,  
   SELECT len,  
Linha 20: Linha 60:
   ) t2
   ) t2
;
;
 
-- drop VIEW wiki_print2_hcount;
CREATE VIEW wiki_print2_hcount AS  
CREATE VIEW wiki_print2_hcount AS  
   SELECT row_number() over() AS count, bitstring,
   SELECT row_number() over() AS count, bitstring,
       natcod.vbit_to_baseh(bitstring,16,true) as b16h,  
       natcod.vbit_to_baseh(bitstring,16,true) as b16h,  
       natcod.vBit_to_hCount16c48(bitstring,1::bigint) as hcount1,
       natcod.vBit_to_hCount16c48(bitstring,1::bigint) as hcount1,
       natcod.vBit_to_hCount16c48(bitstring,17592186044415::bigint) as hc17592186044415
       natcod.vBit_to_hCount16c48(bitstring,281474976710655::bigint) as hcount_max
   FROM natcod.generate_vbit_series(11) t(bitstring)
   FROM natcod.generate_vbit_series(11) t(bitstring) -- or 3
;
CREATE VIEW wiki_print3_hcount_explode AS
  SELECT bitstring, len,
      hcount as hcount_dec,
      '0 '||substring(hcount::bit(64),2,11)::text ||' '||len::bit(4)::text||' '||((hcount<<16)>>16)::bit(48)::text hcount_bin
  FROM (
    SELECT *,length(bitstring) as len, natcod.vBit_to_hCount16c48(bitstring,123::bigint) as hcount
    FROM wiki_print2_hcount
) t;
 
CREATE VIEW wiki_print4_hcount_human AS
select *, natcod.hCount16c48_asBeauty(hc,4,true) as hc_human
from (
  select h_path, c, natcod.vBit_to_hCount16c48(h_path,c::bigint) as hc
  from (  SELECT bitstring as h_path,                                                                                                                 
          unnest( array[ random_between(1,3509999999)::bigint, 123::bigint, random_between(1,550999999)::bigint ] ) as c
          FROM wiki_print2_hcount
  ) tt
) tt2 order by 3
;
;
</syntaxhighlight>
</syntaxhighlight>
<pre>
<pre>
wiki_print1_hbig:
wiki_print1_hbig:
Linha 49: Linha 109:


wiki_print2_hcount:
wiki_print2_hcount:
  count |  bitstring  | b16h |      hcount1      | hc17592186044415 
  count |  bitstring  | b16h |      hcount1      |     hcount_max     
  ------+-------------+------+---------------------+---------------------
  ------+-------------+------+---------------------+---------------------
     1 | 0          | G    |    281474976710657 |    299067162755071
     1 | 0          | G    |    281474976710657 |    562949953421311
     2 | 00          | H    |    562949953421313 |    580542139465727
     2 | 00          | H    |    562949953421313 |    844424930131967
     3 | 000        | J    |    844424930131969 |     862017116176383
     3 | 000        | J    |    844424930131969 |   1125899906842623
     4 | 0000        | 0    |    1125899906842625 |    1143492092887039
     4 | 0000        | 0    |    1125899906842625 |    1407374883553279
     5 | 00000      | 0G  |    1407374883553281 |    1424967069597695
     5 | 00000      | 0G  |    1407374883553281 |    1688849860263935
     6 | 000000      | 0H  |    1688849860263937 |    1706442046308351
     6 | 000000      | 0H  |    1688849860263937 |    1970324836974591
     7 | 0000000    | 0J  |    1970324836974593 |    1987917023019007
     7 | 0000000    | 0J  |    1970324836974593 |    2251799813685247
     8 | 00000000    | 00  |    2251799813685249 |    2269391999729663
     8 | 00000000    | 00  |    2251799813685249 |    2533274790395903
     9 | 000000000  | 00G  |    2533274790395905 |    2550866976440319
     9 | 000000000  | 00G  |    2533274790395905 |    2814749767106559
     10 | 0000000000  | 00H  |    2814749767106561 |    2832341953150975
     10 | 0000000000  | 00H  |    2814749767106561 |    3096224743817215
     11 | 00000000000 | 00J  |    3096224743817217 |    3113816929861631
     11 | 00000000000 | 00J  |    3096224743817217 |    3377699720527871
     12 | 00000000001 | 00K  |    7599824371187713 |    7617416557232127
     12 | 00000000001 | 00K  |    7599824371187713 |    7881299347898367
     13 | 0000000001  | 00M  |  11821949021847553 |  11839541207891967
     13 | 0000000001  | 00M  |  11821949021847553 |  12103423998558207
     ...
  ...
 
wiki_print3_hcount_explode:
bitstring | len |    hcount_dec      |                            hcount_bin                             
----------+-----+---------------------+---------------------------------------------------------------------
0        |  1 |     281474976710779 | 0 00000000000 0001 000000000000000000000000000000000000000001111011
00        |  2 |    562949953421435 | 0 00000000000 0010 000000000000000000000000000000000000000001111011
000      |  3 |    844424930132091 | 0 00000000000 0011 000000000000000000000000000000000000000001111011
001      |  3 | 1153765929536979067 | 0 00100000000 0011 000000000000000000000000000000000000000001111011
...
</pre>
</pre>
=== Exemplo de comprimento 11 ===
=== Exemplo de comprimento 11 ===
2 538

edições