私はかなりSchemeを使い慣れていませんし、宿題の一部として関数を書くのに問題があります。私はグラフGを次の形式のリストとして私に与えました:((node1 node2 weight1)(node3 node4 weight2)...)。私はこのグラフのすべてのノード(V)のリストをこの形式で返す関数を書こうとしています:(node1 node2 node3 ...)。この関数は、グラフ(G)のみを入力とすることができる。スキーム:ネストされたリストから要素を取得する
だから私は、私はVに、G内の各ネストされたリストの第1および第2の要素を追加することにより、再帰的にこれを行うことができますここで私が書いたものだと思った:として、私はこれはしかし間違っていると思う
(define nodes-of
(lambda (G)
(if (null? G)
()
(begin (add-to-set (cadar G) (nodes-of (cdr G)))
(add-to-set (caar G) (nodes-of (cdr G))))))
最初の再帰は(cadar G)のみを含み、2番目の再帰は(caar G)を含み、返り値はbeginの下の2番目の文(私が間違っていない場合)によってのみ設定されます。
add-to-setは宿題のために先に書いた関数ですが、リストに要素がない場合は要素をリストに追加します。 (例:add-to-set n S、これはSにnを加えます)
誰でも助けてくれますか? (btw私は複数のlet'sを使用することは許されません、*またはset)
ありがとう! – bleyzn
@bleyzn喜んでお手伝いします – oobivat