平成25年秋期 午後問8

chihiroさん  
FE・シルバーエキスパート
(No.1)
https://www.fe-siken.com/kakomon/25_aki/pm08.html
設問2の解説で、圧縮文字列が  ABCDEFG$GE$LDF$MG  とありますが、
正しくは  ABCDEFG$GE$EDF$MG だと思います。(12文字目のL→E)
・圧縮する文字並びの検索処理において、比較文字位置の移動は文字列の先頭に向かって行われる
・文字列が4以上、かつ、最も多いかどうかを調べる処理において、条件式の一部が
  Maxfitnum < Fitnum  となっている
以上のことから、置き換え文字数が同じ箇所が複数ある場合は、最初に合致した部分、つまり圧縮文字位置からの距離が最も近い部分を置き換え元の文字列とします。
圧縮前の文字列  ABCDEFGABCDEABCDFEFGABCD
の13文字目の"A"から16文字目の"D"までの置換では、置き換え元の候補に1~4文字目の"ABCD"と、8~11文字目の"ABCD"の2つがありますが、13文字目の"A"からの距離がより近い、8~11文字目の"ABCD"が置き換え元になります。
よって比較文字位置と置換対象の文字並びの先頭の文字の距離が13-8=5、文字数が4なので、圧縮列は"$ED"となります。
2021.11.07 19:14
管理人 
(No.2)
ご指摘ありがとうございます。解説を以下のように修正させていただきました。

13文字目の"A"から16文字目の"D"までが、先頭文字の5文字前からの4文字に一致するので、"$ED"に置き換えられる。

ABCDEFG[ABCD]E[ABCD]FEFGABCD
  ↓
ABCDEFG$GE[$ED]FEFGABCD

先に5文字前からの4文字に一致するので、同じ4文字ならこちらが優先されるということですよね。
2021.11.09 12:56

返信投稿用フォーム

スパム防止のためにスレッド作成から30日以上経過したスレッドへの書き込みは禁止しています。

その他のスレッド


Pagetop