J'ai un tableau Comment puis-je faire cela? P>
(Remarque: je m'en fiche si le tableau d'origine devient muté. Dans JavaScript, je ferais x code> en Lua. Je voudrais définir
tête = x [1] code> et
repos = code> le reste de la matrice, de sorte que
reste [1] = x [2] code>,
repos [2] = x [3] code>, etc. p>
tête = x.shift () code> et
x code> contiendrait le reste éléments.) p>
3 Réponses :
Remarque, pour une matrice de toute taille raisonnable, c'est une opération très lente; Essayez de reconsidérer pourquoi vous voulez faire cela ...
@daturnimator Vous voulez dire "Tableau de toute taille déraisonnable i> taille" B-)
Au lieu de reconsidérer la motivation pour cela, considérez plutôt peut-être à l'aide d'une structure de données autre qu'une matrice. Une liste liée (facile à créer en Lua) en fait une opération bon marché, au détriment de plus de stockage nécessaire pour chaque nœud.
normalement en Lua l'action de l'insertion d'un élément x dans une séquence ... p>
EG: S = {A, B, C, D, E, F} à S = {A, B, C, X, D, E, F} P>
... est beaucoup de temps parce que D doit être déplacé vers l'index 5, e à l'index 6, etc. p>
y a-t-il une autre séquence de la forme S où s [a] = b, S [B] = C, S [C] = D, S [D] = E et S [E] = F? De cette façon, tout ce que vous avez à faire est de type: p>
s [c] = x S [x] = d p>
et boom, x est après c et avant D en seulement deux opérations. p>
Récemment découvert que ce dont je parlais s'appelle une "liste liée".