0
votes

Tournez la matrice 1D en tableau 2D à Swift

Si j'ai un tableau unidimensionnel:

oneedimarray = [1,2,3,4,5,6,7,8,9]

et j'ai déjà un tableau à deux dimensions 3x3 avec la bonne quantité de créneaux à employer pour adapter les chiffres

Twodimarray = [[0,0,0], [0,0,0], [0,0,0]]

... Comment puis-je correspondre aux nombres Onedimarray dans le Twodimarray, comme:

[[1,2,3], [4,5,6], [7,8,9]]

?

Je sais que je peux le faire avec un couple de boucles imbriquées, mais y a-t-il un moyen plus simple et fonctionnel de le faire?


3 commentaires

(Pas familier avec Swift) Vous devriez pouvoir faire un Réduire le fonctionnement ou même un algorithme récursif. Je ne sais pas quel est le meilleur outil Swift pour ceux-ci. Si vous connaissez le nombre exact de machines à sous et qu'ils suivent un motif, vous pouvez dériver des emplacements mathématiquement et le faire dans une boucle droite: theedimarray [i / 3] [i% 3] = onedimarray [i] (où / effectue une division entière).


Pourquoi appelez-vous un tableau 2 dimensionnel theedimarray ?


Bon point @martinr - Mise à jour


4 Réponses :


8
votes

Voici une façon de le faire. Faites un itérateur de votre réseau unidimensionnel, puis utilisez mappe code> et compactmap code> avec .nsext () code> pour remplacer les valeurs du Twodimarray CODE> Pour créer le Newarray: XXX PRE>

Sortie forte> P>

[["a"], ["b", "c"], ["d", "e", "f"], ["g", "h", "i", "j"]]


0 commentaires

4
votes

Vous pouvez boucler sur l'index et la valeur en utilisant énuméré , puis calculez la bonne postion en utilisant% et / xxx


0 commentaires

2
votes
var index = 0
twoDimArray.indices.forEach { (outerInd) in
    twoDimArray[outerInd].indices.forEach { (innerInd) in
        twoDimArray[outerInd][innerInd] = oneDimArray[index]
        index += 1
    }
}

0 commentaires

0
votes
for i in twoDimArray.indices {
    for j in twoDimArray[i].indices {
        twoDimArray[i][j] = oneDimArray.removeFirst();
    }
}

1 commentaires

Voir " Expliquer des réponses entièrement basées sur un code ". Bien que cela puisse être techniquement correct, cela n'explique pas pourquoi il résout le problème ou devrait être la réponse sélectionnée. Nous devrions éduquer en plus d'aider à résoudre le problème.