2010-03-13 3 views
7

मुझे एरलांग में निर्देशांक का एक सेट उत्पन्न करने की आवश्यकता है। एक समन्वय, कहते हैं (एक्स, वाई) को देखते हुए मैं उत्पन्न करने के लिए की जरूरत है (एक्स 1, वाई-1), (एक्स -1, वाई), (एक्स -1, y + 1), (एक्स, वाई-1), (एक्स, वाई + 1), (एक्स + 1, वाई -1), (एक्स + 1, वाई), (एक्स + 1, वाई + 1)। मूल रूप से सभी आसपास के निर्देशांक मध्य समन्वय (x, y) से बाहर हैं। सभी नौ निर्देशांक उत्पन्न करने के लिए, मैं वर्तमान में यह करता हूं:एरलांग सूची समझ, दो सूचियों को पार करने और मूल्यों को छोड़कर

[{X,Y} || X<-lists:seq(X-1,X+1), Y<-lists:seq(Y-1,Y+1)] 

लेकिन यह (एक्स, वाई) समेत सभी मान उत्पन्न करता है। मैं सूची समझ में फ़िल्टर का उपयोग कर सूची से (एक्स, वाई) कैसे बाहर कर सकता हूं?

उत्तर

12
[{X,Y} || X <- lists:seq(X0-1,X0+1), 
      Y <- lists:seq(Y0-1,Y0+1), {X,Y} =/= {X0,Y0}]. 
1

-- [{X,Y}] जोड़ना शायद सबसे आसान बात होगी।

2

मुझे लगता है कि मापदंडों और उत्पन्न मूल्यों के बीच अंतर एक छोटे से मदद मिलेगी:

[{Xc,Yc} || Xc<-lists:seq(X-1,X+1), Yc<-lists:seq(Y-1,Y+1), Xc=/=X orelse Yc=/=Y] 

वरना

[{Xc,Yc} || Xc<-lists:seq(X-1,X+1), Yc<-lists:seq(Y-1,Y+1)] -- [{X,Y}] 
संबंधित मुद्दे