買い物リスト/待ち行列タイプの関数のソートを実装しようとしています。いくつかの問題を抱えている関数は、removeByPriorityです。削除するアイテムの番号とリストを渡したいと思います。リストに含まれていない場合は、リストを返すだけですが、リストにあれば削除して、優先順位を更新したリストを返します。私は仕事をするいくつかのヘルパー関数を作成しているスキーム:リストから何かを削除して優先度を更新する
=> (("Apple" 3) ("Milk" 2) ("Eggs" 1))
、そして成功した一定の優先順位があるか、リストにないかどうかを確認することができます。たとえば
、(removePriority 2ショッピングリスト)が返されますしかし、私はそこにこだわっています。
#lang scheme
(define shopping-list '(("Apple" 4) ("Orange" 2) ("Milk" 3) ("Eggs" 1)))
(define name (lambda (m)
(car m)
))
(define priority (lambda (m)
(car (cdr m))
))
(define containsPriority
(lambda (k lst)
(cond
((null? lst)#f)
((equal? k (priority (car lst)))#t)
(else (containsPriority k (cdr lst)))
)
)
)
(removeByPriority k lst)
(define removeByPriority
(lambda (k lst)
(if((not(containsPriority k lst))lst)
(equal? k (priority(car lst)))
(else(removeByPriority k (cdr lst))(cons (car lst)))
)
)
)
(removeByPriority 2 shopping-list)
、 '' Eggs''は全ての優先順位が減分されるべきであるので、 '0'の優先順位を持つべきですか? –
この場合、優先度が削除された優先度よりも大きい場合は、優先度を減らしています。 – user2411290