मैं पूछना चाहता था कि क्या कुछ एल्गोरिदम तैयार है, जिसने मुझे ऐसा करने की अनुमति दी: मेरे पास एम एक्स एन तत्वों के साथ एक मैट्रिक्स एम (कोल) एक्स एन (पंक्ति) है। मैं इस तत्व को स्थिति देना चाहते केंद्र से शुरू करने और एक सर्पिल के रूप में घूर्णन, उदाहरण के लिए, एक मैट्रिक्स 3x3 के लिए मैं 9 तत्वों तो परिभाषित किया गया है:मैट्रिक्स और एल्गोरिदम "सर्पिल"
5 6 7
4 9 8
3 2 1
या ऊना मैट्रिक्स 4 x 3 मैं 12 तत्व के लिए, करना परिभाषित:
3 4
7 8
10 9
6 5
2 1
आदि मैं मूल रूप से MXN elemen के पूर्णांक के एक सरणी को परिभाषित समाधान कर लिया है:
8 9 10 1
7 12 11 2
6 5 4 3
या फिर, एक मैट्रिक्स 5x2 मैं 10 तत्वों तो परिभाषित किया गया है टीएस और मैन्युअल रूप से मूल्य लोड कर रहा है, लेकिन मेरे लिए जीनरल में स्वचालित रूप से एल्गोरिदम से बनाए गए मैट्रिक्स की तरह। धन्यवाद कि मुझे कुछ खोजने में कौन मदद कर सकता है, बहुत बहुत धन्यवाद।
अद्यतन
इस कोड, के बारे में मैं चाहता हूँ है, लेकिन डेल्फी में नहीं है exactely करते हैं; केवल मुझे केवल 1 से शुरू करना चाहिए और 0 से नहीं चाहिए। मेरे लिए महत्वपूर्ण यह है कि यह किसी भी मैट्रिक्स एम एक्स एन के लिए मान्य है। डेल्फी में अनुवाद करने में मेरी मदद कौन करता है?
(defun spiral (rows columns)
(do ((N (* rows columns))
(spiral (make-array (list rows columns) :initial-element nil))
(dx 1) (dy 0) (x 0) (y 0)
(i 0 (1+ i)))
((= i N) spiral)
(setf (aref spiral y x) i)
(let ((nx (+ x dx)) (ny (+ y dy)))
(cond
((and (< -1 nx columns)
(< -1 ny rows)
(null (aref spiral ny nx)))
(setf x nx
y ny))
(t (psetf dx (- dy)
dy dx)
(setf x (+ x dx)
y (+ y dy)))))))
> (pprint (spiral 6 6))
#2A ((0 1 2 3 4 5)
(19 20 21 22 23 6)
(18 31 32 33 24 7)
(17 30 35 34 25 8)
(16 29 28 27 26 9)
(15 14 13 12 11 10))
> (pprint (spiral 5 3))
#2A ((0 1 2)
(11 12 3)
(10 13 4)
(9 14 5)
(8 7 6))
फिर से बहुत धन्यवाद।
आपका एल्गोरिदम अभी तक मेरे विचार में अच्छी तरह परिभाषित नहीं है। मुझे उम्मीद है कि 5x2 मैट्रिक्स होना चाहिए ((6 7) (5 8) (4 9) (3 10) (2 1))। –
मैं डेविड के साथ हूँ। और 1 अलग-अलग स्थानों में क्यों शुरू होता है? हर बार एक ही कोने होना चाहिए। –
एकमात्र स्पष्ट बात यह है कि ऐसा लगता है कि यह घड़ी की दिशा में आगे बढ़ता है! क्या आप एल्गोरिदम का ठोस उपयोग बता सकते हैं? – menjaraz