2016-04-09 24 views
0

listesinde başvurulan listelerin listesi Listelerim var. Kinda böyle:NetLogo

set plist [(list patch-at 0 0 100) (list patch-at 20 20 70) ...] 

Yani ortaya çıkan liste çiftleri listesi "yama, sayı" olduğunu. Yapmam gereken şey, plistforeach'u yapmak ve bu listedeki her liste için, sayıyı azaltmak istiyorum, "git" işlevinde söyleyelim. Yani her kene, sayının 1 daha az olmasını istiyorum.

Bu numaraya ulaşmanın bir yolunu düşünemedim. Ben sahip bir kod, kaplumbağaları [] sormak Orada gitmek edilir:

foreach listp [ 
    set item 1 ??? item 1 ??? - 1 
    if item 1 ??? <= 0 [remove ??? listp] 
    ] 

???, bilmediğim listenin adıdır (iç içe geçmiş listeler). Açıkçası, yapmaya çalıştığım şey, 100 onaydan sonra düzeltme ekini listeden kaldırmasıdır.

Bu listelere başvuruda bulunmanın bir yolu var mı, yoksa bir şekilde listenin adını belirtmeden "set item 1" aramanın bir yolu var mı?

Şimdiden teşekkürler! :)

cevap

1
turtles-own [plist] 

to setup ;;create an initialize some turtles 
    ask n-of 10 patches [ 
    sprout 1 [ 
     set plist (list (list patch-at 0 0 100) (list patch-at 20 20 70)) 
    ] 
    ] 
end 

to go ;;update the `plist` of each turtles 
    ask turtles [ 
    set plist map [list first ? (last ? - 1)] plist 
    set plist filter [last ? > 0] plist 
    ] 
end 
+0

Teşekkürler, anahtar '?' bilmediğim sembol. Şimdi daha fazla mantıklı. –