Comunidad de diseño web y desarrollo en internet online

Ayuda con ideas =(

Citar            
MensajeEscrito el 22 Mar 2010 04:55 am
Hola, estoy haciendo como un generador de letras aleatorio, pero que si quiere salir una letra que ya salio que no salga, que busque otra(esto es lo que todavia no puedo hacer), en fin en este proyectito ahora si me he esforzado mucho, desde las nueve de la noche hasta la una por 4 dias, no como en otros que a la media hora ya me rendi :I, pero bueno, no quiero que me resuelvan mi codigo, (porque quiero sentir como si yo lo hubiera hecho todo :I, aunque al preguntar, ya no =/), como lo dice el Asunto, pido haber si alguien puede darme una idea.

Código :

var letras:Array = new Array("a", "b", "c", "d", "e", "f");
var arr:Array = new Array();
var arr2:Array = new Array();
onMouseDown = function () {
   arr[0] = random(letras.length);
   for (i=0; i<letras.length-1; i++) {
      r = random(letras.length);
      arr.push(r);
      if (r != arr[i]) {
         arr2.push(r);
      }
      //segun yo, si el numero recien hecho r, no es igual a  
      //arr[i] que segun yo son todos los elementos
//se va a guardar en arr2(pero no works :I)
   }
};
onMouseUp = function () {
   for (i=0; i<letras.length; i++) {
      trace(letras[arr[i]]);
   }
   arr2 = [];
   arr = [];
};

No he hecho mucho porque ya escribi y borre de todo, todo lo que pensaba lo intentaba pero nada parece :I, ese codiguito es el mas cerca, sigo la creencia de que lo que dicen mis comentarios esta bien, pero no se que pueda estar mal =/. Les agradeceria mucho unas ideitas U_U
Porfa
Gracias

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 22 Mar 2010 07:31 am
Hola,
en lugar de elegir un elemento del array de letras e ir comprobando si ya lo habías elegido, lo que puedes hacer es:
1. Haces una copia del array de letras
2. Extraes aleatoriamente un elemento de ese array, pero lo extraes con pop, de modo que ya no formará parte del array y al repetir el proceso de extracción ya no se volverá a elegir ese elemento
3. Repites el proceso las veces que quieras

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 22 Mar 2010 07:33 pm
Hola isidoro :), gracias por contestar U_U, oye no supe como eliminar aleatoriamente con pop, segun como yo sabia pop solo eliminaba el final de cada array y me puse a buscar en caso de que se me hubiera pasado alguna trampilla ahi con el pop, pero no, incluso cuando estaba escribiendo esto se me vino una idea pero tampoco, no supe como hacerle, pense en pasar el pop de letras al array arr pero eso solo hacia algo asi como un reverse, mientras me bañaba estaba pensando en mi solucion, no es parecido a lo que me dijiste, pero me diste una idea, ademas de que necesito del buen codiguito que me pasaste hace poco

Código :

Array.prototype.borrar = function(obj:Number):Array  {
   return this.slice(0, obj).concat(this.slice(obj+1));
};

mira esto es lo que llevo

Código :

var letras:Array = new Array("a", "b", "c", "d", "e", "f");
var arr:Array = new Array();
var arr2:Array = new Array([]);
Array.prototype.borrar = function(obj:Number):Array  {
   return this.slice(0, obj).concat(this.slice(obj+1));
};
onMouseDown = function () {
   r = random(letras.length);
   //hace un numero entre 0 y 5
   letras = letras.borrar(r);
   trace(letras);
   //letras me va a mostrar a letras solo sin un elemento
};
onMouseUp = function () {
   letras = ["a", "b", "c", "d", "e", "f"];
};

Ahi lo que estoy haciendo es tan solo quitar una letra, como dicen mis comentarios, si hay muchas combinaciones pero no es lo ideal, lo que pense en el baño fue, "con cada letra que quite con "borrar" formo un array, y como lo que dijo el buen isidoro, esa letra se va a eliminar no la voy a poder usar otra vez"
es decir que tengo a,b,c,d,e,f, si uso borrar me quedaria por ejemplo a,b,c,d,f, el problema es este en ningun momento me dice a quien elimine, con tu codiguito se me hace que si podria hacerlo, que muestre a "obj", asi podria hacer una cosa asi

Código :

arr.push(obj)
trace(arr)//e

Pero, mientras me bañaba tantito despues, pense " :o como le puedo hacer? =("
Y ahi es mi problema, el return this se refiere al array que este usando pero como podre saber el valor de obj?
Gracias man o_0

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 22 Mar 2010 09:52 pm
Pues la verdad es que se me había olvidado poner que antes de hacer el pop al array tienes que cambiar el elemento seleccionado aleatoriamente por el último elemento, pero ya que lo dices, también puedes guardar el elemento aleatorio en tu array de soluciones, y usar lo del "slice + concat" para eliminarlo del array auxiliar.

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Mar 2010 07:06 am
Oh me rindo :I es mucha presion para el wen davo, me puedes decir como le harias tu?

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 23 Mar 2010 07:33 am

Código ActionScript :

var letras:Array = [ "a", "b", "c", "d", "e", "f" ];
var aux:Array = letras;
var extraidos:Array = [];

//Para extraer 2 letras:
for (var i:Number = 0; i < 2; i++)
{
   var rnd:Number = Math.floor(aux.length * Math.random());
   extraidos.push(aux[rnd]);
   aux = aux.slice(0, rnd).concat(aux.slice(rnd + 1));
}
trace(extraidos);

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Mar 2010 05:39 pm
:0!!!!!, esta weno :0, oye, pero como le hace para nunca poner el mismo numero?
Gracias :) :) :) :) :) :)

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 23 Mar 2010 06:18 pm
Sí que se puede repetir el mismo número aleatorio, pero al extraer el elemento que está en esa posición ese lugar estará ocupado por el elemento siguiente. Ejemplo:
El array inicial es [ "a", "b", "c", "d", "e", "f" ]
Se calcula un número aleatorio entre 0 y el tamaño del array (o sea 5).
Si por ejemplo sale el 2, al quitar ese elemento del array nos queda [ "a", "b", "d", "e", "f" ] (la primera extracción será "c")
Se vuelve a calcular otro número aleatorio, pero ahora el tamaño del array es 4 (es decir, estará entre 0 y 4)
Puede salir cualquier número, pero si da la casualidad de que vuelve a salir el 2, ahora el elemento que está en la posición 2 ya no es "c", sino "d"; con lo cual nuestro array será ahora [ "a", "b", "e", "f" ], y las extracciones serán [ "c", "d" ]

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Mar 2010 06:40 pm
Ohhh, eso lo habia visto ya, pero yo esperaba pushear el numero siempre y no la letra U_U, muchas gracias mi buen isidoro =) :)

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 23 Mar 2010 06:49 pm
Pues para hacer push de la posición en lugar de la letra, sólo tienes que llenar el array con las posiciones. El resto es igual:
var letras:Array = [ 0, 1, 2, 3, 4, 5 ];

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 24 Mar 2010 06:00 am
oh no, yo me referia a que cuando estaba moviendole yo siempre intentaba pushear numeros y no letras, :() gracias

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.