在計劃中寫入函數時出現問題。該方法將表示爲符號列表的單詞作爲輸入,並且對於每個字符執行哈希方程並返回值。最終值是集合中每個字符的散列值的總和。計劃 - 如何在字符串中查找字符索引
想象一個字符串作爲字符數組'w',其中w [i]是數組中每個字符的索引。
該等式是單詞中每個字符的總和 - > 7^i * ctv(w [i])。
對於每個字母其中CTV(「字符到值」)的地圖 'a' 到1, 'B' 到2,...和 'Z' 到26
例如,鍵( 「day」) =(7^0 * ctv('d'))+(7^1 ctv('a'))+(7^2 ctv('y'))= 1236
SO,我對這個問題的實際問題是我如何找到索引,我在w [i]中爲單詞中的每個字符。 這是我的第一個想法,使用(長度W)作爲索引,但我知道這是不正確的。
(define keys
(lambda(w)
(if(null? w)
0
(+ (* (ctv(car w)) (expt 7 (length w))) (keys (cdr w)))))
)
我的下一個想法可能是它的大小lambda,像這樣。 注意 - 我知道它需要更改爲(大小1)。
(define keys
(lambda(size)
(lambda(w)
(if(null? w)
0
(+ (* (ctv(car w)) (expt 7 (size w))) (keys (cdr w)))))
)
但即使如此,其尺寸將仍是索引的相反端,例如與「日」,大小-1「d」爲2,並且對於大小-1「Y」將是0
無論如何,如果任何人有任何想法我在說什麼,並有可能的解決方案或建議,請回復!
收到以下錯誤: 與字符串>列表:預計類型的參數;給出(h l l o)。測試程序的單詞先前被定義爲:(define hello'(h l l o)),所以我可以在hello上運行'keys'。所以所有單詞都需要表示爲一組符號。 –
RCouch
2014-11-22 19:55:23
也在最後一行乘法部分得到這個錯誤: *:預計輸入作爲第二個參數,給定:#;其他的論點是:1 –
RCouch
2014-11-22 20:06:41
@RCouch第一個錯誤:在你的問題中,你說輸入看起來像「天」,請用應該用作輸入的_real values_更新問題。對於第二個錯誤:這是因爲在執行'ctv'時出現錯誤,目前它正在返回'#',您必須對其進行修復並正確測試以使此算法正常工作。 –
2014-11-22 23:25:22