Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    [js] blocca l'istruzione solo quando...

    Ho questo mio codice ...

    <!--
    function numeri() {
    scatola= new Array();
    for (x=1; x<=1000 ;x++) {
    function numeriinterni() {
    r1=Math.floor(Math.random() * 9);
    r2=Math.floor(Math.random() * 9);
    r3=Math.floor(Math.random() * 9);
    r4=Math.floor(Math.random() * 9);
    }

    numeriinterni();
    for (k=0;k<scatola.length;k++) {
    if (scatola[k] == (r1+"---"+r2+"---"+r3+"---"+r4)) {
    //alert ("doppione!");
    numeriinterni();
    break;

    }
    }

    document.write("<input type=button style='font-size:12' value="+r1+"><input type=button style='font-size:12' value="+r2+"><input type=button style='font-size:12' value="+r3+"><input type=button style='font-size:12' value="+r4+"><font color=red>"+x+"</font>
    ");

    scatola.push(r1+"---"+r2+"---"+r3+"---"+r4);

    }
    alert (scatola);
    }

    Vorrei modificare i punti in grassetto.. per ottenere qualcosa che soddisfi questa mia necessità:

    fermare lo script (in automatico) solo quando ha raggiunto l'ultima combinazione possibile non uguale alle altre generate precedentemente e immagazzinate nell'array scatola

    (nn m'importa se per calcolare... ci mette piu' di un gg cosa che nn credo)


    Per adesso lo script nn appena raggiunge un numero elevato di combinazioni (>1000) s'impalla perchè trova tutti doppioni ma nn si blocca... con la certezza richiesta

    Sperando di trovare la solution in uno di voi

    Un saluto festoso a tutti/e

    "Vero sapiente è colui che sa di non sapere" (Socrate)

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    in pratica vuoi bloccare il ciclo esterno non appena verificata la condizione nel ciclo interno?
    leggi qui l' esempio dell' outer loop
    ciao

  3. #3
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    nn proprio...

    Io vorrei bloccare del tutto lo script solo quando tutte le possibili combinazioni sono state trovate.

    Il ciclo interno deve si controllare se il valore è già presente nell'array ma non bloccare tutto alla prima occorrenza bensi' solo all'ultima..

    "Vero sapiente è colui che sa di non sapere" (Socrate)

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    personalmente farei diversamente il ciclo, cioe' finche' scatola non ha raggiunto la lunghezza massima (numero di combinazioni valide)

    prova... quasi sicuramente segnalera' che lo script sta rallentando il sistema
    codice:
    <script>
    var scatola= new Array(); 
    var n=9;
    var maxcomb=Math.pow(n,4);
    
    function numeriinterni() { 
    	r1=Math.floor(Math.random() * n); 
    	r2=Math.floor(Math.random() * n); 
    	r3=Math.floor(Math.random() * n); 
    	r4=Math.floor(Math.random() * n); 
    } 
    
    function numeri() {
    	while(scatola.length<maxcomb){ 
    		numeriinterni();
    		var trovato=false 
    		for (k=0;k<scatola.length;k++) { 
    			if(scatola[k] == (r1+"---"+r2+"---"+r3+"---"+r4)) { 
    				trovato=true;
    				break;
    			} 
    		} 
    
    		if(!trovato){
    			document.write("<input type=button style='font-size:12' value="+r1+"><input type=button style='font-size:12' value="+r2+"><input type=button style='font-size:12' value="+r3+"><input type=button style='font-size:12' value="+r4+"><font color=red>"+scatola.length+"</font>
    "); 
    			scatola.push(r1+"---"+r2+"---"+r3+"---"+r4); 
    		}
    	}
    }
    
    numeri() 
    </script>
    ciao

  5. #5
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    fa molto di +...

    Si blocca con la clessidra fino alla fine dei tempi

    Comque grazie del tentativo
    "Vero sapiente è colui che sa di non sapere" (Socrate)

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    se semplifichi lo script con 2 numeri random non si blocca e funziona

  7. #7
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    ma a me serve solo con...

    4 numeri (ciascuno dei quali varia da 0 a 9)

    A[0,9] B[0,9] C[0,9] D[0,9]



    "Vero sapiente è colui che sa di non sapere" (Socrate)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.