2010-04-28 18 views
7

मैंने 2 डी सरणी घूर्णन पर अन्य पोस्ट को देखा है, लेकिन यह काफी नहीं है जो मैं चाहता हूं। मैं चाहता हूँ इससी #, घूर्णन 2 डी सरणी

int[,] original= new int[4,2] 
     { 
      {1,2}, 
      {5,6}, 
      {9,10}, 
      {13,14} 
     }; 

मैं इस तरह यह चालू करना चाहते हैं की तरह कुछ, rotatedArray = {{1,5,9,13} {2,6,10,14}}; मैं पंक्तियों के विपरीत, कॉलम द्वारा कुछ विश्लेषण करना चाहता हूं।

यह काम करता है, लेकिन क्या कोई आसान तरीका है ??

private static int[,] RotateArray(int[,] myArray) 
    { 
     int org_rows = myArray.GetLength(0); 
     int org_cols = myArray.GetLength(1); 

     int[,] myRotate = new int[org_cols, org_rows]; 

     for (int i = 0; i < org_rows; i++) 
     { 
      for(int j = 0; j < org_cols; j++) 
      { 
       myRotate[j, i] = myArray[i, j]; 
      } 
     } 

     return myRotate; 
    } 

क्या सी # में कॉलम के माध्यम से पुन: प्रयास करने का कोई आसान तरीका है?
बी

+0

यदि आप सरणियों का एक और तरीका का प्रयोग करेंगे बहुत सरल हो जाएगा ] [] int के बजाय [,] – Tigraine

उत्तर

5

यदि आप अपने सरणी को सरणी की सरणी बनाने के लिए बदलते हैं तो यह आसान हो जाता है। मैं इस पाया अगर आप इसे किसी पूर्णांक [] [] को बदलने के लिए:

int[][] original = new[] 
            { 
             new int[] {1, 2}, 
             new int[] {5, 6}, 
             new int[] {9, 10}, 
             new int[] {13, 14} 
            }; 

और घुमाने के विधि: पूर्णांक [:

private static int[][] Rotate(int[][] input) 
{ 
    int length = input[0].Length; 
    int[][] retVal = new int[length][]; 
    for(int x = 0; x < length; x++) 
    { 
     retVal[x] = input.Select(p => p[x]).ToArray(); 
    } 
    return retVal; 
} 
+0

धन्यवाद टिग्रेन, मुझे अपने कॉलिंग फ़ंक्शन को थोड़ा सा संशोधित करना होगा, लेकिन यह ठीक है – user327764

+0

मैं इसके साथ पूरी तरह से खुश नहीं हूं। लेकिन साथ [,] गणक दोनों आयामों के सभी तत्वों के माध्यम से जाता है, और यह थोड़ा कठिन बनाता है .. – Tigraine

+0

यह [] [] सरणी के साथ भी काम करता है, मुझे बस थोड़ा सा उपयोग करने के लिए मेरे कॉलिंग को संशोधित करना पड़ा [] [ ], लेकिन [,] हालांकि उपयोग करने के लिए बहुत आसान है। मैंने अभी इस पर कुछ गुस्सा किया है और जाहिर है, (मेरे आश्चर्य के लिए) [] [] [,] – user327764

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