したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |
レス数が900を超えています。1000を超えると投稿できなくなるよ。

ヒッキープログラミングスレ 2

1(-_-)さん:2013/06/20(木) 03:58:01 ID:???
プログラミングの話題のスレ

質問・相談
初心者からプロまで
プログラミングに関することなら何でもOK

ヒッキーのプログラミングするスレ
http://ikura.2ch.net/test/read.cgi/hikky/1362050172/

プログラミングできる奴、一緒にアプリ作ろうぜ!!
http://ikura.2ch.net/test/read.cgi/hikky/1360671157/

ヒキ板情報技術部
http://ikura.2ch.net/test/read.cgi/hikky/1348106094/



前スレ
ヒッキープログラミングスレ
http://jbbs.livedoor.jp/bbs/read.cgi/internet/17286/1361821799/

702(-_-)さん:2014/06/27(金) 18:43:04 ID:???
>>691-696
ttp://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node190.html#BACKQUOTE

703(-_-)さん:2014/08/30(土) 21:44:27 ID:LaoNbrFk
int i;
int sum = 0;
for (i = 1; i <= 5; i++) {
  sum += i;
}
print(sum);


PROGRAM1 START
     LAD GR0,0   ; 1c
     LAD GR1,1   ; 2c
     LAD GR2,10   ; 3c
     LAD GR3,1   ; 4c
FOR_S   CPA GR1,GR2  ; 5c, 10c, 15c, 20c, 25c, 30c
     JPL FOR_E   ; 6c, 11c, 16c, 21c, 26c, 31c
     ADDA GR0,GR1  ; 7c, 12c, 17c, 22c, 27c
     ADDA GR1,GR3  ; 8c, 13c, 18c, 23c, 28c
     JUMP FOR_S   ; 9c, 14c, 19c, 24c, 29c
FOR_E   CALL PRINT   ; 32c
     RET      ; 33c
     END

※ラベルPRINTの位置にはGR0の値を出力するプログラムがあるとする


int i = 1;
int sum =0;
sum += 1;
sum += 2;
sum += 3;
sum += 4;
sum += 5;
print(sum);


PROGRAM2 START
     LAD GR0,0   ; 1c
     LAD GR1,1   ; 2c
     ADDA GR0,GR1  ; 3c
     LAD GR1,2   ; 4c
     ADDA GR0,GR1  ; 5c
     LAD GR1,3   ; 6c
     ADDA GR0,GR1  ; 7c
     LAD GR1,4   ; 8c
     ADDA GR0,GR1  ; 9c
     LAD GR1,5   ; 10c
     ADDA GR0,GR1  ; 11c
     CALL PRINT   ; 12c
     RET      ; 13c
     END


1命令1クロックで処理されるとすると
前者は33クロック、後者は13クロック
2倍以上の差が出る

704(-_-)さん:2014/08/30(土) 21:45:42 ID:LaoNbrFk
for文とはとてもコストの高い処理だということが分かる

705(-_-)さん:2014/08/30(土) 21:47:48 ID:wVfBml9k
後者のソースのint i = 1;の1行がいらなかった(アセンブリには反映されてないので問題ないが)

706(-_-)さん:2014/08/30(土) 21:49:33 ID:LaoNbrFk
おろ?ID変わった?

707(-_-)さん:2014/08/30(土) 21:51:30 ID:LaoNbrFk
後者はもっと短縮できるようだ

PROGRAM3 START
     LAD GR0,0   ; 1c
     LAD GR0,1,GR0 ; 2c
     LAD GR0,2,GR0 ; 3c
     LAD GR0,3,GR0 ; 4c
     LAD GR0,4,GR0 ; 5c
     LAD GR0,5,GR0 ; 6c
     CALL PRINT   ; 7c
     RET      ; 8c
     END


わずか8クロックw
for文の4分の1になったw

708(-_-)さん:2014/08/30(土) 21:52:56 ID:LaoNbrFk
同様に前者もi++にGR3を使わず
LAD GR1,1,GR1
を使えば1クロック分減るな

709(-_-)さん:2014/08/30(土) 21:58:33 ID:LaoNbrFk
まぁ実際はGR0〜GR2の退避・回復の処理が頭とケツにつくから
前者は+6クロック、後者は+1クロックか

710(-_-)さん:2014/08/31(日) 00:10:24 ID:YM8vwInw
最適化したら定数をprintするだけになりそう

711(-_-)さん:2014/08/31(日) 02:39:42 ID:n1WuGYLw
最適化ってすげえんだな

712(-_-)さん:2014/09/01(月) 18:03:26 ID:???
どうやって解析してんだろうね

713(-_-)さん:2014/09/05(金) 02:11:02 ID:???
パスワード 

→ ハッシュ化 → 一部を保存、これの一致でログインを確認

→ パスワードを使いデータを暗号・復号する

714(-_-)さん:2014/10/01(水) 22:58:28 ID:???
末尾再帰ってC言語系ならreturnが目印で探しやすいけど
Lispだとどこが戻り値になるのか分かりづらい気がする

715(-_-)さん:2014/10/02(木) 00:52:12 ID:???
プリエンプションってよくわかんねえ

716(-_-)さん:2014/10/02(木) 01:02:13 ID:???
http://monoist.atmarkit.co.jp/mn/articles/0506/28/news112_2.html

図解の記事でもよくわかねえや

717(-_-)さん:2014/10/02(木) 01:12:07 ID:???
疑問点がやっと解決した
CPUにはタイマー割り込み機能がついてんの知らなかった
カーネル側でマルチタスクをスイッチングするとか言っててどうやってやってんだと悶々としてたが

718(-_-)さん:2014/10/02(木) 01:14:25 ID:???
タイマー割り込みのような機能がハードウェア側にないと実現できねえよなと思ってたのに
何を読んでもカーネルでやってるOSでやってるソフトウェア的にやってるとかしか書いてなかったから
CPUにはタイマー割り込み機能は存在してないってことだと思って、マジでどうやってんだと思ってたわ

719(-_-)さん:2014/10/02(木) 01:18:18 ID:???
確かにタスクだのプロセスだののスイッチングの具体作業自体はソフトウェア的にやってるだろうが
スイッチングのきっかけはハードウェア的処理なんだからそこにも触れて書いてくれよって思うわ

720(-_-)さん:2014/10/02(木) 01:23:58 ID:???
http://sourceforge.jp/projects/linux-kernel-docs/wiki/2.3%E3%80%80%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A7%E3%82%A2%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E5%87%A6%E7%90%86

今度これ読んでおく

721あぼーん:あぼーん
あぼーん

722(-_-)さん:2014/10/09(木) 17:49:29 ID:???
日本語でおk?

723(-_-)さん:2014/10/09(木) 18:11:11 ID:???
a

724(-_-)さん:2014/12/09(火) 00:08:38 ID:???
今日わかったこと
C#においてクラスと構造体は似て非なるもの
C++の感覚では使えない

725(-_-)さん:2014/12/10(水) 05:28:06 ID:???
http://qiita.com/horimislime/items/84fa431460c8d39f37e6
http://qiita.com/awakia/items/5fad0c454ddc7b478ff1
http://qiita.com/FiNGAHOLiC/items/34312c5cbd4989fa192c
http://qiita.com/ririn_yume
メモ

726(-_-)さん:2014/12/18(木) 01:18:56 ID:???
第28回 Perlの構文解析器の作り方と応用例(1):Perl Hackers Hub|gihyo.jp … 技術評論社
http://gihyo.jp/dev/serial/01/perl-hackers-hub/002801

おもしろそうなの発見

727(-_-)さん:2014/12/18(木) 01:22:18 ID:???
プログラマー向けのQ&Aサイト「Stack Overflow」、日本語版が一般公開 -INTERNET Watch
http://internet.watch.impress.co.jp/docs/news/20141217_680681.html


日本語キター!

728(-_-)さん:2015/01/10(土) 04:16:40 ID:???
まだ落ちてるのんか

729(-_-)さん:2015/01/12(月) 21:01:00 ID:???
今夜はトップコーダーに挑戦だ

730(-_-)さん:2015/01/12(月) 23:25:27 ID:???
13日午前1時かららしいSRM?とかいうの

731(-_-)さん:2015/01/12(月) 23:29:16 ID:???
22時からエントリー開始してたみたいだな
今SRM645に参加登録した

732(-_-)さん:2015/01/13(火) 02:37:49 ID:???
ダーメだったわ
全然分からんかった
難しすぎだわ

733(-_-)さん:2015/01/13(火) 20:17:10 ID:???
ttp://fsm.vip2ch.com/-/hirame/hira062987.png
次のSRMを受けたらどんどんRateが下がって行きそうな予感…
引き際が肝心ということでコレを俺の最高記録とする!

734(-_-)さん:2015/01/13(火) 20:22:29 ID:???
世界中のプログラマでTopCoderをやっている人は何割程度だろうか
その何割で黄色や赤色のとこの人が数千人いるわけだから
TopCoderやってない人も含めればすごいプログラマって世界中に何万といるんだろうなあ…

そして灰色や緑色のあたりがどこにでもいるようなレベルの範囲なんだろうけど
TopCoderに参加してる人だけで数万人になるから
TopCoderに参加してない人も含めたらこのレベル域のプログラマは世界で数百万人以上いるってことだよな…

735(-_-)さん:2015/03/13(金) 15:56:45 ID:???
書き込めるけど見られない
マジでdat取得だけ仕様変更か

736(-_-)さん:2015/03/13(金) 19:13:07 ID:???
専ブラを自作するのはしんどいなあ

737(-_-)さん:2015/03/14(土) 23:52:25 ID:???
仕組み自体は難しいもんじゃないけど
いかんせん組むのが非常に面倒臭いのが難点

738(-_-)さん:2015/03/17(火) 14:57:38 ID:???
https://www.jpcert.or.jp/java-rules/vna02-j.html

ふむふむ

739(-_-)さん:2015/03/17(火) 18:10:59 ID:???
専ブラ作ろうと必死らこいてみたが
javaのスレッドの仕組みあたりで苦戦中

変に凝るから時間がかかってしまう
凝らない仕様にしてれば今頃は半分くらいは完成してたはず
凝ったせいで1ミリも進んでない

740(-_-)さん:2015/03/17(火) 18:12:54 ID:???
javaのスレッドの仕組みを理解するための実験的なコード書いては実行してを繰り返してばかりでダメぽ
機能はswingのhtml表示できるというJEditPaneを色々実験してて
実験のコードばかりで
専ブラの実装コードは1ミリも書かれてない・・・

741(-_-)さん:2015/03/19(木) 18:13:56 ID:???
やる気が途絶えてしまった

742(-_-)さん:2015/03/19(木) 20:20:21 ID:???
redditの仕様の大きさに比べたら2ch用ブラウザはすごく楽に思える

743(-_-)さん:2015/03/19(木) 22:02:14 ID:???
15年くらい前のサイトだからね2chは
そらしょぼいわ

744(-_-)さん:2015/03/19(木) 23:35:27 ID:???
Javaのチュートリアルに日本語版があるとは知らなかった

Javaチュートリアル
https://docs.oracle.com/cd/E26537_01/tutorial/

745(-_-)さん:2015/03/19(木) 23:37:16 ID:???
うげ・・・日本語版は目次ページだけか・・・

746(-_-)さん:2015/03/24(火) 17:16:03 ID:???
専ブラ開発停滞中

747(-_-)さん:2015/03/24(火) 18:39:05 ID:???
一年以上前から言ってないかそれ

748(-_-)さん:2015/03/24(火) 19:56:13 ID:???
言ってない
これは古い専ブラでスレが見れなくなってから考えだしたから

749(-_-)さん:2015/03/24(火) 19:57:03 ID:???
ただ何かしらの停滞と挫折はしょっちゅうやってはいる

750(-_-)さん:2015/03/24(火) 21:36:13 ID:???
最近はしたらばとredditを見てて.netはもう無いものと思ってるわ
専門板もネチネチした荒らしがいるから見ない方が精神衛生上良いし

751(-_-)さん:2015/03/24(火) 22:14:12 ID:???
人の多い板はともかく
それ以外の板は一気に過疎感じがするね

752(-_-)さん:2015/04/03(金) 21:27:47 ID:???
各所の過疎が進みすぎて
専ブラ開発の意欲が失せてきた・・・

753(-_-)さん:2015/04/23(木) 04:23:50 ID:???
構想いていた専ブラの仕様に穴があるの気づいた・・・
まぁ停滞してから1ヶ月経つけどほとんど何も出来てない段階だから
仕様変更は問題ないけど
どう仕様を変えるかのアイデアがまだない・・・

754(-_-)さん:2015/04/23(木) 18:30:49 ID:???
スクレイピングとかいうので実装しようと思ってたのに
ダメになる可能性があるらしい・・・



2ch.net専用ブラウザの開発者の皆さまへ ★20 [転載禁止]?2ch.net
http://anago.2ch.net/test/read.cgi/software/1427376861/

755(-_-)さん:2015/05/01(金) 20:15:56 ID:???
980超えると24時間書き込みが無いだけでスレ落ちるとか厳しすぎてワロタ

756(-_-)さん:2015/05/02(土) 03:11:33 ID:???
【スレタイ】ヒッキーのプログラミングするスレ 6
【本文】
前スレ
ヒッキーのプログラミングするスレ 5
http://hello.2ch.net/test/read.cgi/hikky/1404022118/

避難所(2ch鯖落ちや規制などの時)
ヒッキープログラミングスレ 2
http://jbbs.livedoor.jp/bbs/read.cgi/internet/17286/1371668281/


2ちゃんねるヒッキー板プログラミングスレwiki
http://www54.atwiki.jp/projecthikky/

プログラムの公開用アップローダー
http://ux.getuploader.com/hikkyp/

757(-_-)さん:2015/05/02(土) 03:43:55 ID:???
うげ、このアップローダのURLは今はRock54対象か

758(-_-)さん:2015/05/03(日) 23:00:00 ID:wIrj73.w
ヒッキーのプログラミングするスレ 6 [転載禁止](c)2ch.net
http://hello.2ch.net/test/read.cgi/hikky/1430661582/

759(-_-)さん:2015/05/03(日) 23:12:25 ID:???
>>758


760(-_-)さん:2015/05/08(金) 00:26:11 ID:???
メモ
http://www.oracle.com/technetwork/jp/java/javase/documentation/api-jsp-316041-ja.html

761(-_-)さん:2015/05/24(日) 17:56:28 ID:???
向こうのスレの専ブラのアイデア
面白いと思うけどプロキシの形で既存2chブラウザに渡せば終わりそうな
それだと専ブラ自体は対応できない細かな問題が出るかな
でもそのために一から作るのもなんか動機が弱くて結局頓挫しそう

762(-_-)さん:2015/05/24(日) 18:00:46 ID:???
ツリー型に関してはスラドやredditを見てて思ったけどあまりいい形に思えない
複数の書き込みに対してレス出来ないし見難いしアンカーの連鎖でよさそう

763(-_-)さん:2015/05/24(日) 22:20:38 ID:???
禿同

764(-_-)さん:2015/06/06(土) 17:00:46 ID:???
ネット通信覚えるぞ!
メモ

TCP/IPアレルギー撲滅ドリル
http://www.atmarkit.co.jp/ait/articles/0302/01/news001.html

765(-_-)さん:2015/06/06(土) 18:36:58 ID:???
さっそくプロキシっぽいの作ってみた

https://paiza.io/projects/fIe-08l1BiBzIqFI9eNriw

766(-_-)さん:2015/06/06(土) 18:38:48 ID:???
ほんとうはちゃんとリクエストの内容みてHTTPとかプロトコルチェックしてプロトコルごとに対応しなきゃならんのだろうけど
ひとまず、HTTPリクエストが来ること前提でw

767(-_-)さん:2015/06/06(土) 19:04:17 ID:???
単なるWEBサーバーやんけ

768(-_-)さん:2015/06/13(土) 06:11:28 ID:???
メモ

Processingで学ぶ 実践的プログラミング専門課程
第18回  UML(1) ユースケース図
http://gihyo.jp/dev/serial/01/practical-programming-with-processing/0018

769(-_-)さん:2015/06/18(木) 03:38:26 ID:???
メモ

Perl Hackers Hub
http://gihyo.jp/dev/serial/01/perl-hackers-hub

770(-_-)さん:2015/06/23(火) 04:43:54 ID:???

●餌

初期:
 餌は十数個ランダムに配置される

投下:
 任意のタイミングで任意の位置に餌を発生させることができる

移動:
餌は全く移動しない


●生物

初期:
 生物は経験値ゼロの満腹状態の個体が十数体ランダムに配置される

向き:
生物には向きが存在する

視界:
  生物は前方に対して左右それぞれ最大45度の計90度の視界を有する
  真横や後方を認識することはできない
  視認可能距離は無限大とする

可能行動:
 生物には右腕を左腕が存在しそれを動かすことによって行動する
 右腕前かき   前方左斜め(前方左45度)に1単位進む、体の向きが移動前の左斜め前方向を前方とする向きに変わる
 左腕前かき   前方右斜め(前方右45度)に1単位進む、体の向きが移動前の右斜め前方向を前方とする向きに変わる
 右前+左前   1単位前進

感情:
 快 不快

快:
 空腹時以外
 
不快:
 空腹時
 
状況:
 視界にある最寄の餌との距離

経験:
 状況に対して行った可能行動をキーとしてそれによっての最寄の餌との距離変化を値とする情報群
 行動するたびに値が更新されていく

快時:
 可能行動を一切行わない

不快時:
 経験皆無・・・可能行動のいずれかをランダムに行う
 経験多少・・・未経験の可能行動のいずれかをランダムに行う
 経験十分・・・最寄の餌との距離がもっとも減少する可能行動を行う、同程度のものが複数ある場合はいずれかをランダムに行う

摂食:
 空腹時に餌を接触することによって瞬時に餌を完食する
 同一の餌に2匹以上の空腹の生物が同時に接触した場合はいずれか1つの個体のみが摂食を行える
 その場合、摂食を行える個体は空腹時からの経過時間が最も短い個体に決定される、経過時間が同じ個体が2匹以上いる場合はそのうちからランダムに決定される

満腹:
 空腹時に餌1個を摂食することで満腹になる
 満腹になると感情が快になる
 
空腹:
 満腹時から一定時間が経過すると空腹状態になる
 空腹になると感情が不快になる

死亡:
 空腹時から一定時間が経過すると生物は死亡する
 死亡以降、死体は餌として扱われる

771(-_-)さん:2015/06/23(火) 04:44:59 ID:???
訂正

状況:
 視界にある最寄の餌との方向と距離

772(-_-)さん:2015/06/23(火) 05:15:31 ID:???
発展

寿命と交配を設ける

残り寿命が閾値を超えたら交配行動を求め行動する
最寄の個体に接近し強制交配を行う、交配した両個体はそこで死亡(ただし餌とはならず消滅する)
交配により子個体が2個体発生する。親の両個体から経験を半分ずつ受け継ぐ。経験はランダムに選出される。
受け継ぐ経験はランダムに選出されるため子個体はそれぞれ異なる経験を持つ個体となる

773(-_-)さん:2015/06/23(火) 05:41:06 ID:???
メモ

「HTTP/2」がついに登場! 開発者が知っておきたい通信の仕組み・新機能・導入方法
http://codezine.jp/article/detail/8663

774(-_-)さん:2015/06/23(火) 05:47:20 ID:???
SPDYにしろHTTP/2にしろ
そんな糞重いサイトなんか消えてなくなれってしか思わんわ
無駄に動的コンテンツとか動的読み込みとか要らんちゅうの
軽量ページの遷移だけでなんとかしてほしいわ

775(-_-)さん:2015/08/27(木) 04:29:03 ID:???
Java

Pattern.quote(String)

https://paiza.io/projects/1wPSZNGBSwZ8c1w2QfQnLw

776(-_-)さん:2015/09/01(火) 04:43:28 ID:???
メモ

注目高まる人工知能--押さえておきたい用語21選
http://japan.zdnet.com/article/35068871/

777(-_-)さん:2015/09/22(火) 06:07:41 ID:???
https://paiza.jp/poh/joshibato/matsue-ruby

コードゴルフ難しい

778(-_-)さん:2015/10/12(月) 04:31:59 ID:???
覚悟決めたgzipのdeflate圧縮アルゴリズム実装をするぞ

779(-_-)さん:2015/10/12(月) 05:22:16 ID:???
うう、gzipのdeflat圧縮の解除の処理を実装したの2年前だし
そのコードを眺めてたが、昔の俺は出来る奴だったんだな・・・
コード何を書いてるのかよくわからんし・・・deflateの知識を完全にド忘れしてて理解不能に近いわ・・・

780(-_-)さん:2015/10/12(月) 05:38:20 ID:???
やべえわ、deflate圧縮の再勉強が必要なレベルだわ・・・それはダルすぎ・・・覚悟消滅

781(-_-)さん:2015/10/12(月) 05:52:52 ID:???
DEFLATE
https://tools.ietf.org/html/rfc1951

ZLIB
https://tools.ietf.org/html/rfc1950

GZIP
https://tools.ietf.org/html/rfc1952

782(-_-)さん:2015/10/12(月) 05:55:42 ID:???
翻訳版

DEFLATE
http://www.futomi.com/lecture/japanese/rfc1951.html

ZLIB
http://www.futomi.com/lecture/japanese/rfc1950.html

GZIP
http://www.futomi.com/lecture/japanese/rfc1952.html

783(-_-)さん:2015/10/12(月) 05:56:54 ID:???
色々な翻訳載せてるこの人は神だわ

英語技術文書日本語訳
http://www.futomi.com/lecture/japanese/index.html

784(-_-)さん:2015/10/12(月) 06:11:29 ID:???
うん、前回もこの日本語訳で学習したような気がする
原文のほうはちょろっと眺めてみたが見た覚えが全くない
2年前の俺は英語文章を読む気概は無かったようだ

785(-_-)さん:2015/10/12(月) 06:21:53 ID:???
カスタムハフマンで圧縮はしんどそう
ハフマン符号表を独自に生成(あるいは事前用意)でやるんだろうけど
ある程度のサイズ(ブロックというやつか)読み込んだデータのヒストグラム取って大きな偏りがある場合は
カスタムハフマンで超圧縮できたりしたらすごいんだろうけど
事前用意ならある程度データの偏りがあることが分かってるデータ形式を取り扱うときとかかな
どのみち面倒や

786(-_-)さん:2015/10/12(月) 06:25:39 ID:???
ただ固定ハフマンだとほとんど圧縮できなさそう
同じ連続データが頻出するようなデータ形式じゃないと固定ハフマンより非圧縮ブロック使うほうがいいし
本気で圧縮を考えるならカスタムハフマン使わざるをえないのか・・・

787(-_-)さん:2015/10/12(月) 06:28:14 ID:???
ハフマン符号の生成法自体は書いてあるけど
カスタムハフマンだと符号表の圧縮もしなきゃならんし、何よりブロックフォーマットが面倒

788(-_-)さん:2015/10/12(月) 06:31:24 ID:???
前回は伸張処理だったから固定ハフマンの内容について深く考えなかったけど
やたらめったら同じ連続データが頻出しない限り固定ハフマンを使う価値ねえわ
普通のテキスト文書を圧縮なら単純に頻出文字のビット数抑える目的のカスタムハフマン作るほうが断然いいな

789(-_-)さん:2015/10/12(月) 06:39:36 ID:???
固定ハフマンは3バイト(24bit)以上一致すると半分以下のに減らせる感じではあるが
html文書の圧縮とかなら2文字以上タグやパラメータ名が頻出したとしても
タグやパラメータ名なんて文書全体の大した割合じゃないし、固定ハフマンだとちょろっとしか圧縮できないな
俺がいまこのスレで連投してるレスだって連続データ多くないだろうし
ただヒストグラムで頻出検査しても微妙そうではあるが

790(-_-)さん:2015/10/12(月) 06:52:14 ID:???
だいたい半分に圧縮か
http://ideone.com/4kiJcR

791(-_-)さん:2015/10/12(月) 06:59:50 ID:???
Javaでもだいたい半分か・・・
http://ideone.com/PXzrny

アッカーン

792(-_-)さん:2015/10/12(月) 07:02:17 ID:???
半分というのは素晴らしい成績なのか微妙なのか判断つかんな・・・

793(-_-)さん:2015/10/12(月) 07:10:10 ID:???
PHPは他の圧縮形式もサポートしてるから
後で比較してみるかな

794(-_-)さん:2015/10/13(火) 07:32:04 ID:???
ふむ
https://paiza.io/projects/-D3AYAjkYK36g5yiYpEG_g

795(-_-)さん:2015/10/14(水) 06:24:15 ID:???
Deflateは固定ハフマンを使うのなら

最大で258バイトを13ビット(2バイト弱、距離1バイトの1バイトを258バイト分繰り返し)〜26ビット(4バイト弱、距離32Kバイトから258バイト分のコピー)に圧縮できる

3バイト(24ビット)を参照で圧縮する場合は
最小12ビット(2バイト弱、距離1の1バイトを3バイト分繰り返し)〜24ビット以上は圧縮の意味がないので23ビットまでで
23ビットは距離約8Kバイトまでの参照

796(-_-)さん:2015/10/14(水) 06:45:25 ID:???
ZLIBで使われるAdler32

下位バイト、s1 はバイトデータの総和に1を足したもの
上位バイト、s2 はバイトデータの先頭からの部分和に1を足した物の総和

RFCで紹介されてるコードはループ毎に素数65521で割って効率が悪いので(どんなCPUでも剰余算は効率が悪い)
ある程度足し合わせた状態を素数65521 で割って計算していくほうが効率がよい
ある程度足し合わせた状態がs1とs2のオーバーフローしないギリギリまで求めたい
既にあるadler32の値をupdateで更新するときに
s1とs2にが最も早くギリギリの値になるのはs1とs2の初期値が最大でバイトデータ全部が0xFF(255)のとき
s1とs2は最終的に素数65521 の余りとして算出されるため最大値は双方ともに65520
s1の最大値は簡単に 65520 + n * 255
s2は初項65520の交差255の等差数列の和の総和として表現できる

等差数列の和は
初項 a[0] 交差 d 、a[i+1] = a[i] + d
a[0]からa[n]までの和S[n] = (n+1)*a[0] + d*(n+1)*n/2

その総和なのでs2 = S[0] + S[1] + ... + S[n]
= (1+2+..+(n+1))*a[0] + d*(2*1 + 3*2 + 4*3 + ... + (n+1)*n)/2
=(n+1)*(n+2)*a[0]/2 + d*(2*1 + 3*2 + 4*3 + ... + (n+1)*n)/2

なんかs2はすさまじい桁になりそう

797(-_-)さん:2015/10/14(水) 06:51:13 ID:???
adler32の下位s1上位s2ともに2バイト
符号有int型(4バイト)で計算するとなると31ビットまで使える
32ビットが4Gだから31ビットはその半分の2G、20億?
6万ちょっとから20億までは随分と離れてる気がするけど
s2はすぐに到達してしまうようだ、(いくつかのAdler32の実装を見るとそんな感じ)
ライセンス回避のためかみんなちょろっとずつ実装の仕方や数値を変えているようではあった
Adler32の効率いいコードを実装しようとすると面倒そうだな

798(-_-)さん:2015/10/14(水) 22:43:49 ID:???
yukicoderなんかで無駄時間使ってしまった

799(-_-)さん:2015/10/14(水) 22:44:43 ID:???
yukicoderで★1の問題を解くのが適度に時間潰しに向いててついついハマってしまう

800(-_-)さん:2015/10/14(水) 22:45:17 ID:???
★2以上だと難しくて解けないけど
★1くらいだと俺の脳みそだと適度に悩んで答えが出せるから楽しい

801(-_-)さん:2015/10/14(水) 22:46:29 ID:???
さっさとdeflateの圧縮アルゴリズムを実現するロジックを考えねば


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板