<commit_before>package model.randomGraph ;

import java.util.Random ;
import model.node.visual.*;
import model.graphs.Graph;
import model.graphs.Node;

/**
 * Classe che permette di generare un grafo casuale.
 * @author melania
 *
 * @param <T> tipo che implementa comparable
 */
public class RandomGraph<T extends Comparable<T>> extends Graph<T>{
	
	Graph<CoordinateNode> G ;
	Integer nodesNumber ;
	
	double posX[] = {440.0, 293.0, 220.0, 220.0, 293.0, 440.0, 586.0, 659.0, 659.0, 586.0} ;
	double posY[] = {69.0, 106.0, 206.0, 274.0, 373.0, 411.0, 373.0, 274.0, 206.0, 106.0} ;
	

	/**
	 * Costruttore che genera un grafo casuale
	 */
	public RandomGraph() {
		this.G = new Graph<CoordinateNode>() ;	
		this.nodesNumber = 0 ;
		this.randomNodes();
		this.randomEdges();
	}
	
	/**
	 * Costruttore che genera un grafo casuale di n nodi(A SCELTA DELL'UTENTE)
     * MAX_n = 20 ;
     * * @param n numero di nodi.
     * */
	public RandomGraph(int n) {
		this.G = new Graph<CoordinateNode>() ;
		this.nodesNumber = 0 ;
		this.nNodes(n) ;
		this.randomEdges();
		
	}
	
	/**
	 * Ritorna il grafo creato.
	 * @return grafo creato.
	 */
	public Graph<CoordinateNode> getGraph() {
		return G;
	}
	
		
    /**
	 * Crea un numero casuale di nodi (MAX 10) etichettati con numeri interi da 0 a 10	
	 * Assumiamo che venga applicato ad un grafo di Interi
	 */
	public void randomNodes() {
		
		Random random = new Random() ;
		
		Integer i ;
		int n = 10 ;
		int m = random.nextInt(n) ;
		
		while (m <= 1) {
			m = random.nextInt(n) ;
		}
		
		double posX = this.posX[0] ;
		double posY = this.posY[0] ;
		
		if(m == 4) {
			
			posX = this.posX[2] ;
			posY = this.posY[2] ;
		}
		
		else if(m == 8) {
			
			posX = this.posX[1] ;
			posY = this.posY[1] ;
		}
		
		for (i=0;i<m;i++) {
			
			CoordinateNode coN = new CoordinateNode(i, posX, posY ) ;
			
			Node<CoordinateNode> x = new Node<CoordinateNode>(coN) ;
		
			this.G.insertNode(x);
			this.nodesNumber ++ ;
			
		}
		
	}
	
	/**
	 * Crea un numero fisso e stabilito dall'utente di nodi etichettati con numeri interi
	 * da 0 a n.
	 * MAX_n = 20.
	 * Assumiamo che venga applicato ad un grafo di Interi.
	 * @param n numero di nodi
	 * @return valore booleano ad indicare se è stato possibile generare i nodi
	 */
	public boolean nNodes(int n){
		
		Integer i ;
		<commit_msg>Risolto il bug sui Random Graph<commit_after>package model.randomGraph ;

import java.util.Random ;
import model.node.visual.*;
import model.graphs.Graph;
import model.graphs.Node;

/**
 * Classe che permette di generare un grafo casuale.
 * @author melania
 *
 * @param <T> tipo che implementa comparable
 */
public class RandomGraph<T extends Comparable<T>> extends Graph<T>{
	
	Graph<CoordinateNode> G ;
	Integer nodesNumber ;
	
	double posX[] = {440.0, 293.0, 220.0, 220.0, 293.0, 440.0, 586.0, 659.0, 659.0, 586.0} ;
	double posY[] = {69.0, 106.0, 206.0, 274.0, 373.0, 411.0, 373.0, 274.0, 206.0, 106.0} ;
	

	/**
	 * Costruttore che genera un grafo casuale
	 */
	public RandomGraph() {
		this.G = new Graph<CoordinateNode>() ;	
		this.nodesNumber = 0 ;
		this.randomNodes();
		this.randomEdges();
	}
	
	/**
	 * Costruttore che genera un grafo casuale di n nodi(A SCELTA DELL'UTENTE)
     * MAX_n = 20 ;
     * * @param n numero di nodi.
     * */
	public RandomGraph(int n) {
		this.G = new Graph<CoordinateNode>() ;
		this.nodesNumber = 0 ;
		this.nNodes(n) ;
		this.randomEdges();
		
	}
	
	/**
	 * Ritorna il grafo creato.
	 * @return grafo creato.
	 */
	public Graph<CoordinateNode> getGraph() {
		return G;
	}
	
		
    /**
	 * Crea un numero casuale di nodi (MAX 10) etichettati con numeri interi da 0 a 10	
	 * Assumiamo che venga applicato ad un grafo di Interi
	 */
	public void randomNodes() {
		
		Random random = new Random() ;
		
		Integer i ;
		int n = 10 ;
		int m = random.nextInt(n) ;
		
		while (m <= 1) {
			m = random.nextInt(n) ;
		}
		
		double posX = this.posX[0] ;
		double posY = this.posY[0] ;
		
		if(m == 4) {
			
			posX = this.posX[2] ;
			posY = this.posY[2] ;
		}
		
		else if(m == 8) {
			
			posX = this.posX[1] ;
			posY = this.posY[1] ;
		}
		
		for (i=0;i<m;i++) {
			
			CoordinateNode coN = new CoordinateNode(i, posX, posY ) ;
			
			Node<CoordinateNode> x = new Node<CoordinateNode>(coN) ;
		
			this.G.insertNode(x);
			this.nodesNumber ++ ;
			
			if (i != n-1 && i < 9) {		//aggiorno la posizione del prossimo nodo
				posX = this.posX[getDelta(i+1,n) + i + 1] ;
				posY = this.posY[getDelta(i+1,n) + i + 1] ;
			}
			
		}
		
	}
	
	/**
	 * Crea un numero fisso e stabilito dall'utente di nodi etichettati con numeri interi
	 * da 0 a n.
	 * MAX_n = 20.
	 * Assumiamo che venga applicato ad un grafo di Interi.
	 * @param n numero di nodi
	 * @return valore booleano ad indicare se è stato possibile generare i nodi
	 */
	public boolean nNodes(int n){
		
		Integer i ;
		
{'fraction_non_alphanumeric': 0.13542526837324526, 'fraction_numerical': 0.04376548307184145, 'mean_word_length': 2.6210762331838566, 'pattern_counts': {'":': 0, '<': 28, '<?xml version=': 0, '>': 23, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5700426', 'n_tokens_mistral': 2259, 'n_tokens_neox': 1857, 'n_words': 514}