跳到正文

平成23年度 秋期 ITパスポート試験 問90

这道题的解析和你的作答记录。

問90
頻出度★☆☆

文字や図形を白黒で縦 7 画素,横 7 画素のディジタル画像で表すとき,数字の“0”を図 1 のように表現する。このディジタル画像を画素データとして出力する処理,画素データを圧縮する処理及びディジタル画像を回転させる処理について考える。 図 1 数字の“0”のディジタル画像

1列2列3列4列5列6列7列
1行□□■■■□□
2行□■□□□■□
3行□■□□□■□
4行□■□□□■□
5行□■□□□■□
6行□■□□□■□
7行□□■■■□□

画素データを出力する処理の概要と圧縮する処理の概要は,次のとおりである。 〔画素データを出力する処理の概要〕 (1) 画素の色が白のときは“w”,黒のときは“b”を画素データとして出力する。 (2) 1 行 1 列,1 行 2 列,…,1 行 7 列,2 行 1 列,2 行 2 列,…,7 行 7 列の順番に各位置の画素データを出力する。 (3) 画素データを出力する際は,各画素データの間をコンマ“,”で区切る。 (4) 図 1 の画素データを出力した結果は次のとおりになり,文字数はコンマを含めて 97 文字になる。 w,w,b,b,b,w,w,w,b,w,w,w,b,w,w,b,w,w,w,b,w,w,b,w,w,w,b,w,w,b,w,w,w,b,w,w,b,w,w,w,b,w,w,w,b,b,b,w,w 〔画素データを圧縮する処理の概要〕 (1) 同じ色の画素データが連続する場合,“w”又は“b”の後に連続する画素の数をつなげて出力する。例えば,“b,b,b”は“b3”になる。 (2) 図 1 の画素データを圧縮した結果の出力は次のとおりになり,文字数はコンマを含めて 64 文字になる。 w2,b3,w3,b,w3,b,w2,b,w3,b,w2,b,w3,b,w2,b,w3,b,w2,b,w3,b,w3,b3,w2 図2で示すディジタル画像の画素データを圧縮した結果の文字数は,コンマを含めて何文字か。

出典 平成23年度 秋期 ITパスポート試験 問90
解説

問 90

  • 错误ア

    34 个字符是漏看了竖线最上端、即第 1 行第 4 列的那 1 个黑色像素,把第 1 行整行都读成白色时得到的值。这样读的话,开头的游程会合并成白 9 个,压缩结果变成 w9,b2,w6,b,w6,b,w6,b,w6,b,w5,b3,w2 共 13 个游程,22 个字符+12 个逗号=34 个字符。实际的图 2 中第 1 行第 4 列也是黑色,所以开头会分成 w3 和 b 两段,不会是 34 个字符。

  • イ

    正解 压缩规则是游程编码法:把同一颜色连续出现的部分归并为「表示颜色的字母(白为 w,黑为 b)+连续的像素个数」,各数据之间用逗号分隔。当连续个数为 1 时不写数字,只写 b 或 w(题组 A 的图 1 中给出的压缩示例 w2,b3,w3,b,… 就是这样)。扫描顺序是第 1 行第 1 列→第 1 行第 7 列→第 2 行第 1 列→…→第 7 行第 7 列连成一串,因此即使换行,只要同一颜色继续下去,就要合并为一个游程,这一点很重要。图 2 的 7×7 像素中,第 1 行是□□□■□□□,第 2 行是□□■■□□□,第 3~6 行是□□□■□□□,第 7 行是□□■■■□□。从左上角开始依次排列并归并,得到白 3、黑 1、白 5(第 1 行右侧的 3 个和第 2 行左侧的 2 个相连)、黑 2、白 6、黑 1、白 6、黑 1、白 6、黑 1、白 6、黑 1、白 5、黑 3、白 2,压缩结果为 w3,b,w5,b2,w6,b,w6,b,w6,b,w6,b,w5,b3,w2。连续个数的合计是 49,与 7×7 像素一致,可以确认没有数错。字符数方面,w3、w5、b2、w6、w6、w6、w6、w5、b3、w2 这 10 个各占 2 个字符共 20 个字符,单独的 b 有 5 个共 5 个字符,合计 25 个字符。作为分隔符的逗号,在 15 个游程之间有 15−1=14 个。因此 25+14=39 个字符,正确答案是イ。

  • 错误ウ

    42 个字符是把跨行的连续部分在某一处切断时得到的值。例如把第 1 行末尾的 3 个白色像素和第 2 行开头的 2 个白色像素不相连,而分成 w3 和 w2 两个游程,游程就多出 1 个,字符多出 2 个、逗号多出 1 个,变成 39+3=42 个字符。输出的顺序是第 1 行第 7 列之后紧接第 2 行第 1 列的一串连续排列,所以不能在行的交界处切断。

  • 错误エ

    44 个字符是把连续个数为 1 的像素也一丝不苟地写成 b1 或 w1 时得到的值。这样 15 个游程全都是 2 个字符,15×2=30 个字符,再加上 14 个逗号就是 44 个字符。题组 A 的图 1 的压缩示例中,单独的黑色像素写作 b 而不是 b1,规定连续个数为 1 时省略数字,所以不会是 44 个字符。

ここがポイント
  • 游程编码法(行程长度编码)是把相同值连续出现的部分替换为「值+连续个数」的无损压缩。本题的要点在于能否从图 1 的示例中正确读出「连续个数为 1 时不写个数」这条局部规则,漏看这一点就会得出 44 个字符(エ)。
  • 像素的扫描顺序是从第 1 行第 1 列向右,一行结束后转到下一行的第 1 列,是一串连续的排列,因此同一颜色跨行继续时也要合并为一个游程。数字符数时不要忘记加上作为分隔符的逗号(游程数−1 个),并用连续个数的合计是否等于总像素数 49 来验算。
用語
解答問90イ
练这一题

作答记录