2014-09-23 80 views
-4

我想寫一個顯示PI號碼的10000位數的程序,很簡單,呵呵?那麼,有一個問題,該文件被限制爲5000字節。我試圖做一些事情,比如將「11」改爲a來縮短代碼,但是它大約是9000,這對我來說太過分了。任何想法或提示?而且我無法使用任何其他庫或函數在線或從文件下載PI編號。只是iostream。PI號碼到10000位

+2

你可以使用各種方法來壓縮數字,但是你不會真正在「顯示10000位數字的PI」。目前還不清楚你實際需要做什麼。 – interjay 2014-09-23 16:37:21

+0

聞起來像功課,任務是我想弄清楚一些至少非常基本的壓縮。 4位足以編碼小數位1位。 – Andrey 2014-09-23 16:38:00

+0

你有什麼代碼? – DavidT 2014-09-23 16:38:02

回答

1

可以使用高4位和低4位將兩個數字打包到一個字節中。例如,對於3.141 ....將14包裝成一個字節00010100(0001 == 1,0100 == 4)。這樣你的10,000個數字將佔用5000個字節。

當您讀取文件時,只需打印3.後跟解包數據即可。

+0

您可以將8編碼爲10和9編碼爲11,以節省一些額外的空間。 – Andrey 2014-09-23 16:56:45

0

這是pi的前10,000個數字:http://www.nerdparadise.com/math/reference/pi10000/

這些由數字下斷裂是:

0: 968 
1: 1026 
2: 1021 
3: 974 
4: 1012 
5: 1046 
6: 1021 
7: 970 
8: 948 
9: 1014 

這意味着該最小編碼是:

000: 5 
001: 1 
010: 2 
011: 6 
100: 9 
101: 4 
1100: 3 
1101: 7 
1110: 0 
1111: 8 

共有4232.5字節的打包數據。

我將離開實施解碼器作爲練習給讀者。

另見本的YouTube視頻,獲取有關如何創建最小編碼的解釋:

https://www.youtube.com/watch?v=M5c_RFKVkko

0

現在看來似乎會更容易只是爲了產生PI而不是通過壓縮PI本身的程序。這是通過諸如Gregory-Leibniz或Nilakantha系列等系列完成的。有關他們如何工作的文章可以在here找到。這些程序可以很容易地用幾乎任何語言書寫。

希望這會有所幫助。