夠無聊的寫這個,為防止需要的人也無聊一遍,寫個吧
演算法有n種,但是,咱們一種就夠用了
1--陣列倒序排列
2local
function
orderbydesc( input )
3local output ={}
4local count = #input
5while count > 0do6
table.insert
(output, input[count] )
7 count = count -1
8end
9return
output
10end
1112
--進製轉換,英文不行只好用拼音
13--
@dec 10進製資料,好吧,只要是數字就呆以了
14--
@x 進製,最常見的當然是
二、八、十
六、進製
15local
function
_dec
2x( dec, x )
16--
計算結果儲存在這裡
17local new_number ={}
1819
--演算法如下:
20--
9527 = 9*(10^3)+5*(10^2)+2*(10^1)+7*(10^0)
21--
7 = 9527%10, 2 = (9527-7)%100/100
22--
f(n) = (dec % (x^i) - f(n-1))/x
23--
f(0) = 0
24--
a引數代表第幾位,返回是否繼續
25local
function
f( a )
26assert(a >= 1)27
local mod = dec % math.pow
(x, a)
28local last_mod = (a == 1) and0or
assert(new_number[a-1
])29 new_number[a] = (mod - last_mod)/math.pow(x, a - 1)30
--取整數部分
31 new_number[a] = math.modf
(new_number[a])
32return mod ~=dec
33end
34--
該函式取得某位值
35local i = 1
36while f(i) do
37 i = i + 1
38end
3940
return
new_number
41end
4243
--將某個資料轉成x進製
44--
以 9527,10進製為例,
45local
function
_numbertable
2x( number_tbl,x )
46local result = 0
47for i,v in
ipairs(number_tbl) do
48print
(result,x, i, v)
49 result = result + v*math.pow(x, i - 1)50
end51
return
result
52end
5354
local
function
test_dec2x ()
55local ktestnumber = 9527
56local n1 = _dec2x(ktestnumber, 10)57
--table.foreach(n1, function ( _,v )
58--
print(v)
59--
end)
60assert(ktestnumber == _numbertable2x(n1, 10
))61
end62 test_dec2x()
M進製轉換為N進製數
給定乙個十進位制數m,以及需要轉換的進製數n。將十進位制數m轉化為n進製數 輸入為一行,m 32位整數 n 2 n 16 以空格隔開。為每個測試例項輸出轉換後的數,每個輸出佔一行。如果n大於9,則對應的數字規則參考16進製制 比如,10用a表示,等等 比如 輸入 7 2 輸出 111 進製轉換的思路...
從M進製轉換為N進製
從m進製轉換為n進製 internal class mbase2nbase ctor m進製值字串 m進製 如10 引數值在2 36的範圍內 n進製 如8 則意味著從10進製轉換成8進製.引數值在2 36的範圍內 public mbase2nbase string mvalue,int m,int ...
練習系列 8 m進製轉n進製(任意進製轉換)
author liubao date 2011 4 10 brief m進製轉n進製,主流實現方式 include m進製 數字 字串轉為n進製字串。先由m進製轉為10進製,再由10進製轉為n進製 param dest 轉換完畢的n進製字串 param n 目的進製數 十六進製制填16 二進位制填2...