2016-09-25 4 views
5

मान लीजिए कि हम करते हैं सरणीजम्मू: विशिष्ट मूल्य के साथ निर्देशांक

0 1 2 3 4 5 8 7 8 9 

के इंडेक्स मूल्य 8 है कि कर रहे हैं:

(i.10) ([#~8={) 0 1 2 3 4 5 8 7 8 9 
6 8 

इस परिणाम प्राप्त करने के लिए किसी भी छोटे रास्ता नहीं है? कुछ अंतर्निर्मित क्रिया हो सकती है।

लेकिन अधिक महत्वपूर्ण। उच्च आयामों के बारे में क्या?

4 1 
3 2 
2 3 

यह बहुत है: मान लीजिए कि हम मैट्रिक्स 5x4 है

1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 
4 5 6 7 8 

मैं पता लगाने के लिए क्या मूल्य के साथ निर्देशांक 6.
मैं परिणाम प्राप्त करना चाहते हैं चाहते हैं इस तरह के (तीन निर्देशांक देखते हैं) करते हैं बुनियादी कार्य और मुझे लगता है कि यह कुछ सरल समाधान मौजूद होना चाहिए।

तीन आयामों में समान है?

धन्यवाद

उत्तर

3

क्रिया indices I. लगभग काम करता है।

आप एक सरल सूची है, I. के उपयोग स्पष्ट है:

I. 8 = 0 1 2 3 4 5 8 7 8 9 
6 8 

उच्च आदेश मैट्रिक्स के लिए आप इसे antibase #: के साथ आधार $ matrix में निर्देशांक पाने के लिए जोड़ी कर सकते हैं। उदाहरण के लिए:

]a =: 4 5 $ 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 
1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 
4 5 6 7 8 

I. 6 = ,a 
9 13 17 

($a) #: 9 13 17 
1 4 
2 3 
3 2 

इसी प्रकार, आयाम के किसी भी संख्या के लिए: समतल (,), की तुलना (=), सूचकांक मिल (I.) और निर्देशांक परिवर्तित (($a)&#:):

]coords =: ($a) #: I. 5 = , a =: ? 5 6 7 $ 10 
0 0 2 
0 2 1 
0 2 3 
... 
(<"1 coords) { a 
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 

वैसे, अतिरिक्त प्रदर्शन के लिए आप I. x = yx ([email protected]:=) y के रूप में लिख सकते हैं। यह

सूचकांक जहां x च y

4

Sparse सरणी कार्यक्षमता ($.) का उपयोग करना एक बहुत तेज और दुबला समाधान भी कई आयामों के लिए काम करता है प्रदान करता है के लिए special code है।

]a=: 5 ]\ 1 + i. 8 
1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 
4 5 6 7 8 
    6 = a 
0 0 0 0 0 
0 0 0 0 1 
0 0 0 1 0 
0 0 1 0 0 
    4 $. $. 6 = a 
1 4 
2 3 
3 2 

मौन:

getCoords=: 4 $. $. 
    getCoords 6 = a ,: a 
0 1 4 
0 2 3 
0 3 2 
1 1 4 
1 2 3 
1 3 2 
+0

कि पहले कभी नहीं देखा। बहुत ही रोचक। '1e5 x 1e5' पूर्णांक मैट्रिक्स पर,' $ .' लगभग 3 गुना तेज है और 1/10 स्थान का उपयोग करता है। – Eelvex

संबंधित मुद्दे