4
我想寫一個算法來執行霍夫曼解碼。我在Scala中完成它 - 這是Coursera課程的一個任務,我不想違反榮譽代碼,所以下面是僞代碼而不是Scala。霍夫曼解碼(斯卡拉)
我寫的算法需要樹tree
和位列表bits
,並且應該返回消息。但是,當我在提供的樹上嘗試它時,我得到一個NoSuchElementException
(空列表的頭)。我看不出爲什麼。
我知道我的代碼可以整理一下 - 我對函數式編程還是很新的,所以我用一種對我來說很有意義的方式編寫代碼,而不是以最緊湊的方式編寫代碼。
def decode(tree, bits) [returns a list of chars]: {
def dc(aTree, someBits, charList) [returns a list of chars]: {
if aTree is a leaf:
if someBits is empty: return char(leaf) + charList
else: dc(aTree, someBits, char(leaf) + charList)
else aTree is a fork:
if someBits.head is 0: dc(leftFork, someBits.tail, charList)
else someBits is 1: dc(rightFork, someBits.tail, charList)
}
dc(tree, bits, [empty list])
}
在此先感謝您的幫助。這是我第一次在StackOverflow上,所以我可能有一些學習如何最好地使用該網站。
太棒了!謝謝。這正是問題所在。在我的腦海中,屏幕上出現錯誤。 – gadje
我很高興能幫上忙。你可以批准一個答案嗎? :P – Rumid
哈,是的,對不起,新的。 – gadje