Ruby supporte les tableaux récursifs (c'est-à-dire les tableaux qui se contiennent eux-mêmes) :
a = []
# => []
a << a
# => [[...]]
a.first == a
# => true
C'est intrinsèquement cool, mais quel travail pouvez-vous faire avec ?
Ruby supporte les tableaux récursifs (c'est-à-dire les tableaux qui se contiennent eux-mêmes) :
a = []
# => []
a << a
# => [[...]]
a.first == a
# => true
C'est intrinsèquement cool, mais quel travail pouvez-vous faire avec ?
A graphe dirigé avec des arêtes indifférenciées pourrait avoir chaque sommet représenté simplement comme un tableau des sommets atteignables à partir de ce sommet. Si le graphe avait des cycles, on aurait un "tableau récursif", surtout si une arête pouvait revenir au même sommet.
Par exemple, ce graphique :
...pourrait être représenté en code comme :
nodes = { a:[], b:[], c:[], d:[] }
nodes[:a] << nodes[:a]
nodes[:a] << nodes[:b]
nodes[:b] << nodes[:a]
nodes[:b] << nodes[:c]
p nodes
#=> {:a=>[[[...], []], [...]], :b=>[[[...], [...]], []], :c=>[], :d=>[]}
Habituellement, la représentation de chaque sommet est plus "robuste" (par exemple, une instance de classe avec des propriétés pour le nom et le tableau des arêtes sortantes), mais il n'est pas impossible d'imaginer un cas où vous souhaitez une représentation très légère de vos données (pour de très grands graphes) et où vous devez donc utiliser une représentation minimale comme celle-ci.
Ruby supporte les tableaux récursifs
Pour moi, la question est de savoir pourquoi il devrait pas le soutenir ?
Un tableau est simplement une collection de références. Il devrait vérifier chaque élément et lancer une erreur si l'un d'eux fait référence à la collection elle-même, afin d'éviter la récursion ou de l'utiliser pour des graphiques comme l'exemple de Phrogz.
Je ne pense donc pas que ce soit une fonctionnalité, mais si ça l'était, la plupart des langages que je connais l'ont, même Java Il suffit d'utiliser des objets comme éléments d'un tableau.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.