Find Cycle in Formula

Tempo fa per lavoro ho dovuto creare una procedura che trovasse un ciclo/loop all’interno di una serie di formule. Qualcosa che Excel risolve in maniera abbastanza semplice. In C# creare una struttura dati (albero o lista linkata) è altrettanto semplice ma volevo anche avere un esempio in una pagina web e quindi perchè non usare il caro vecchio JavaScript nativo?

Update: ho trovato una libreria/servizio che genera grafi(ci) a partire da una querystring: Gravizo 

http://www.gravizo.com/svg? digraph G {a -> b -> c; a -> c -> d -> a; }

 

Qua sotto invece una immagine statica.

L’algoritmo di base era su StackOverflow

Find Cycle in Formula

In questa prima versione controllo solo che l’input sia corretto, il numero di formule è limitato e probabilmente è ancora presente qualche errore nel parsing dei valori. Ma funziona e quindi riconosce un ciclo banale come:

Ma anche qualcosa del tipo