首頁 短篇

編程代碼之戰(zhàn)

第十章 地圖壓縮

編程代碼之戰(zhàn) 程序小猿 538 2022-09-03 20:36:09

  “阿歷克斯,再想想別的法子吧,這可是我的美好回憶哪...”

  牛仔央求著說道。

  “唉,好吧”。

  楊成只好單手托著腮,開始了思考。

  地圖信息對象是像這樣的:

  [1,1,1,0,1]

  [0,0,1,0,0]

  [1,0,1,0,1]

  [1,0,0,0,1]

  [1,1,1,1,1]

  這是一個5X5的矩陣,其中數(shù)字1代表可通行的區(qū)域,數(shù)字0標注的區(qū)域無法通行。

  那么,怎么把這個地圖實例壓縮到10個字符以內(nèi)呢?

  像這樣?

  “[[1,1,1,0,1],[0,0,1,0,0],[1,0,1,0,1],[1,0,0,0,1],[1,1,1,1,1]]”

 ?。╯tringify)

  這種轉為字符串的方法很有效,但缺點也很明顯。

  它占用的存儲空間太多了,遠遠超過了10個字符的長度。

  所以,必須想一個辦法,對地圖信息進行壓縮。

  楊成通過觀察,發(fā)現(xiàn)了一種比較好的壓縮方法。

  首先將矩陣的每一行,都看作是二進制表示的一個數(shù)字。

  比方說,第一行:

  [1,1,1,0,1]

  把它看作二進制數(shù)字:

  “11101”

 ?。?6進制由0-9和a-z組成,a-z對應10-35)

  接著,將這個2進制數(shù)字,轉換為36進制。

  得到小寫字母“t”。

  這樣,又足足減少了4個字符,達到了壓縮的目的!

  如果對矩陣的每一行都這么處理,就可以得到5個36進制字符。

 ?。╰,4,l,h,v)

  再將這5個字符用逗號分割開來,以表明是不同的行,到時候方便還原數(shù)據(jù)。

  總共只需要5+4=9個字符,其中包括4個逗號。

  Bingo!

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進入下一章  按 “空格鍵” 向下滾動
目錄
目錄
設置
設置
書架
加入書架
書頁
返回書頁
指南