▶ 実 行
▶ 実行
クリア
ランレングス圧縮・解凍+白黒8x8ドット描画ツール
by クジラ飛行机
# ------------------------------------------------ # ランレングス圧縮・解凍+白黒8x8ドット描画ツール # ------------------------------------------------ # [解説URL] https://news.mynavi.jp/techplus/article/nadeshiko-84/ TILE=40 描画データ=0を64だけ配列要素作成 色配列=[白色,黒色] 結果ラベル=「」のラベル作成。 タイル描画処理。 描画中キャンバスをマウス押した時には: XX=INT(マウスX÷TILE) YY=INT(マウスY÷TILE) 描画データ[YY*8+XX]=(描画データ[YY*8+XX]+1)%2 タイル描画処理 ●タイル描画処理とは: Yを0から7まで繰り返す: Xを0から7まで繰り返す: V=描画データ[Y*8+X] 色配列[V]に塗り色設定 [X*TILE,Y*TILE,TILE,TILE]へ四角描画 V=描画データを「」で配列結合。 圧縮V=Vをランレングス圧縮 結果=「元データ:{文字数(V)}文字/圧縮データ:{文字数(圧縮V)}文字<br>圧縮データ:{圧縮V}」 結果ラベルに結果をテキスト設定。 ●(入力データを)ランレングス圧縮とは: 結果は空 個数=0 前回C=入力データの1文字左部分 # --- 入力データを先頭から順に調べる --- (*1) Cで入力データを反復: もし、Cが前回Cならば: 個数を1増やす # --- (*2) もし、個数=9ならば: 結果=結果&「{個数}{C}」# --- (*3) 個数=0 続ける。 結果=結果&「{個数}{前回C}」# --- (*4) 前回C=C 個数=1 結果=結果&「{個数}{前回C}」 それは結果。 ●(圧縮データを)ランレングス解凍とは: 結果=「」 個数=0 # 圧縮データを先頭から順に調べる ---- (*5) Cで圧縮データを反復: # 偶数なら繰り返し回数、奇数なら実際のデータ --- (*6) もし、(対象キー%2)が0ならば: 個数=INT(C) 違えば: Cを個数でリフレインしてCCに代入。# --- (*7) 結果=結果&CC それは結果。
113f42c33f8d48789bf18ee0aa129f50
2783