나는 (netlogo에서) 무언가를 시도하고 있지만 작동하지 않습니다. 숫자 목록에서 위치 값을 원합니다. 그리고 이름 목록에서 이름을 검색하기 위해 나오는 번호를 사용하고 싶습니다.
따라서 [ "chicken" "duck" "monkey" "dog"] 목록에 [1 2 3 4] 같은 목록이 있으면 내 번호 2가 "duck"과 일치하기를 원합니다.
지금까지 내 zq는 숫자 목록이고 사용 된 전략은 이름 목록입니다.
let m precision (max zq) 1
let l position m zq
let p (position l zq) usedstrategies
그러나 내가 이것을 시도하면 결과는 거짓이 될 것입니다. 왜냐하면 나는 사용 된 전략의 일부가 아니기 때문입니다.
아이디어?
Jen의 솔루션은 완벽하지만 table
확장 기능에 대한 좋은 사용 사례가 될 수도 있다고 생각합니다 . 다음은 그 예입니다.
extensions [table]
to demo
let usedstrategies ["chicken" "duck" "monkey" "dog"]
let zq [5 6 7 8]
let strategies table:from-list (map list zq usedstrategies)
; get item corresponding with number 7:
print table:get strategies 7
end
여기에서 "테이블"은 키 집합이 값과 연결된 데이터 구조입니다. 여기서 당신의 숫자는 열쇠이고 전략은 가치입니다.
테이블에 키가없는 항목 (예 table:get strategies 9
:)을 얻으려고하면 다음 오류가 발생합니다.
확장 예외 : 테이블에 9에 대한 값이 없습니다.
코드 작동 방식에 대한 자세한 내용은 다음과 같습니다.
테이블을 구성하기 위해 우리 table:from-list
는 목록 목록을 입력으로 받아 각 하위 목록의 첫 번째 항목이 키로 사용되고 두 번째 항목이 값으로 사용되는 테이블을 제공 하는 리포터를 사용합니다.
목록 목록을 구성하기 위해 map
기본 형식 을 사용합니다 . 이 부분은 이해하기 좀 더 까다 롭습니다. map
원시 입력 요구 두 종류의 하나 개 이상의리스트, 리포터는이 목록의 요소에 적용한다. 기자가 먼저 나오고 전체 표현식이 괄호 안에 있어야합니다.
(map list zq usedstrategies)
이 표현식은 두 목록을 함께 "압축"합니다.의 첫 번째 요소 zq
와의 첫 번째 요소 usedstrategies
를 가져 list
와서이 두 요소로 목록을 구성하고 그 결과를 새 목록에 추가하는 리포터 에게 전달합니다 . 그런 다음의 두 번째 요소 zq
와의 두 번째 요소를 가져 와서 usedstrategies
다음과 같은 목록을 얻을 때까지 동일한 작업을 수행합니다.
[[5 "chicken"] [6 "duck"] [7 "monkey"] [8 "dog"]]
압축 표현식도 다음과 같이 작성할 수 있습니다.
(map [ [a b] -> list a b ] zq usedstrategies)
...하지만 그것은 그것을하기위한 더 많은 방법입니다. list
자체 기자는 우리가 원하는 것을 이미; 같은 일을하는 별도의 익명 기자를 구성 할 필요가 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다