0
A
回答
4
在Scheme中有很多方法可以做到這一點。在這個答案中,我將使用PLT Scheme(如你的標籤建議)。我將提供PLT計劃documentation的鏈接,您可以在這裏閱讀有關這些內容的更多信息。
首先我們可以define a point structure。
(define-struct point (x y) #:transparent)
這個簡單的定義會自動創建,我們可以用我們的點工作時使用
(make-point 3 4)
將創建一個具有座標新點(3,4)(point-x <some-point>)
返回許多有用的功能x座標,例如。(point-x (make-point 3 4))
通過y的計算,以3
要sort點的座標列表:
(define (sort-by-y lst)
(sort lst
<
#:key point-y))
如果你想保持排序列表,當你insert
一個新的點,你可以這樣做
(define (insert x xs #:predicate (p <) #:key (k (lambda (x) x)))
(if (null? xs)
(list x)
(let ((y (car xs)))
(if (p (k x) (k y))
(cons x xs)
(cons y (insert x
(cdr xs)
#:predicate p
#:key k))))))
insert
函數有兩個可選參數:
- 謂詞功能,可根據不同順序(默認爲<)
- 其可被用於從一些結構中提取的元素的鍵功能(默認爲恆等函數)被用於保持列表排序
此功能可像這樣使用:
> (insert 3 (list 1 2 4 5 6))
(1 2 3 4 5 6)
> (insert (make-point 3 5) plist #:key point-y)
(#(struct:point 2 1)
#(struct:point 9 2)
#(struct:point 1 3)
#(struct:point 3 5)
#(struct:point 6 6))
> (insert (make-point 3 5) (reverse plist) #:predicate > #:key point-y)
(#(struct:point 6 6)
#(struct:point 3 5)
#(struct:point 1 3)
#(struct:point 9 2)
#(struct:point 2 1))
其中plist
是一個點的排序列表。
相關問題
- 1. Python Tkinter保存點座標
- 2. 如何保存和歸檔CLLocationCoordinate2D座標?
- 3. 在SQLite中保存座標
- 4. 在數據庫中保存數據點座標
- 5. 如何將座標和圖像保存到整數變量中?
- 6. 如何保存在sqlite數據庫中的座標值
- 7. 排序座標python中的列表正方形的點數
- 8. 如何用Python中的(有限)計劃表示像素座標
- 9. 如何保存Google地圖的座標?
- 10. 排序2D座標
- 11. 如何在ActiveMQ中保存排序?
- 12. make_heap和排序x和y座標
- 13. 基於x和y座標的排序
- 14. 在OL3中保存多個點的座標
- 15. 保存在PHP中排序的數組
- 16. 顯示點座標的x軸計數
- 17. 如何獲取,保存和計算座標之間的距離與CoreLocation
- 18. 計劃:合併和排序功能
- 19. 如何計算從座標列表中給定點的最近座標
- 20. 如何在R中保存二進制圖像的XY座標?
- 21. 標準存儲桶或計數排序
- 22. 在igraph中保存節點座標(佈局)
- 23. 在Matlab中對座標點進行排序
- 24. 將谷歌地圖中的座標和數據保存在數據庫中
- 25. GeoFire Swift 3 - 保存和更新座標
- 26. 檢索已保存的谷歌地圖上的座標點的座標
- 27. 計劃中的標識符和綁定 - 如何解釋函數?
- 28. 將鼠標座標保存在數組中
- 29. 計算座標點與VB.net
- 30. OpenXml和Word:如何計算WrapPolygon座標?
太棒了!非常感謝喬納斯。很好的解釋! 我是非常新的plt-scheme。我認爲(個人)計劃書或文檔是以這樣一種方式編寫的,即你必須從頭開始,並且不能按照你的要求隨機飛行。 如果你能指導文檔鏈接,會更好。這將有助於我走上正軌並在詢問下一個問題之前嘗試使用文檔:) – fireball003 2009-06-11 12:04:26