압축에 대한 관심이 아직도 남아(?)있어서,
여러가지 생각을 매번(?) 해보다가

글자압축의 경우, "반복되는 패턴"이 있음을 인지하고,
그 패턴을 추출하는 것이 중요할 것 같다는 생각이 들었다.

...

사실은 8bit 내에서는 그렇게 중요시되지 못해(?)오다가,
unicode 쪽으로 넘어오면서 코드의 번호가 굉장히 커진(?)데에서 착안한 것.

뭐, 산술압축이나 Huffman 압축으로 하면
필터 추출을 하지 않고도 대부분 압축이 되긴 하겠지만,

산술압축이나 Huffman 압축을 금방 적용하지는 못할 것 같아서...

...


<script>
function getCodes110213(v) {
  var ov=[], i, c, j;

  for (i=0; i<v.length; i++) {
    c=v.charCodeAt(i);

    for (j=7; j<64; j++) if (c<(1<<j)) break;
    if (!ov[j]) { ov[j]={}; ov[j].value=(1<<j)-1; ov[j].orv=0; ov[j].count=0; }

    ov[j].value&=c; ov[j].orv|=c; ov[j].count++;
    }

  for (i=0; i<ov.length; i++) {
    if (!ov[i]) continue;

    ov[i].filter=((1<<i)-1)&~(ov[i].value^ov[i].orv);
    }

  return ov;
  }

function showCodes110213(av) {
  var ov='', i, aa;

function showbinary(v) {  var ov='', i=1;  for (; v; v>>=1) ov=(i++&3?'':' ')+(v&1)+ov;  return ov;  }
function countone(v) { var ov=0; for (; v; v>>=1) ov+=v&1; return ov; }

  for (i=0; i<av.length; i++) {
    if (!(aa=av[i])) continue;

ov+=i
  +') count : '+aa.count
  +'\n\rfilterCount : '+countone(aa.filter)
  +' , filter : '+showbinary(aa.filter)
  +' , filtervalue : '+showbinary(aa.value)
  +' , orvalue : '+showbinary(aa.orv)
  +'\n\r\n\r';

    }

  return ov;
  }
</script>

<div>
<textarea>sample입니다...</textarea>
<input type=button value="추출" onclick="var e=this.parentNode, f=e.getElementsByTagName('textarea')[0], g=e.getElementsByTagName('a')[0], h=showCodes110213(getCodes110213(f.textContent||f.innerText)); if (g.textContent) g.textContent=h; else g.innerText=h;" /><br/>
<a onclick=; >추출값 출력</a>
</div>


...



추출값 출력


...

OTL... 이 방법만으로는 전망이 좋지는 않다.

뭐랄까... 한글만 추출했을 때 범위가 협소할 줄 알았는데
저렇게 광범위(?)할 줄이야... (앞 부분에 1 로 채워질 줄 알았는데 ㅜ.ㅜ...)

범위추출이나
그룹지정식도 따로 구해봐야하나...라는 생각만 해본다.

...

smallLet killofki@.

ps... OTL... firefox 랑 Chrome에서 textContent Update 를 못하고 있다... 내부값 수정해도 인식을 안하넹...
뭐, 초기값 받는 건 되니, 문제삼지 않아도 되겠징...?

Posted by killofki
,