Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
1 2 3 4 5
次のページ(過去)
返信[32]
親投稿
てらこや actorbug
とるてさん 時代遅れかどうかと国際標準化機構(ISO)で標準化されているかどうかは無関係です。 あなたが時代遅れと言っているC言語も標準化されています。(ISO/IEC 9899:2011)
0そうだね
プレイ済み
返信[10]
親投稿
てらこや actorbug
巫術が出てないけど、あまりメジャーじゃないのかね。
1そうだね
プレイ済み
返信[2]
親投稿
てらこや actorbug
さらにそれらを組み合わせて半加算器を作れば1ビットの足し算が、フリップフロップを作れば1ビットの記憶装置ができます。
2そうだね
プレイ済み
返信[32]
親投稿
てらこや actorbug
同期をやめて可能な限り圧縮にリソースを割いてみましたが、自分の実力だと旧3DSで1秒縮めるのが精一杯な感じです。 UTF-8化だけで5.2秒、そこから圧縮して4.2秒強でした。 テストプログラムは、公開キー【PREXVW8V】のMPSEND_LZ77になります。
0そうだね
プレイ済み
返信[6]
親投稿
てらこや actorbug
文字列のみの圧縮ルーチンにバグがあったので修正。ついでに長さ・位置を少しオフセット。 公開キー【T47Q33ZJ】 以前と同じ文字列が65535文字以上続かないとバグらないので、問題は少なそうだけど。
1そうだね
プレイ済み
返信[5]
親投稿
てらこや actorbug
簡単な圧縮アルゴリズムから実装していけば、そのうち難しいものも作れるようになるんじゃないでしょうか。自分も、初代プチコンでLZWを作ったのが最初なんで、ここまで来るのにかなり時間がかかっています。 ブロックソートやMTFは、やれば圧縮率が上がりそうですが、私のようなおっさんの錆び付いた頭では理解するのが難しそうです。気が向いたらやってみます。
1そうだね
プレイ済み
返信[23]
親投稿
てらこや actorbug
言葉をいい加減に使用したこちらのミスです。すみません。 LZSSと書いてしまいましたが、実際には適当な文字をタグにして後ろに長さと位置を続けるだけのものでした。UTF-8化しているのはそのためです。 あと、圧縮速度は、あくまで自分の限界ですので、旧3DSでの送信に間に合うように作れる可能性はあるでしょう。
1そうだね
プレイ済み
返信[3]
親投稿
てらこや actorbug
コータさんのトピックを読んで試しに作った、速度重視・文字列のみの圧縮ルーチン(ファイル名:TEXT)も追加。 公開キー【43SE14ZD】
0そうだね
プレイ済み
返信[20]
親投稿
てらこや actorbug
LZSS+UTF-8化を速度重視で調整しましたが、旧3DSで圧縮3.73秒、展開0.22秒が自分の限界でした。サイズは47,611→16,114文字で、UTF-8化だけして送った方が速いという結果でした。 8ビット文字をパックするだけでサイズがほぼ半分になってしまうので、そこから圧縮して3~4割減らしても圧縮時間で相殺される感じです。 れいさんの言うように、圧縮と送信を並行して行うしか手はなさそうです。
1そうだね
プレイ済み
返信[2]
親投稿
てらこや actorbug
姑息な手段で微妙に高速化したので、ひっそりと再公開。公開キー【BBW4E8KV】
0そうだね
プレイ済み
返信[1]
親投稿
てらこや actorbug
Deflate(ZIP),LZSS,LZW,ハフマン符号の詰め合わせです。ただし、LZSSとハフマン符号はDeflateから該当部分を切り出しただけです。 文字列の圧縮は、いったんUTF-8に変換してから圧縮するので、実際より圧縮率が高めに出ます。 余談ですが、ハフマン符号を圧縮に使うためには、文字とビット列との対応表も一緒に保存する必要があるので、もとの長さより短くするのはけっこう大変です。
0そうだね
プレイ済み
プレイ日記
てらこや actorbug
久々に圧縮ライブラリのサンプルを実行してみたら、EX8TECHDEMOのファイル名が変わって動かなくなっていたので、上げなおしました。 公開キー【K37VS3RJ】
7そうだね
プレイ済み
返信[18]
親投稿
てらこや actorbug
操作不能になるので、報告しておいたほうが良さそうですね。
1そうだね
プレイ済み
返信[16]
親投稿
てらこや actorbug
現象確認しました。 とりあえず、以下のように直せば回避できそうです。 PRGEDIT S1,CALCLINE(...)+28 ↓ PRGEDIT S1,MIN(PRGSIZE(S1),CALCLINE(...)+28)
0そうだね
プレイ済み
返信[11]
親投稿
てらこや actorbug
そうなると、こちらとの明白な違いはなさそうです。 ちょっと私では原因を見つけられそうにありません。申し訳ない。
0そうだね
プレイ済み
返信[9]
親投稿
てらこや actorbug
最近3DS本体の更新があったので、こちらで再現しないのはそれが原因かもしれません。 こちらの本体のバージョンは、Ver.10.4.0-29Jになります。 ちなみに、diffのファイルサイズは同じでした。
0そうだね
プレイ済み
返信[5]
親投稿
てらこや actorbug
サイズ4529のファイル(中身は改行のみ)を作ってみましたが、特に問題はなかったので、ファイルサイズの問題ではなさそうです。 ファイルをいただければ調べてみますが、難しいでしょうか。
0そうだね
プレイ済み
返信[2]
親投稿
てらこや actorbug
こちらだと再現しないようです。 旧3DS、New3DSともに問題ありません。 何か他に条件があるのかもしれません
0そうだね
プレイ済み
返信[7]
親投稿
てらこや actorbug
UTF-8に変換して詰め込むだけでも多少はましになる気がします。 それ以上の圧縮となると、ビット単位で詰め込まないと無理そうですが、旧3DSだと処理速度が厳しそうです。 手元にある圧縮ルーチンで一番速いLZWでEX8TECHDEMO(47,611文字)の圧縮に5秒強、展開に4秒弱(旧3DS)。圧縮結果が13,120文字なので、1万文字2秒だとかえって遅くなります。 圧縮しつつ送信すれば、圧縮と展開を2つの3DSで並行して行えるので、多少はましかもしれませんが。
0そうだね
プレイ済み
返信[2]
親投稿
てらこや actorbug
YYLEXは、まだ仕様検討中ですが、現時点ではこんな感じです。 YYLEX S$,P OUT NP,T,TV S$ : 対象文字列 P : 開始位置 NP : 次回開始位置 T : トークン型を表す数値(yaccのyylex()の戻り値) TV : トークン意味値(yaccのyylval) グローバル変数を使いたくなかったので無駄に複雑ですが、TとTVだけまともな値を返せば動くはずです。 %unionはありませんが、宣言部に「%YYSTYPE $」と書くことで、トークン意味値の型を文字列型にに変えられます。 YYLEXの引数がTV$になり、アクション内ではV$[I]で参照できるようになります。
0そうだね
プレイ済み