私は、リンク上の移動中にwalker
エージェントによって収集されたリンクノードのリストを持っています。 彼は目的地に到着したら、彼は道を救うがループはしない。移動エージェントのパス内のサイクルを削除します。
ループを排除する方法は、ソースリンクから開始する位置によってリンク位置を反復してスキャンすることによって行われます。i-th
のリンクでは、リンクは最初のリンクが発生するまでスキャンされますたとえば、位置j
にある(最新のi
でスキャン処理が停止するため、常にi <= j
が保持されます)。 j > i
がある場合、位置i+1
から位置j
までのリンクのサブパスはループに対応し、削除することができます。
私は成功せず、引数として初期リストをとるto-report
再帰をコーディングしようとしています。私のループではなく、ループのないパスを与える私のテストのコードはこれです:
to-report no-cycles [ lista ]
ifelse empty? lista [
report lista ] [
let x1 (first lista)
let rest (butfirst lista)
let rev-rest (reverse rest)
let rev-rest1 (first rev-rest)
ifelse x1 != rev-rest1 [
report no-cycles (butlast rest)
] [
report lista ]
]
end
これは良いアプローチであれば、私は知りません。
は、私は正確にあなたのコード化されたアプローチを機能させるために方法を見つけ出すことができなかったあなたの助け
あなたが試したこととその欠点を教えてください。 –
上記は私が動作させようとしているコードですが、数字のリスト(リンクではありません)では私にループが与えられますが、ループのないパスはありません。 – user1993416