|
211
|
Programación / Programación General / Re: ¿Cómo aprender a hacer programas que resuelvan dudas?
|
en: 16 Diciembre 2024, 02:32 am
|
Estoy retomando esto. La duda más simple, digamos, la de decir un número mayor a otro X, conocido, tiene estas características: - Sólo tiene 1 variable, X. - La variable es de tipo número positivo entero. - El candidato (el valor que se prueba como posible solución) no tiene partes, es sólo 1 variable de tipo número positivo entero. - Sólo tiene 1 condición a cumplir. - La condición es de tipo "candidato", "símbolo comparador", "valor". El candidato es el valor que se prueba como posible solución. - Se puede resolver mediante 1 acción. Pueden nombrarse más, pero no tiene mucho sentido hacerlo, me parece. ¿Cuales serían las siguientes dudas, un poquito más complicadas? Si agregamos más variables como X, es decir, si por ejemplo hay varios números a superar, eso implica que la condición a cumplir se complicará ¿verdad? Por eso por ahora, prefiero aumentar o complicar otra cosa, algo que no implique complicar otras cosas. En cuanto a complicar X: Si lo hacemos negativo, la duda podría ser cual es su número contrario, pero eso implica complicar la condición a cumplir, ya no es comparar 2 números sino que se requiere cierto proceso. Otro ejemplo no se me ocurre, decir un número menor al negativo implicaría complicar al candidato pues ya no podría ser positivo. Si a X la hacemos decimal, si es positivo, no habría diferencia. Si la duda fuese adivinar X, eso implica complicar al candidato y especialmente el modo conque varía, ya que no es lo mismo sumarle 1 que sumarle distintas cantidades decimales. Si a X la hacemos un texto, ya no es algo que se pueda superar (si hablamos de longitud, eso es complicar la condición a cumplir). Si la duda fuese adivinar el texto, eso implica complicar al candidato y cómo varía. Hacer que el candidato tenga partes parece que complica su aplicación, por ejemplo si la duda fuese hallar 2 números que al multiplicarse resulten X, entonces hay que multiplicarlos en vez de simplemente comparar uno. Además no se me ocurren muchas dudas así, que dado un número haya que decir varios números que deban cumplir alguna condición. ¿Se les ocurre? Que el candidato sea negativo, decimal o texto, complica el cómo varía. Además X es un positivo entero, así que: Si el candidato es un negativo ¿para qué? No para superar a X. ¿Para ser superado? Sería demasiado fácil. Otros objetivos complican la condición, creo. Si el candidato es un decimal ¿para qué? Podría ser porque la situación lo requiere, como si fuese un desafío. Bueno, pero no tiene mucho sentido. Si el candidato es un texto, no podrá superar a un número. En longitud, ya se ha dicho, es otra cosa. Si el texto representa otro sistema de numeraciòn, puede ser, pero no me gustan ese tipo de dudas, de convertir gramos en moles, número en texto, etc xP Agregar una condición parece implicar agregar una variable o complicar la complejidad de la condición. Por ejemplo, en vez de que el candidato (C) simplemente deba ser mayor a X, puede ser X < C < Y. Se agregó la variable Y. Si decimos que C deba ser un número primo, eso implica procesos, no una comparación simple. El tipo de condición a cumplir, sí, por fin, parece poder complicarse sin que eso implique complicar otras cosas. Es lo que quiero complicar, por eso. Teníamos que C > X. Podemos cambiarlo, por ejemplo, a que C sea más largo que X. Esto me lleva a la pregunta de cuales son los procesos que se pueden aplicar en C, que resulten en un valor no azaroso. Ordenados por complejidad. Dificultad 0: No hay proceso, C se usa como tal: C > X, o C == X, etc, depende del contexto. A continuación digo procesos y ejemplos de condición a cumplir, en definitiva son dudas o desafíos, quisiera que agreguen a la lista, y los ordenen por complejidad. Ah, los procesos no deben implicar variables, más allá de X y C. Por ejemplo C+Y > X no sirve porque se agregó la variable Y. Y los procesos los clasifico en 4 tipos para más claridad. Procesos que sólo quitan caracteres (recuérdese que C es entero positivo, así que el caracter 0 no siempre se podría quitar): - C quita el caracter nro C a X ¿qué valor debe tener C para que luego del proceso se cumpla que C+C < X? - A X se le quitan caracteres, desde el inicial hasta X ¿qué valor debe tener C para que luego del proceso X sea un número más divisible que antes? - A X se le quitan caracteres, desde el último hasta X ¿qué valor debe tener C para que luego del proceso X sea un número menos simétrico que antes? Procesos que no cambian los caracteres, sólo los cambian de lugar: - Desde el inicio de X se busca un caracter C, y se pone en el lugar C ¿qué valor debe tener C para que luego del proceso X sea mayor que antes? - Desde el final de X se busca un caracter C, y se pone en el lugar C ¿qué valor debe tener C para que luego del proceso X sea menos ordenado que antes? - El caracter nro C de X se pone en la posición C+C ¿qué valor debe tener C para que luego del proceso, la potenciación de los caracteres de X sea mayor que antes? Procesos que sólo agregan caracteres: - A X se le agrega C en la posición C ¿qué valor debe tener C para que luego del proceso X sea divisible entre C? - El caracter C de X se agrega en su posición C ¿qué valor debe tener C para que luego del proceso X sea la suma de los caracteres del X original? - X se agrega al final de X, C veces ¿qué valor de C logra que luego del proceso X sea lo más cercano posible a C*X (el original)? Procesos matemáticos (que pueden hacer cambios de los otros tipos): - X=X/C ¿qué valor debe tener C como mínimo para que luego del proceso se cumpla que C>X? - X=X*C ¿qué valor debe tener C para que los caracteres del nuevo X sean todos iguales? - X=C/X ¿qué valor debe tener C para que el nuevo X tenga C decimales? Los procesos que impliquen más de un tipo de proceso, son más complejos que los simples, claro. Parece haber 2 aspectos aquí: El proceso y la condición a cumplir. ¿Se pueden separar? ¿se puede complicar el proceso sin complicar la condición? ¿y viceversa? Creo que me desvié, me suele pasar xP Ahora me siento algo perdido ¿sugerencias? A ver, el código: X = Un número entero positivo C = 1 Repetir Si C > X // Solución hallada, fin sino C++ Supongamos que la mínima complicación que puede hacerse a eso, del tipo de complicación que mencioné, es: X = Un número entero positivo C = 1 Repetir Si C+C > X // Solución hallada, fin sino C++ Ahí el proceso está en la condición, pero puede ser algo anterior ¿o no? BaseX = Un número entero positivo C = 1 Repetir // Proceso que implica definir X usando BaseX y C. Si C > X // Solución hallada, fin sino C++ Supongo que me falta práctica, pero quiero practicar desde lo más sencillo a lo más complicado, así que necesito entender cual es el orden... La condición puede ser X > BaseX por ejemplo. O SimetriaDeX > SimetriaDeBaseX. No son variables nuevas realmente, son propiedades de las otras. En fin ¿sugerencias? Se me acabaron los puntos para GPT hoy, mañana le pregunto.
|
|
|
212
|
Programación / Programación General / ¿Se puede hacer un bat que abra john the rippley y le de un comando?
|
en: 15 Diciembre 2024, 19:07 pm
|
Tendré que usarlo muchas veces creo, así que quisiera automatizar un poco la tarea: - Abrir la carpeta run donde están los ejecutables de john. - En la barra de direcciones, escribir CMD. - Pasarle el comando john --wordlist=Mywords.txt rar.hashes. Ese archivo lo cambiaré manualmente luego de que john termine. ¿Cómo lo hago? baia baia, respuesta de God PT: ¡Claro que puedes hacerlo! Puedes crear un archivo batch (`.bat`) para automatizar este proceso y que ejecute directamente el comando sin necesidad de escribir manualmente en la barra de direcciones o abrir el símbolo del sistema por separado. Aquí tienes una guía paso a paso:
### 1. **Crea el archivo batch**
1. Abre un editor de texto como *Bloc de notas* o cualquier otro editor de texto simple. 2. Escribe el siguiente código (personalizando las rutas según tu configuración):
```batch @echo off :: Cambia a la carpeta donde está el ejecutable de John the Ripper cd /d "C:\ruta\a\la\carpeta\run"
:: Ejecuta el comando con el archivo de wordlist y el archivo de hashes john --wordlist=Mywords.txt rar.hashes
:: Pausa para que puedas ver el resultado pause ```
3. Guarda el archivo con la extensión `.bat`. Por ejemplo, podrías llamarlo `ejecutar_john.bat`.
- Asegúrate de que al guardar uses **Guardar como...** y selecciones "Todos los archivos" como tipo, para evitar que Windows lo guarde como `ejecutar_john.bat.txt`.
---
### 2. **Cómo usar el archivo batch**
1. Coloca el archivo batch (`.bat`) en cualquier lugar que te sea conveniente. 2. Haz doble clic en el archivo batch. Esto hará lo siguiente: - Cambiará al directorio `run` donde está el ejecutable de John the Ripper. - Ejecutará el comando `john --wordlist=Mywords.txt rar.hashes`. - Mantendrá abierta la ventana de la consola al final (gracias al comando `pause`) para que puedas leer los resultados.
---
### 3. **Personaliza el archivo batch**
Si más adelante necesitas cambiar los parámetros (como el archivo de wordlist o el archivo de hashes), simplemente edita el archivo batch con un editor de texto y ajusta las líneas correspondientes.
---
### 4. **Automatización adicional (opcional)**
Si siempre tendrás los archivos `rar.hashes` y `Mywords.txt` en la misma carpeta, podrías simplificar aún más las cosas:
- Coloca el archivo batch en el directorio donde están los archivos, y modifica el batch para que no tengas que cambiar de directorio:
```batch @echo off :: Ejecuta John the Ripper directamente en el directorio actual "C:\ruta\a\la\carpeta\run\john.exe" --wordlist=Mywords.txt rar.hashes
:: Pausa para ver los resultados pause ```
De este modo, el archivo batch puede ejecutarse desde cualquier lugar, pero necesitarás asegurarte de que `Mywords.txt` y `rar.hashes` estén en la misma carpeta que el batch.
---
### 5. **Cosas a tener en cuenta**
- Si utilizas rutas con espacios, asegúrate de que estén entre comillas, como en `"C:\Program Files\John the Ripper\run"`. - Si necesitas cambiar el archivo `rar.hashes` manualmente, asegúrate de que esté en el directorio donde espera el batch. - Si tienes varias tareas similares pero con diferentes archivos, podrías crear diferentes archivos batch para cada tarea con los nombres de archivo correspondientes.
¡Y listo! Con esto, puedes automatizar el proceso y ahorrarte tiempo.
|
|
|
216
|
Media / Juegos y Consolas / Mejorar estas ideas sobre los tipos de videojuegos.
|
en: 10 Diciembre 2024, 20:55 pm
|
Está inconcluso y yo algo liado: ¿Cuales son las variables de los juegos y cual es el más sencillo?
Quiero hacer un juego de cada tipo, comenzando por los más sencillos. El programa tendría una pantalla inicial donde se podría modificar variables y basado en eso aparecería un juego u otro.
El juego más sencillo que se me ocurre es uno que se gane por hacer algo, no importa qué, mover el mouse por ejemplo. Pero eso debería representar algo, por ejemplo que un personaje en la pantalla se movió. También puede ser ganar por hacer nada durante cierto tiempo. Ganar por actuar o no, me parece que no, no tendría gracia.
En cuanto a variables pienso en:
1- Dimensiones del universo: ¿? Me dijeron que una aventura de texto, como fueron algunos 1eros juegos, podría tener 0d. No sé. Un juego de 1d también es posible pero se vería como uno 2d, al menos según pensé. Puede que los personajes sólo se muevan hacia una dirección, pero van a tener cierto alto y ancho, son 2d. Incluso si sólo fuesen 1 pixel cada uno, el pixel tiene cierto alto y cierto ancho. En el caso de juegos de cartas o algún otro, se podría decir que cada mano es una dimensión, así como la pila de descarte y alguna otra cosa, pero parece un poco forzado, no parece una dimensión normal. Si se tienen opciones, no es que la lista de opciones sea una dimensión. Las cartas en la mano son opciones... En fin, es un caso especial. Yo creo que lo más simple para empezar es 2d. Las pantallas son 2d. Una aventura de texto, a estas alturas no tiene mucho sentido hacer. Incluso las novelas visuales tienen lugares y si hay más de 1 personaje, no aparecen ambos en el medio.
2- Posibles estados del personaje : ¿? No su posición en las dimensiones. No es necesario que haya movimiento. El juego puede ser, por ejemplo, que el personaje deba ponerse del mismo color que otro.
3- Máximas caras visibles del personaje: 0~6 Considerado como un cubo, cuántas se pueden llegar a ven. Pueden ser 0, como en juegos de cartas, donde el personaje no se ve. El máximo normal es 3. Puede ser cuando se muestra medio en diagonal, medio arriba de su cabeza, su perfil y espalda/frente. En vez de arriba de su cabeza podría ser desde abajo, pero es bastante atípico. Es más de 3 cuando hay más de 2 cámaras mostrando diferentes partes del personaje. Tiene sentido por ejemplo si es una nave que puede ser atacada desde diversos lados.
4- Perfil del personaje es visible: N/S Se refiere a si su perfil se ve en alguna ocasión o no. No daré relevancia a si se ve uno y no el otro. Por ejemplo del clásico Mario sólo se ve 1 perfil, pero considero que se ve de perfil y ya está.
5- El personaje es visible desde arriba: N/S Si en algún punto se ve completamente desde arriba o no. Los clásicos de Zelda no se ven completamebte desde arriba, esto se da en juegos de naves scrolldown, por ejemplo.
6- Espalda del personaje es visible: N/S Lo mismo respecto a su espalda. En este caso supongo que Zelda vale.
7- Frente del personaje es visible: N/S Simple.
- El personaje es visible desde abajo: N/S Extraño, pero posible si por ejemplo es una nave y cosas se acercan desde la pantalla. Se vería más o menos como vemos desde abajo a un avión, y desde ahí se le acercarían cosas. Como es tan raro, no lo tendré en cuenta.
8- Perfil, arriba y espalda del pers. es visible: N/S Si en algún momento se verá todo eso a medias, a la vez.
9- Perfil, arriba y frente del pers. es visible: N/S Parecido.
- Perfil, abajo y espalda del pers. es visible: N/S El caso atípico que comenté, por ahora no lo tendré en cuenta.
- Perfil, abajo y frente del pers. es visible: N/S Parecido.
10- Posibles objetos del personaje: 0~ Típico.
11- El personaje puede moverse hacia adelante: N/S Típico.
12- El personaje puede moverse hacia atrás: Aquí las opciones son: A- No. B- Sí pero queda mirando hacia allí. C- Sí. D- Sí, con opción de quedar mirando hacia allí.
13- El personaje puede moverse hacia los costados: A- No. B- Sí pero queda mirando hacia allí. C- Sí. D- Sí, con opción de quedar mirando hacia allí. De nuevo, no consideraré que sólo se pueda mover hacia 1 costado. Es hacia ambos o nada.
14- El personaje puede moverse hacia arriba: Aquí las opciones me parece complicado decidir cuales serían, se me ocurre: A- No. B- Saltando, volando, nadando o trepando, pero queda mirando hacia allí y cae. C- Saltando, volando, nadando o trepando, pero cae. D- Volando, nadando o trepando, pero queda mirando hacia allí. E- Saltando, volando, nadando o trepando, con opción de quedar mirando hacia allí, pero cae. F- Volando, nadando o trepando, con opción de quedar mirando hacia allí. En Demon Crest se ve eso de que el personaje se mantiene flotando, no cae, y puede subir con cierto poder. Aunque también puede caer si quiere. En fin, sería para un juego donde no tenga sentido caer, y no subir sea mantenerse.
15- El personaje puede moverse hacia abajo: Parecido supongo: A- No. B- Sí, pero queda mirando hacia allí y sube. C- Sí, pero sube. D- Sí, pero queda mirando hacia allí. E- Sí, con opción de quedar mirando hacia allí, pero sube. F- Sí, con opción de quedar mirando hacia allí. Podría subir en el caso de que quiera hundirse y no sea suficientemente denso, o si en la parte de arriba de la pantalla hay un agujero negro u objeto con mucha gravedad, se me ocurre. Como que el motor genera un impulso pero se apaga, hay que reencenderlo, y así.  Veo unas 16 variables*3+2, o 16 cuyos valores pueden ser también letras, y 2. Ah, no, en un caso habría más de 30 posibilidades. Otra posibilidad es considerar sólo la máxima complejidad de cada una, no distinguir entre personajes o enemigos o aliados, pero hay diferencia... Lo de letras es porque los juegos se llamarían por ejemplo 11111... etc, tantos caracteres como variables, y para reducir caracteres pensaba en que 10 fuese A, etc.
|
|
|
217
|
Foros Generales / Foro Libre / 2 juegos en el foro.
|
en: 10 Diciembre 2024, 19:57 pm
|
El 1ero, típico, consistiría en: - Todo usuario comienza teniendo 1 punto. - Un usuario plantea un reto y un plazo. - Los que quieran plantean soluciones. - Terminado el plazo, cada usuario conocido (*) puede, durante 1 semana: - Decir que la solución de otro es correcta. O de otros. - Votar por una solución que no sea la suya. - Cada usuario cuya solución haya sido catalogada como correcta, obtiene la mitad de puntos del catalogador que tenga más (éste no los pierde). Máximo 1 decimal. - Cada usuario cuya solución haya sido votada, obtiene tantos puntos como tiene su votante (de nuevo, éste no los pierde). - Si se vota por una se entiende que se la considera correcta y sólo tiene efecto el voto de favorita, no de correcta. (*): Para evitar amiguismos o multicuentas.
Ejemplo: - Hacer programa que genere cuentos en castellano de mínimo 20 palabras, antes del próximo mes. - A postea una solución, B postea otra, C postea otra. - Termina el plazo, empieza el plazo de votación, 1 semana. - A dice que la solución de B es correcta y vota la de C. - B tiene 1.5 puntos, C tiene 2. - B vota la de A. - A tiene 2. - C vota la de A y dice que la de B es correcta. - A 3, B 2, C 2. - D dice que todas fueron correctas y vota la de C. - A 3.5, B 2.5, C 3. - D sigue con 1 porque no dió solución ni fue votado, etc.
Si se les ocurre cómo hacerlo mejor, díganme, yo intenté que sea justo y no muy complicado.
---------------------------------------------------------------------------------------------------------
El 2ndo sería: - Todo usuario comienza teniendo 1 punto. - Cada semana, los que quieran postean una conversación que se haya tenido con un chatbox sobre Informática. Que no se haya posteado antes. - Durante la semana siguiente, cada usuario conocido puede: - Decir que conversación o conversaciones le gustaron. Que no sea la suya. - Votar por una conversación que no sea la suya. - Cada usuario cuya conversación haya sido gustada, obtiene la mitad de puntos del catalogador que tenga más (éste no los pierde). Máximo 1 decimal. - Cada usuario cuya conversación haya sido votada, obtiene tantos puntos como tiene su votante.
¿Hacen algo similar los dueños de los chatbots?
|
|
|
220
|
Programación / Programación General / Ayuda con las funciones de string de AS 1.0.
|
en: 5 Diciembre 2024, 07:34 am
|
Intenté hacer una simulación de un sorteo pero ni con ayuda de GPT pude >__< Se tiene una urna con 2 bolas blancas y una negra. 3 personas van sacando por turnos hasta que saquen la negra. Esa persona pierde. Yo quería ver si sacar 1ero da ventaja, desventaja, o si está favorecido el 2ndo, etc. BaseUrna = "WWB"; AlexPerdidas = 0; BartPerdidas = 0; CamiloPerdidas = 0; function Sortear () { // Preparar urna: Urna = BaseUrna; // Elección de la 1er persona, Alex: BolaDeAlexNro = random(3); if (BolaDeAlexNro == 2) { AlexPerdidas++; } else { BolaDeAlex = Urna.charat(BolaDeAlexNro); Parte1 = substring(Urna, 0, BolaDeAlexNro); trace(Parte1); Parte2 = substring(Urna, BolaDeAlexNro+1, Urna.length); trace(Parte2); Urna = Parte1+Parte2; // trace(Urna); // Elección de la 2nda persona, Bart: BolaDeBartNro = random(2); if (BolaDeBartNro == 1) { BartPerdidas++; } else { CamiloPerdidas++; } } }
La función se repite y los resultados se muestran en pantalla. Lo de Parte1 y Parte2 se lo copié a GPT pero no funciona bien. Quiero que de Urna se remueva la bola que fue elegida. Es claro que en ese punto será una W, así que siempre quedaría WB, pero quiero aprender a hacerlo de este modo. Es que no entiendo los métodos string, la ayuda de Flash carece de ejemplos en eso. Además no vi algo que sirva para remover un caracter. myString.concat(valor1,...valorN); Argumentos
valor1,...valorN Cero o más valores que se van a concatenar.
Descripción
Método; combina los valores especificados y devuelve una nueva cadena. Si es necesario, cada argumento valor se convierte en una cadena y se anexa, en orden, al final de la cadena. No se entiende bien lo de ",...", imagino que es cualquier cantidad de valores, y los concatena, pero es más fácil hacer esto: Concatenado = ""+Valor1+Valor2; o: Concatenado = String(Valor1)+Valor2; Quizá la diferencia es que .concat modifica el valor. No: BaseUrna = "ABC"; BaseUrna.concat("D"); trace(BaseUrna);
eso me da ABC. No entiendo qué hace exactamente o qué ventaja tiene comparado con lo que dije. Siguiente: myString.slice(inicio, fin); Argumentos
inicio: Un número que especifica el índice del punto de inicio del sector. Si inicio es un número negativo, el punto inicial se especifica desde el final de la matriz, donde -1 es el último elemento.
fin: Un número que especifica el índice del punto final del sector. Si no se especifica fin, el sector incluye todos los caracteres desde el inicio al final de la cadena. Si fin es un número negativo, el punto final se determina desde el final de la cadena, donde -1 es el último carácter.
Descripción Método; extrae un sector o una subcadena del objeto String especificado, después la devuelve como una nueva cadena sin modificar el objeto String original. La cadena devuelta incluye el carácter inicio y todos los caracteres hasta (pero sin incluir) el carácter fin. Código: Resultado BaseUrna.slice(0, 0): BaseUrna.slice(0, 1): A BaseUrna.slice(0, 2): AB BaseUrna.slice(0, 3): ABC BaseUrna.slice(1, 1): BaseUrna.slice(1, 2): B BaseUrna.slice(2, 3): C BaseUrna.slice(3, 3): El final se nombra como si fuese +1 a lo que se quiere, no tiene mucho sentido. Si quiero del 0 al 2, debo decir del 0 al 3. La cosa es que esto de cortar tiene poco, sólo es obtener parte de una cadena. myString.split(delimitador); Argumentos
delimitador: El carácter utilizado para delimitar la cadena.
Descripción
Método. divide un objeto String rompiendo la cadena cuando se produce el argumento delimitador especificado y devuelve las subcadenas en una matriz. Si no se especifica delimitador, la matriz devuelta contiene solamente un elemento: la propia cadena. Si el delimitador es una cadena vacía, cada carácter del objeto String se convierte en un elemento de la matriz. No lo entiendo, lo pruebo. BaseUrna.split(0): ABC BaseUrna.split(1): ABC BaseUrna.split(2): ABC BaseUrna.split(3): ABC No sé, no veo división, ni siquiera cambio. ¿Hay que especificar el caracter, no es un número? myString.substr(inicio, longitud); Argumentos
inicio: Un número entero que indica la posición del primer carácter de la subcadena que se está creando. Si inicio es un número negativo, el punto inicial se determina desde el final de la matriz, donde -1 es el último carácter.
longitud: El número de caracteres en la subcadena que se está creando. Si no se especifica longitud, la subcadena incluye todos los caracteres desde el inicio al final de la cadena.
Descripción
Método; devuelve los caracteres de una cadena desde el índice especificado en el argumento inicio, hasta el número de caracteres especificados en el argumento longitud. Este lo he usado y lo entiendo, creo. Además es lo que me conviene usar, creo. Pero cómo. Si la bola elegida es la 0, no necesito 2 partes, hago: Urna = Urna.substr(1, Urna.length); Si fuera la última, más o menos lo mismo: Urna = Urna.substr(0, (Urna.length)-1); pero eso no funciona: Urna.substr(0, (Urna.length)-1): Urna.substr(0, Urna.length: ABC Urna.substr(1, (Urna.length)-1): Urna.substr(1, Urna.length: BC Sin los paréntesis tampoco. Ah, tenía mal escrito length a la derecha de los :, suelo escribir mal esa palabra, ahora sí: Urna.substr(0, (Urna.length)-1): AB Urna.substr(0, Urna.length: ABC Urna.substr(1, (Urna.length)-1): BC Urna.substr(1, Urna.length: BC ¿pero por qué el 3ero da BC en vez de B? trace("Urna.substr(1, (Urna.length)-1): "+Urna.substr(1, (Urna.length)-1)); Ah, porque lo 2ndo es la cantidad de caracteres a obtener, no hasta cual. En este caso serán 2. Bien. Y bueno, si se quiere remover un caracter intermedio, sí, en partes: Parte1 = Urna.substr(0, X); Parte2 = Urna.substr(BolaDeAlexNro+1, Y); ¿Está bien? Debo calcular X e Y. En este caso, el número elegido es el 1. Entonces se quiere captar, en la Parte1, sólo el caracter 0. Entonces va 1. ¿Pero cual es la fórmula? Si hubieran más elementos: ABCDE Si se elige el 1, B, queremos obtener sólo A. Si se elige 2, C, queremos AB. Entonces la cantidad de números que queremos obtener es igual al número elegido: Parte1 = Urna.substr(0, BolaDeAlexNro); Ahora Y. Bueno, siempre se va a querer hasta el caracter final, así que es: Parte2 = Urna.substr(BolaDeAlexNro+1, Urna.lenght); lo escribí mal de nuevo >___< th, th, th, th, th, th... Parte2 = Urna.substr(BolaDeAlexNro+1, Urna.length); Así parece ok: BaseUrna = "ABCD"; AlexPerdidas = 0; BartPerdidas = 0; CamiloPerdidas = 0; function Sortear () { // Preparar urna: Urna = BaseUrna; // Elección de la 1er persona, Alex: BolaDeAlexNro = random(4); if (BolaDeAlexNro == 3) { AlexPerdidas++; } else { BolaDeAlex = Urna.charat(BolaDeAlexNro); Parte1 = Urna.substr(0, BolaDeAlexNro); // trace(Parte1); Parte2 = Urna.substr(BolaDeAlexNro+1, Urna.length); // trace(Parte2); Urna = Parte1+Parte2; trace(Urna); } }
Remueve A, B o C sin problema. No es necesario un if cuando sólo se quiere remover la parte 0. Listo. myString.substring(desde, hasta); Argumentos
desde: Un número entero que indica la posición del primer carácter de la subcadena que se está creando. Los valores válidos para desde van de 0 a string.length - 1.
hasta: Un número entero que es 1 + el índice del último carácter de la subcadena que se está creando. Los valores válidos para hasta van de 1a string.length. Si no se especifica el argumento hasta, el final de la subcadena es el final de la cadena. Si desde es igual a hasta, el método devuelve una cadena vacía. Si desde es mayor que hasta, los argumentos se intercambian automáticamente antes de que se ejecute la función.
Descripción
Método; devuelve una cadena que consiste en los caracteres entre los puntos especificados por los argumentos desde y hasta. Por ahora me cansé. Esa es la que me dijo GPT. substring(cadena, índice, recuento); Argumentos
cadena La cadena de la que extraer la nueva cadena.
índice El número del primer carácter que se va a extraer.
recuento El número de caracteres que se van a incluir en la cadena extraída, sin incluir el carácter de índice.
Descripción
Función de cadena; extrae parte de una cadena. Esta es probablemente la que necesitaba. Como es distinta (no empieza con "variable."), no pensé que fuese la que buscaba. Que me sirva de lección xP En fin, lamento el entrevero.
|
|
|
|
|
|
|