¡Google regalará tablets! Gastan más batería porque tienen una cámara y micrófono constantemente encendid@s y envía info a su sitio ¡lo cual servirá para ofrecerle mejores productos! Es imposible que ud no esté contento.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: NEBIRE en 21 Noviembre 2018, 02:23 AMJajajaa.
Me parece magnífico, que los políticos me puedan enviar propaganda... Siempre y cuando los ciudadanos podamos a su vez enviarles también mensajitos por teléfono (que seguro que les van a gustar tanto como a los ciudadanos su propaganda).
Escena 1
actions for fotograma 1
Char0 = -1;
Chars = 1;
function Concatenarytrace () {
Print = "";
Cursor = 0;
do {
Print = Print+eval("Char"+Cursor);
Cursor = Cursor+1;
} while (Cursor<Chars);
trace (Print);
}
actions for fotograma 2
Cursor = Chars-1;
actions for fotograma 3
if (eval("Char"+Cursor)<9) {
// Si el char es aumentable, aumenta.
set ("Char"+Cursor, eval("Char"+Cursor)+1);
Concatenarytrace();
gotoAndPlay (2);
}
actions for fotograma 4
// El char no es aumentable, ergo Se resetea.
set ("Char"+Cursor, 0);
if (0<Cursor) {
// Si Cursor puede bajar, baja.
Cursor = Cursor-1;
} else {
// Sino (el cursor no puede bajar), se agrega un char.
set ("Char"+Chars, 0);
Chars = Chars+1;
Concatenarytrace();
gotoAndPlay (2);
}
actions for fotograma 5
if (eval("Char"+Cursor)<9) {
// Si el char es aumentable, aumenta.
set ("Char"+Cursor, eval("Char"+Cursor)+1);
Concatenarytrace();
gotoAndPlay (2);
} else {
// Sino, se resetea y reinicia un proceso.
gotoAndPlay (4);
}
Yo con esfuerzo lo entendería, lo cual indica un problema ¿no? ¿por qué algo que hice me resulta difícil entenderlo?Escena 1
actions for fotograma 1
Char0 = -1;
Chars = 1;
Char0 marca el valor del caracter que esté 1ero. En el output ves por ejemplo 12, lo cual está formado por Char0 valiendo 1 y Char1 valiendo 2. 12. Por ahora Char1 no existe. Char0 inicia como -1 pero por la forma conque está programado se aumentará antes de mostrarse, por lo que en el output el 1er valor que se muestre será 0. function Concatenarytrace () {
Print = "";
Cursor = 0;
do {
Print = Print+eval("Char"+Cursor);
Cursor = Cursor+1;
} while (Cursor<Chars);
trace (Print);
}
Esta función inicia Print como algo vacío y Cursor como 0.actions for fotograma 2
Cursor = Chars-1;
Cursor se pone en la última posición de la mezcla. actions for fotograma 3
if (eval("Char"+Cursor)<9) {
// Si el char es aumentable, aumenta.
set ("Char"+Cursor, eval("Char"+Cursor)+1);
Concatenarytrace();
gotoAndPlay (2);
}
Esto tiene un comentario, así que... Igual bueno, se suma 1 al último caracter, si su valor es menor que 9. Luego se concatena en Print y se muestra en pantalla. Tienes que entender que los caracteres no están en una misma variable, salvo cuando se unen en Print, pero piensa que si fuesen palabras en una misma variable sería complicado modificarlas del modo que lo estoy haciendo. Supongo que usarías un array, pero como no pude guardarlos y cargarlos en un archivo, hace mucho, decidí no usarlos. Y nunca me gustaron. Acá no preciso archivos externos, pero por costumbre lo hago así. O sea, supongo que tú lo harías algo así: actions for fotograma 4
// El char no es aumentable, ergo Se resetea.
set ("Char"+Cursor, 0);
if (0<Cursor) {
// Si Cursor puede bajar, baja.
Cursor = Cursor-1;
} else {
// Sino (el cursor no puede bajar), se agrega un char.
set ("Char"+Chars, 0);
Chars = Chars+1;
Concatenarytrace();
gotoAndPlay (2);
}
Si le aumentamos 1 a 9, queda en 0, eso es resetearse. Luego de eso, vemos si hay más números hacia atrás, hacia la izquierda. Si los hay, movemos el cursor hacia él. Tienes que imaginarte que las variables estuvieran una al lado de la otra, como si formaran un número. actions for fotograma 5
if (eval("Char"+Cursor)<9) {
// Si el char es aumentable, aumenta.
set ("Char"+Cursor, eval("Char"+Cursor)+1);
Concatenarytrace();
gotoAndPlay (2);
} else {
// Sino, se resetea y reinicia un proceso.
gotoAndPlay (4);
}
Esto es muy similar a lo del frame 3. El tema es que generalmente los números finales son aumentables, por lo que pensé que todo quedaría más simple si pusiera el caso más simple al inicio, limpio, aunque en cuanto a eficiencia no sé si es mejor así (no carga tantas veces un else innecesario, pero el code queda más largo).Cita de: NEBIRE en 16 Noviembre 2018, 14:39 PMmmm. No... explícate con palabras, no esperes que nadie perda su tiempo mirando un chorro de líneas para intentar deducir-dilucidar que orden es ése.Bueno, más correcto hubiera sido decir que la lista que quiero generar está compuesta de 2 sublistas que se influyen entre sí, pero me pareció mejor explicar 1ero una de ellas, lo cual es una simplificación de la lista en sí.
Citarusa números, letras, no palabras... que se pueda entender de un vistazo.Vale, se entiende más como dices, pero cuando ponen ejemplos de combinatoria suelen nombrar colores y no creo que te quejes de eso. No debería ser tanto problema que en vez de colores sean unas palabras. Y dije que eran 6, así que no es que hubiera alguna que apareciera nuevo por ahí, ni son tantas como para que sea tan complicado.
Citarbien explicado bastan dos frases para describirloBueno xD si llegas a entenderlo hazme el favor de describirlo como dices xD
Cita de: antopixel en 16 Noviembre 2018, 16:24 PMSiempre tengo líos con eso, y eso que antes de preguntar googlé. En mi caso se admite repetición e importa el orden.
Recuerda:
Combinacion = No importa el orden de los elementos, no admite repeticion.
Permutacion = Importa el orden, no admite repeticion.
Escena 1
actions for fotograma 1
// Ítems.
Item1 = "WispG";
Item2 = "ShadeG";
Item3 = "DryadG";
Item4 = "AuraG";
Item5 = "SalaG";
Item6 = "GnomeG";
// Parte 1 del experimento de largo 1.
L1P1 = 0;
// Último experimento de largo 1 que se hará.
LastL1 = "GnomeG ";
// Último ítem usado.
RecentItem = 1;
// Relativo al largo de los experimentos...
// ...del método clásico.
ClasicMinL = 1;
ClasicActualL = 1;
ClasicMaxL = 1;
ClasicMaxLReached = 1;
Info = "";
function Concatenarytrace () {
// Concatena las partes de los experimentos.
Print = "";
Cursor = 0;
do {
Cursor = Cursor+1;
Print = Print+eval("Item"+eval("L"+ClasicActualL+"P"+Cursor))+" ";
} while (Cursor<ClasicActualL);
trace (Print);
Info = "Func dice exp: "+Print+"\n"+Info;
}
actions for fotograma 2
// Cursor indicará la parte última de un experimento.
Cursor = ClasicActualL;
Info = "F2: Cursor está en la última P de un exp, "+ClasicActualL+"\n"+Info;
actions for fotograma 3
if (eval("L"+ClasicActualL+"P"+Cursor)<6) {
// Si el char es aumentable, aumenta.
set ("L"+ClasicActualL+"P"+Cursor, eval("L"+ClasicActualL+"P"+Cursor)+1);
Concatenarytrace();
Info = "F3: Exp del método clásico creado fácil: "+Print+"\n"+Info;
gotoAndPlay (6);
}
actions for fotograma 4
// El char no es aumentable, ergo se resetea.
set ("L"+ClasicActualL+"P"+Cursor, 1);
if (1<Cursor) {
// Si Cursor puede bajar, baja.
Cursor = Cursor-1;
} else {
// Sino, se muestra el reseteado.
Concatenarytrace();
gotoAndPlay (6);
}
actions for fotograma 5
if (eval("L"+ClasicActualL+"P"+Cursor)<6) {
// Si el char es aumentable, aumenta.
set ("L"+ClasicActualL+"P"+Cursor, eval("L"+ClasicActualL+"P"+Cursor)+1);
Concatenarytrace();
gotoAndPlay (6);
} else {
// Sino, se resetea y reinicia un proceso.
gotoAndPlay (4);
}
actions for fotograma 6
// Esto es aftertrace de clasic.
if (Print == eval("LastL"+ClasicActualL)) {
// Si el experimento mostrado es igual al grabado como último...
// ...no se hacen más experimentos con ese largo.
Info = "F6: Exps de largo "+ClasicMinL+" completados.\n"+Info;
ClasicMinL = ClasicMinL+1;
}
if (CreativeL<=ClasicActualL && ClasicMaxL-1<=ClasicActualL) {
// Si el largo del último experimento del método creativo...
// ...es menor o igual al largo de este experimento clásico...
// ...y ese es igual o mayor al máximo-1 que puede ser...
// ..., Recentitem cambia.
RecentItem = eval("L"+ClasicActualL+"P"+ClasicActualL);
Info = "F6: RecentItem cambiado a "+RecentItem+"\n"+Info;
}
if (ClasicActualL<ClasicMaxL) {
// Si el largo es aumentable, aumenta.
ClasicActualL = ClasicActualL+1;
Info = "F6: El siguiente exp de clasic será de Largo "+ClasicActualL+"\n"+Info;
} else {
// Sino, quedará al mínimo pero el máximo aumenta.
ClasicMaxLReached = ClasicMaxL;
Info = "F6: Clasic alcanzó su máximo L: "+ClasicMaxL+"\n"+Info;
if (ClasicMaxL<7) {
// Ese if es sólo para pruebas del code.
ClasicMaxL = ClasicMaxL+1;
Info = "F6: Clasic aumentó su máximo L a "+ClasicMaxL+"\n"+Info;
if (CreativeL<ClasicMaxL) {
// Si el método creativo no creó un experimento...
// ...del largo alcanzado por el método clásico...
// ..., crearlo (no se usará aún) y marcar que será...
// ...el último experimento de ese largo.
Info = "F6: Clasic llegó a un L mayor que creative: "+ClasicMaxL+" > "+CreativeL+"\n"+Info;
set ("LastL"+ClasicMaxL, "");
Cursor = 1;
// Cálculo del ítem más recientemente usado.
NextRecentItem = eval("L"+ClasicActualL+"P"+ClasicActualL);
do {
NextRecentItem = NextRecentItem+1;
if (6<NextRecentItem) {
// Si resulta un ítem inexistente, arreglarlo.
NextRecentItem = NextRecentItem-((Math.floor(NextRecentItem/6))*6);
}
set ("L"+ClasicMaxL+"P"+Cursor, NextRecentItem);
set ("LastL"+ClasicMaxL, eval("LastL"+ClasicMaxL)+eval("Item"+NextRecentItem)+" ");
Cursor = Cursor+1;
} while (Cursor<ClasicMaxL);
set ("L"+ClasicMaxL+"P"+Cursor, NextRecentItem);
set ("LastL"+ClasicMaxL, eval("LastL"+ClasicMaxL)+eval("Item"+NextRecentItem)+" ");
}
}
ClasicActualL = ClasicMinL;
Info = "F6: El siguiente exp de clasic será de Largo "+ClasicMinL+"\n"+Info;
Info = "F6: Está listo el exp de máx L: "+eval("LastL"+ClasicMaxL)+"\n"+Info;
}
gotoAndPlay (2);
O sea, este programa produce la 2nda lista. Sería más correcto que produzca la 3era, pero lo que pasa es que este programa es parte de otro y no viene mucho al caso ver qué debería modificar para que produzca la 3era. Ya fue. Pero si ven algo que pueda simplificarse no duden en decirlo.Escena 1
actions for fotograma 1
// Ítems.
Item1 = "WispG";
Item2 = "ShadeG";
Item3 = "DryadG";
Item4 = "AuraG";
Item5 = "SalaG";
Item6 = "GnomeG";
Item7 = "JinnG";
Item8 = "UndineG";
Item9 = "WispS";
Item10 = "ShadeS";
Item11 = "DryadS";
Item12 = "AuraS";
Item13 = "SalaS";
Item14 = "GnomeS";
Item15 = "JinnS";
Item16 = "UndineS";
Item17 = "FireC";
Item18 = "EarthC";
Item19 = "WindC";
Item20 = "WaterC";
Item21 = "SunC";
Item22 = "MoonC";
Item23 = "GlowC";
Item24 = "ChaosC";
Item25 = "RoundS";
Item26 = "OblongS";
Item27 = "CroakedS";
Item28 = "BigS";
Item29 = "SmallS";
Item30 = "LongS";
Item31 = "FlatS";
Item32 = "SpinyS";
Item33 = "Bellgrapes";
Item34 = "DiceB";
Item35 = "LShoes";
Item36 = "PShoes";
Item37 = "Squalphin";
Item38 = "Citrisquid";
Item39 = "Springanana";
Item40 = "PeachP";
Item41 = "Apricat";
Item42 = "Whalamata";
Item43 = "POclock";
Item44 = "FishyF";
Item45 = "Boarmelon";
Item46 = "Rhinoloupe";
Item47 = "Orcaplant";
Item48 = "Garlicrown";
Item49 = "HoneyO";
Item50 = "SMoai";
Item51 = "SCarrot";
Item52 = "Conchurnip";
Item53 = "CornF";
Item54 = "Cabadilllo";
Item55 = "Needletuce";
Item56 = "CherryB";
Item57 = "MPotato";
Item58 = "Lilipods";
Item59 = "Bumpkin";
Item60 = "HearhM";
Item61 = "SpadeB";
Item62 = "Mushroom";
Item63 = "AnimalM";
Item64 = "BugM";
Item65 = "LizardM";
Item66 = "FishM";
Item67 = "BirdM";
Item68 = "MorphM";
Item69 = "DemonM";
Item70 = "DragonS";
Item71 = "OddM";
Item72 = "MagicM";
Item73 = "RottenM";
Item74 = "SharpC";
Item75 = "PoisonC";
Item76 = "Scisors";
Item77 = "HealingC";
Item78 = "ZombieC";
Item79 = "VampireF";
Item80 = "LittleE";
Item81 = "SleeptyE";
Item82 = "SillyE";
Item83 = "DangerousE";
Item84 = "AngryE";
Item85 = "BlankE";
Item86 = "CreepyE";
Item87 = "WickedE";
Item88 = "AngelF";
Item89 = "RavenF";
Item90 = "CFeather";
Item91 = "MothW";
Item92 = "FlamingQ";
Item93 = "WhiteF";
Item94 = "AromaO";
Item95 = "DBlood";
Item96 = "Acid";
Item97 = "HolyW";
Item98 = "Ether";
Item99 = "Mercury";
Item100 = "StinkyB";
Item101 = "GhostH";
Item102 = "DBreath";
Item103 = "VirginS";
Item104 = "Electr";
Item105 = "Moss";
Item106 = "EarW";
Item107 = "BBat";
Item108 = "Sulpher";
Item109 = "PoisonP";
Item110 = "SleepP";
Item111 = "KnockD";
Item112 = "Rust";
Item113 = "GraveD";
Item114 = "Ash";
Item115 = "Hairball";
Item116 = "Needle";
Item117 = "Mirror";
Item118 = "WadW";
Item119 = "MessyS";
Item120 = "GreenballB";
Item121 = "TakoB";
// Parte 1 del experimento de largo 1.
L1P1 = 0;
// Último experimento de largo 1 que se hará.
LastL1 = "TakoB ";
// Último ítem usado.
RecentItem = 1;
// Relativo al largo de los experimentos...
// ...del método clásico.
ClasicMinL = 1;
ClasicActualL = 1;
ClasicMaxL = 1;
ClasicMaxLReached = 1;
// Largo del método creativo.
CreativeL = 1;
// Experimentos antes de hacer uno del método creativo.
TimeforCreative = 1;
// Valor de TimeforCreative cuando debe recargarse.
ChargedTimeforCreative = 1;
// Mayor largo alcanzado por cualquier método.
AnyMaxL = 1;
Info = "";
function Concatenarytrace () {
// Concatena las partes de los experimentos.
Print = "";
Cursor = 0;
do {
Cursor = Cursor+1;
Print = Print+eval("Item"+eval("L"+ClasicActualL+"P"+Cursor))+" ";
} while (Cursor<ClasicActualL);
trace (Print);
Info = "Func dice exp: "+Print+"\n"+Info;
}
actions for fotograma 2
// Cursor indicará la parte última de un experimento.
Cursor = ClasicActualL;
Info = "F2: Cursor está en la última P de un exp, "+ClasicActualL+"\n"+Info;
actions for fotograma 3
if (eval("L"+ClasicActualL+"P"+Cursor)<6) {
// Si el char es aumentable, aumenta.
set ("L"+ClasicActualL+"P"+Cursor, eval("L"+ClasicActualL+"P"+Cursor)+1);
Concatenarytrace();
Info = "F3: Exp del método clásico creado fácil: "+Print+"\n"+Info;
gotoAndPlay (6);
}
actions for fotograma 4
// El char no es aumentable, ergo se resetea.
set ("L"+ClasicActualL+"P"+Cursor, 1);
if (1<Cursor) {
// Si Cursor puede bajar, baja.
Cursor = Cursor-1;
} else {
// Sino, se muestra el reseteado.
Concatenarytrace();
gotoAndPlay (6);
}
actions for fotograma 5
if (eval("L"+ClasicActualL+"P"+Cursor)<6) {
// Si el char es aumentable, aumenta.
set ("L"+ClasicActualL+"P"+Cursor, eval("L"+ClasicActualL+"P"+Cursor)+1);
Concatenarytrace();
gotoAndPlay (6);
} else {
// Sino, se resetea y reinicia un proceso.
gotoAndPlay (4);
}
actions for fotograma 6
// Esto es aftertrace de clasic.
if (Print == eval("LastL"+ClasicActualL)) {
// Si el experimento mostrado es igual al grabado como último...
// ...no se hacen más experimentos con ese largo.
Info = "F6: Exps de largo "+ClasicMinL+" completados.\n"+Info;
ClasicMinL = ClasicMinL+1;
}
if (CreativeL<=ClasicActualL && ClasicMaxL-1<=ClasicActualL) {
// Si el largo del último experimento del método creativo...
// ...es menor o igual al largo de este experimento clásico...
// ...y ese es igual o mayor al máximo-1 que puede ser...
// ..., Recentitem cambia.
RecentItem = eval("L"+ClasicActualL+"P"+ClasicActualL);
Info = "F6: RecentItem cambiado a "+RecentItem+"\n"+Info;
}
if (ClasicActualL<ClasicMaxL) {
// Si el largo es aumentable, aumenta.
ClasicActualL = ClasicActualL+1;
Info = "F6: El siguiente exp de clasic será de Largo "+ClasicActualL+"\n"+Info;
} else {
// Sino, quedará al mínimo pero el máximo aumenta.
ClasicMaxLReached = ClasicMaxL;
Info = "F6: Clasic alcanzó su máximo L: "+ClasicMaxL+"\n"+Info;
if (ClasicMaxL<7) {
// Ese if es sólo para pruebas del code.
ClasicMaxL = ClasicMaxL+1;
Info = "F6: Clasic aumentó su máximo L a "+ClasicMaxL+"\n"+Info;
if (CreativeL<ClasicMaxL) {
// Si el método creativo no creó un experimento...
// ...del largo alcanzado por el método clásico...
// ..., crearlo (no se usará aún) y marcar que será...
// ...el último experimento de ese largo.
Info = "F6: Clasic llegó a un L mayor que creative: "+ClasicMaxL+" > "+CreativeL+"\n"+Info;
set ("LastL"+ClasicMaxL, "");
Cursor = 1;
// Cálculo del ítem más recientemente usado.
NextRecentItem = eval("L"+ClasicActualL+"P"+ClasicActualL);
do {
NextRecentItem = NextRecentItem+1;
if (6<NextRecentItem) {
// Si resulta un ítem inexistente, arreglarlo.
NextRecentItem = NextRecentItem-((Math.floor(NextRecentItem/6))*6);
}
set ("L"+ClasicMaxL+"P"+Cursor, NextRecentItem);
set ("LastL"+ClasicMaxL, eval("LastL"+ClasicMaxL)+eval("Item"+NextRecentItem)+" ");
Cursor = Cursor+1;
} while (Cursor<ClasicMaxL);
set ("L"+ClasicMaxL+"P"+Cursor, NextRecentItem);
set ("LastL"+ClasicMaxL, eval("LastL"+ClasicMaxL)+eval("Item"+NextRecentItem)+" ");
}
}
ClasicActualL = ClasicMinL;
Info = "F6: El siguiente exp de clasic será de Largo "+ClasicMinL+"\n"+Info;
Info = "F6: Está listo el exp de máx L: "+eval("LastL"+ClasicMaxL)+"\n"+Info;
}
actions for fotograma 7
TimeforCreative = TimeforCreative-1;
if (TimeforCreative<=0) {
// Elección creativa.
if (CreativeL<7) {
// Ese if es sólo para pruebas del code.
CreativeL = CreativeL+1;
if (CreativeL<ClasicMaxLReached) {
// Si el método creativo no creó un...
// ...experimento de largo mayor al...
// ...del método clásico, aumentarlo.
CreativeL = ClasicMaxLReached+1;
}
Info = "F7: Elección creativa de largo "+CreativeL+"\n"+Info;
set ("LastL"+CreativeL, "");
Cursor = 1;
Print = "";
do {
RecentItem = RecentItem+1;
if (6<RecentItem) {
// Si resulta un ítem inexistente, arreglarlo.
RecentItem = RecentItem-((Math.floor(RecentItem/6))*6);
}
set ("L"+CreativeL+"P"+Cursor, RecentItem);
set ("LastL"+CreativeL, eval("LastL"+CreativeL)+eval("Item"+RecentItem)+" ");
Cursor = Cursor+1;
} while (Cursor<CreativeL);
Print = eval("LastL"+CreativeL);
set ("LastL"+CreativeL, eval("LastL"+CreativeL)+eval("Item"+RecentItem)+" ");
Info = "F7: Last creado: "+eval("LastL"+CreativeL)+"\n"+Info;
RecentItem = RecentItem+1;
if (6<RecentItem) {
// Si resulta un ítem inexistente, arreglarlo.
RecentItem = RecentItem-((Math.floor(RecentItem/6))*6);
}
set ("L"+CreativeL+"P"+Cursor, RecentItem);
Print = Print+eval("Item"+RecentItem)+" ";
trace ("Creativo:\t"+Print);
Info = "F7: Método creativo creó exp "+Print+"\n"+Info;
Info = "F7: RecentItem es "+RecentItem+".\n"+Info;
} else {
gotoAndPlay (2);
Info = "F7: Método creativo alcanzó el máximo.\n"+Info;
}
} else {
Info = "F7: Para la elección creativa falta "+TimeforCreative+"\n"+Info;
gotoAndPlay (2);
}
actions for fotograma 8
stop ();
actions for Símbolo 1
on (release, keyPress "<Left>") {
ChargedTimeforCreative = 1;
TimeforCreative = ChargedTimeforCreative;
gotoAndPlay (2);
}
actions for Símbolo 2
on (release, keyPress "<Right>") {
ChargedTimeforCreative = ChargedTimeforCreative+1;
TimeforCreative = ChargedTimeforCreative;
gotoAndPlay (2);
}
Aunque son más de 100 ítems, lo limité a 6 para ver mejor que el "reset" (ver abajo) funcione bien. Parecido en cuanto al largo, está limitado a 7. En el frame 8 hay un par de botones, nombrados en el código al final como Símbolo 1 y 2. El programa pide que en el juego se pruebe el ítem 1. Luego el 2 y 3. Luego pregunta si eso fue mejor que lo anterior (para eso los botones). O sea, intercala 2 métodos. A uno le llamo Clasic y es: if (Print == eval("LastL"+ClasicActualL)) {
// Si el experimento mostrado es igual al grabado como último...
// ...no se hacen más experimentos con ese largo.
Info = "F6: Exps de largo "+ClasicMinL+" completados.\n"+Info;
ClasicMinL = ClasicMinL+1;
}
Por eso repitió "WispG". Sinceramente, no sé cuántos errores puede haber, y el método no es perfecto (por ejemplo en