我必須編寫一個函數來旋轉列表n次。旋轉由將元素從前面放置到列表的末尾組成。我完全失去了。任何幫助將不勝感激!方案旋轉函數
Q
方案旋轉函數
1
A
回答
-2
基本實現將
(define (rotate lst n)
(cond
[(< n 0)
(error "n is negative")]
[(or (= n 0) (null? lst))
lst]
[else
(rotate (append (cdr lst) (list (car lst)))
(- n 1))]))
所以
(rotate '(a b c d e) 3)
=> '(d e a b c)
(rotate '(a b c) 5)
=> '(c a b)
作爲你應該改進測試(< n 0)
和(null? lst)
,因爲這些只需要做一次。
1
您需要使用(或者自己實施,如果這是針對某個課程,並且您的任務需要您手動實施所有內容)take
,drop
和append
。
(take lst n)
返回lst
第一n
元件。例如,(take '(1 2 3 4 5) 3)
返回(1 2 3)
。(drop lst n)
的lst
第一n
元素後返回的一切。例如,(drop '(1 2 3 4 5) 3)
返回(4 5)
。(append lst1 lst2)
返回包含的lst1
所有元素,其次是lst2
所有元素的列表。例如,(append '(4 5) '(1 2 3))
返回(4 5 1 2 3)
。
一旦你手頭有這些功能,實現旋轉功能很簡單:
(define (rotate lst n)
(let ((n (modulo n (length lst))))
(append (drop lst n) (take lst n))))
相關問題
- 1. OpenCV旋轉解決方案?
- 2. 旋轉正方形函數JS Canvas
- 3. 循環旋轉codility C++解決方案
- 4. jQuery與jcrop旋轉函數
- 5. 解決方案停止角度2中的旋轉數字
- 6. 函數到方案和函數SQL
- 7. 魔方旋轉
- 8. 轉換JavaScript解決方案,以函數式編程方法
- 9. jQuery旋轉函數 - 在圖像點擊時指定20%旋轉?
- 10. lambda函數和方案
- 11. 旋轉正方形與旋轉動畫
- 12. 旋轉數據網格,如何旋轉方向/箭頭鍵
- 13. 旋轉2D平方
- 14. 2D旋轉方向
- 15. d3 globe - 說旋轉不是函數
- 16. 使用CSS attr()函數旋轉元素
- 17. TypeError:jQuery(...)。find(...)。旋轉木馬不是函數
- 18. jQuery旋轉函數不會觸發。
- 19. 旋轉函數奇怪的行爲
- 20. swift:SKSpriteNode不在更新函數中旋轉
- 21. jQuery旋轉函數圖像選擇
- 22. VHDL位旋轉函數語法錯誤?
- 23. 使用函數來旋轉地圖?
- 24. CSS/JS/HTML:JS旋轉整頁的函數?
- 25. 函數接收和旋轉文本
- 26. 停止以下JQuery函數的旋轉
- 27. $(...)。旋轉木馬不是一個函數
- 28. OpenGL使旋轉函數給出向量
- 29. Web:圖像旋轉和縮放的解決方案
- 30. 如何使用客戶端解決方案旋轉圖像
我的解決方案實際上更短,閱讀更清晰,並且沒有相同的計算缺陷。儘管如此,我仍然避免發佈一個實際的代碼解決方案,因爲我希望OP實際上對解決方案進行思考,而不僅僅是切割和粘貼,但我可能不得不重新考慮,以讓我的答案更可能被接受爲名。 –
我也認爲我的解決方案更真實於函數式編程:它是由非常小的可組合的通用函數構建的。 'take','drop'和'append'是任何函數式編程工具箱中的標準函數(就像'map'和'fold'一樣,儘管這些問題在這個問題中沒有使用)。我寧願使用這些組件,也不願意編寫手動循環。再一次,不要試圖冒犯,只是提出我對代碼質量的看法。 (在工作中,我們有強制性的代碼審查,所以我做了很多,並且有一些我習慣的審查風格。對不起,你發現我的風格是冒犯性的。) –
@ ChrisJester-Young答案確實如此說這是一個「基本」的實施。 OP剛剛開始學習這些東西。這個答案顯示瞭解決問題的本地化方法(又名遞歸),另一個顯式地創建了最終結果。偉大的博覽會! :) –