2017-05-10 6 views
0

これは今質問された前の質問に関係します。リストからエージェントセットを外す

リスト(カメを表す)をエージェントセットに変換するにはどうすればよいですか?

例えば、私は4つの要素[カメ0カメ3カメ4カメ7]リストのうち

[ "カメ0" "亀3" "亀4" を含む

agentsetを作りたいです"turtle 7"]

私は以前に "foreach"を試みました。

ありがとうございます〜!!

+0

ユーザーの以前の質問は、http://stackoverflow.com/questions/43889591/concatenate-words-in-netlogoです。 –

答えて

2

私はあなたが最初の場所で

["turtle 0" "turtle 3" "turtle 4" "turtle 7"] 

ようなリストで作業する必要があるだろう、なぜわかりません。エージェントへの参照をエージェントへの直接参照以外のものとして格納することは、通常はお勧めできません。

言われて、あなたとagentsetに、このような文字列を変換できること:これらのカメのいずれかが存在しない場合は

turtle-set map runresult ["turtle 0" "turtle 3" "turtle 4" "turtle 7"] 

、彼らはただ結果agentsetから除外されます。

まだ、多分病気のアドバイスのように全部が私を襲う。あなたが達成しようとしていることについてもっと教えてくれたら、もっと良いアプローチを提案するかもしれません。

+0

あなたのご意見ありがとうございます、Nicolas:エージェントの一部を特定の番号で引き出しようとしていました。最初の[カメ0]、[カメ0カメ3]、[カメ0カメ3カメ4]などのように、ループの進行に伴ってその数字が追加されます。あなたが提案した方法は、エージェントが4人ではなく0人になります。しかし、私は "runresult"が答えを出すように感じます。もう一度〜ありがとう! –

+0

原則として、エージェント番号の使用を避けてください。これは、ゼロの利点があり、しばしば微妙なバグにつながるようなことをするラウンドアバウトの方法です。 Luke Cさんのように、最初にエージェントを含むようにリストを作成するだけです。 –

+0

ああ〜!おそらく私はコード全体をやり直すでしょう。あなたの素晴らしい助けをいただきありがとうございました〜!! :) –

0

文字列のリストを操作する何らかの理由で制約がありますか?そうではないにもかかわらず依然としてリストが必要な場合は、リストを作成して最初にエージェントを入れることをお勧めします。これを後でファイルに書き込む場合は、とにかく文字列に変換されます。内部的にはエージェントと直接作業する方がはるかに簡単です。番号のリストに基づいて、エージェントのリストを作るために

globals [ turtle-list num-list] 

to setup 
    ca 
    reset-ticks 

    crt 3 

    set num-list [ 0 1 2 ] 
    set turtle-list map [ i -> turtle i ] num-list 
    print turtle-list  
end 

注リストが存在しないカメのためwho番号が含まれている場合、あなたはあなたのリストの中nobodyを取得すること。

これを気にする必要はありません。@NicolasPayetteが言うことをやってください。

次にあなたが*缶*簡単 `カメ-list`のためのあなたのagentsetを構築するために、` foreach`を使用します。 のforeach亀リストを[ トン - > セットは亀-agentset(カメセットturtle- agentsetトン) ] あなたの最終目標はagentsetであり、あなたがリストを必要としない場合は、手順をスキップすることができ、ちょうど直接agentsetを構築: セットアップ CAに をリセットし、ダニcrt 3 セットNUMリスト[0 1 2] セットカメ-agentsetの誰 のforeach NUMリスト[ N - > セットカメ-agentset(カメセットカメ-agentsetカメN) ] 印刷カメ、agentset 最後
+1

答えの最後の部分でやっているように、段階的にエージェントセットを構築することを強くお勧めします。エージェントセットへの追加は高価です。NetLogoは、1つのエージェントを追加するたびにエージェントセット全体を再構築する必要があります。しかし、リストに追加することは非常に安いので、エージェントセットを一度に1エージェント作成する必要がある場合は、リストを作成し、「turtle-set my-list」を使用してエージェントセットに変換する方が速いです。 –

+1

素晴らしい、ありがとう@ニコラス・ペイェット、私はあなたが 'タートルセット私のリスト'をすることができたか分からなかった。 –

+0

コメントの最初の部分(「最初にエージェントを含むようにリストを作成することをおすすめします」)は完全に正しいです。すべての問題は有効なカメを含むリストを作ることができないから来ている。タートルセットでさえそれほど役に立たない。とにかく私は同様の文字列からエージェントセットの正しい形を作ることができますか? :[エージェント0エージェント1]を["agent0" "agent1"]から –

関連する問題