Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Temas - Tachikomaia

Páginas: [1] 2 3
1
Citar
Por otro lado, si se quiere usar muchas variables y eso da problema (nombres largos), puede hacerse una variable “resumen”, más o menos así:
S1=1, S2=1, S3=1.......   R=1
S1=1, S2=1, S3=2.......   R=2
S1=1, S2=2, S3=1.......   R=3
S1=1, S2=2, S3=2.......   R=4
S1=2, S2=1, S3=1.......   R=5
Nota: Sólo si no hay más de 1 variable cuyo valor sea ilimitado.
Hay una relación matemática que permite obtener esos varios números a partir de uno solo (R). Es como si para calcular cada S habría que dividir a R, cada vez por números menores. Más o menos así:
S1 = Quitar decimales a (R/5)
R = R-S1
S2 = Quitar decimales a (R/3)
R = R-S2
S3 = R
¿Está correcto?

2
Acabo de pensar que no sé justificar mis pensamientos.

Y que eso que nos pedían en colegios, de "justifique su respuesta", por ejemplo, es... no sé cómo expresarlo, un ejercicio vano, una ilusión de poder/inteligencia, como cuando se pedía que recemos. ¿Se gana algo rezando? Expresar una idea, pero no es que el barbudo vaya a cumplirlo. ¿Se gana algo justificando? Nunca se llega a justificar, así que es una ilusión, como si nos disfrazáramos de Superman y ya por eso nos creyéramos Superman.

Hay 2 cosas que nunca leí bien.
1- El teorema de incompletitud de Gödel. Probablemente debí haberlo leído alguna vez, pero siempre tuve esperanza de que se podía resolver de algún modo el tema, por ejemplo con afirmaciones que se autoimplicaran y que negarlas llevara a contradicciones, como "Las verdades no existen".
2- El problema de justificar o fundamentar o demostrar la moral. De esto leí poco y nada en Wikipedia.

Ahora no estoy como para leer, acabo de tirar una vela encendida a la maldita perra de mis vecinos, lo cual creerán que es una locura, pero eh, ya hice las denuncias correspondientes desde hace meses, así que locas están las autoridades por no haber actuado, yo sólo me he contagiado un poco.

Sólo posteo por las dudas. Ya que uds saben de demostraciones, tengo entendido, quería ver sus opiniones.

¿Por qué mejorar al universo es hacer El Bien, es ético, es bueno, es conveniente, etc?
Aunque la perra me permitiera concentrarme, creo que yo no sabría responder.

¿Por qué mejorar al universo? O dicho de otro modo ¿por qué hacer El Bien y no el mal?

Pasan los años y sigo sin poder escribir mi mensaje...

Por ejemplo se me ocurre, en cuanto a la pregunta 1:
Porque prácticamente son cosas sinónimas, tautologías, expresiones que significan lo mismo. Mejorar tira hacia el mismo lado que ser bueno, conveniente, ético. Y el universo, porque no hay otra cosa más grande que pueda mejorarse. La metafísica o reglas que están más allá del universo no son modificables.

Pero yo imagino a un personaje cuestionando todo lo que digo y no sé cómo convencerlo, ni a mí mismo de que yo esté dando buenas justificaciones. Si es para un niño, no necesariamente sabe lo que es un sinónimo, puede preguntar por qué las frases significan lo mismo, por ejemplo.

Por último, en cuanto a la 2nda pregunta, se me ocurren cosas como que...

Ah, me acordé de algo.

Para justificar, supongo, nada mejor que silogismos. O eso creí.

Entonces pensaba:
Premisa 1:
Premisa 2:
Conclusión: Conviene mejorar al universo.
Conclusión que es una tautología, pero comprendo que no se entienda o considere así. La cuestión es qué iría en las premisas 1 y 2 para que la conclusión fuese esa. Y sé que eso no sería una justificación completa, pero es mejor que la nada. Ahora bien, no sé qué premisas irían ahí.
Basado en:
América implica Argentina
Argentina implica BsAs
América implica BsAs
(porque eso de "es", en el fondo no es lo mismo)
intenté:
El sufrimiento es desagradable, feo, malo, repudiable...
Una situación que implique algo desagradable, feo, malo, repudiable... debe ser combatida.
El sufrimiento debe ser combatido.
...
Pero ocurre que el sufrimiento no es malo en si mismo, es más bien un radar detectando algo malo, es ese algo lo que debe ser combatido (tampoco es tan literal; si estás celoso de X no es que debas combatir a X sino a tu celosismo tal vez).

Corrijo entonces:
El sufrimiento implica algo desagradable, feo, malo, repudiable...
...pero no sé bien cómo seguir.

Más recientemente se me ocurrió:
Lo malo debe ser combatido
Lo que el sufrimiento detecta es algo malo
Conclusión: Lo que el sufrimiento detecta debe ser combatido

Not so bad. Pero siento que mi cuestionador no lo creería. Por ejemplo: ¿Por qué lo malo debe ser combatido? ¿por qué lo detectado por el sufrimiento es malo? ¿por qué la conclusión es la que se muestra ahí y no otra?

Por otro lado tengo la idea de que si el universo no mejora el sufrimiento no disminuirá y por lo tanto que el universo no mejore sería malo (porque el sufrimiento debe ser combatido), sería algo así:
- El suf (más bien sus causantes) deben ser evitados.
- Si el universo no mejora, el suf aumenta, no se evita.
Conclusión (más intuitiva que otra cosa, no veo clara la conexión): Hay que mej al un.

También que hay que haber sufrido para entenderlo, porque sino es comprensible que te importe un pepino el sufrimiento de los demás, vengarte del mal (evitando que cause más daño) o lo que sea. Yo de jóven pensaba más bien que cada uno debía preocuparse por ser feliz y quienes no lo lograban mala suerte, ley del más apto.


No sé hasta qué punto la matemática, o incluso la lógica, es aplicable en esto.
Pero es que yo, si vamos al caso, no sé ni demostrar que 1=1 o que 1!=2 ¿cómo se hace?
Quizá son axiomas, pero no me va eso de "no necesita ser demostrado". Tengo la idea de que todo es demostrable (aunque incompletamente, es decir, se puede explicar el por qué inmediato de algo, pero no lo que da origen a todo, o al menos yo no sé), pero bueno, creo que dejaré de intentar demostrar/justificar cosas. Tal vez sea el 1er paso a la locura, o uno más avanzado, pero si no tengo idea... ¿qué sentido tiene seguir estrujando mi cerebro en algo que parece que nunca aprenderé?

Perdón por el tono un poco loco o desesperado, pero si no estuviera así no preguntaba esto. Soy bastante vago para cambiar rutinas (ej: Volver a un foro).

3
Foro general / Dada una serie, obtener una serie más distinta posible.
« en: 09 Septiembre, 2019, 01:06 am »
Supongamos que tengo un equipo de fútbol
ABCDEFGHIJK
Hay 11 letras en 11 posiciones distintas, cada letra representa un jugador.

¿Cual sería el equipo, con los mismos jugadores, más diferente de ese equipo?

Uno tiende a creer que
KJIHGFEDCBA
Sin embargo en él todos los jugadores están al lado de los mismos que en el otro equipo, y sus distancias hacia el centro o hacia algún extremo siguen siendo igual.

Quisiera un proceso para obtener las series más opuestas, incluso cuando ya se obtuvo una, dos, etc.

Gracias.


¿Ideas que yo tenga?
Sí, medir la distancia entre los jugadores, la distancia en que se movieron con respecto a donde estaban en la serie inicial, y la distancia hacia el centro.
Sin embargo lo intenté en Excel pero al restar números negativos a veces... O sea, las cuentas no me dan bien, tengo que usar "ifs" o algo. Como sea, estoy trancado desde hace un tiempo.

4
Hice este programa:
Código: [Seleccionar]
actions for fotograma 1
      Pruebas = 0;
      Lanzamientos = 0;
      Lanzamientos_enesta_prueba = 0;
   actions for fotograma 2
      N = random(6);
   actions for fotograma 3
      Lanzamientos_enesta_prueba = Lanzamientos_enesta_prueba+1;
      if (N == 0) {
         Pruebas = Pruebas+1;
         Lanzamientos = Lanzamientos+Lanzamientos_enesta_prueba;
         trace ("Lanzamientos en esta prueba: "+Lanzamientos_enesta_prueba);
         Lanzamientos_enesta_prueba = 0;
         if (Pruebas == 100) {
            trace (Lanzamientos/Pruebas);
            stop ();
         }
      }
   actions for fotograma 4
      gotoAndPlay (2);
Lo que hace es:
1- Genera un número entero del 0 al 5.
2- Si el número no es 0, se vuelve a tirar. Cada vez que se genera un número eso cuenta como un lanzamiento.
3- Se vuelve al paso 1 100 veces.
4- Se hace Lanzamientos/100.

Ejemplo:
Lanzamientos en esta prueba: 19
Lanzamientos en esta prueba: 1
Lanzamientos en esta prueba: 4
Lanzamientos en esta prueba: 19
Lanzamientos en esta prueba: 4
Lanzamientos en esta prueba: 5
Lanzamientos en esta prueba: 10
Lanzamientos en esta prueba: 1
Lanzamientos en esta prueba: 11
Lanzamientos en esta prueba: 1
Lanzamientos en esta prueba: 2
Lanzamientos en esta prueba: 2
Lanzamientos en esta prueba: 5
Lanzamientos en esta prueba: 5
Lanzamientos en esta prueba: 5
Lanzamientos en esta prueba: 2
Lanzamientos en esta prueba: 3
Lanzamientos en esta prueba: 5
Lanzamientos en esta prueba: 2
Lanzamientos en esta prueba: 1
Lanzamientos en esta prueba: 2
Lanzamientos en esta prueba: 1
Lanzamientos en esta prueba: 10
Lanzamientos en esta prueba: 3
Lanzamientos en esta prueba: 12
Lanzamientos en esta prueba: 2
Lanzamientos en esta prueba: 9
Lanzamientos en esta prueba: 4
Lanzamientos en esta prueba: 12
Lanzamientos en esta prueba: 1
Lanzamientos en esta prueba: 1
Lanzamientos en esta prueba: 8
Lanzamientos en esta prueba: 4
Lanzamientos en esta prueba: 2
Lanzamientos en esta prueba: 4
Lanzamientos en esta prueba: 3
Lanzamientos en esta prueba: 8
Lanzamientos en esta prueba: 1
Lanzamientos en esta prueba: 8
Lanzamientos en esta prueba: 1
Lanzamientos en esta prueba: 5
Lanzamientos en esta prueba: 7
Lanzamientos en esta prueba: 1
Lanzamientos en esta prueba: 7
Lanzamientos en esta prueba: 7
Lanzamientos en esta prueba: 6
Lanzamientos en esta prueba: 8
Lanzamientos en esta prueba: 1
Lanzamientos en esta prueba: 4
Lanzamientos en esta prueba: 19
Lanzamientos en esta prueba: 14
Lanzamientos en esta prueba: 1
Lanzamientos en esta prueba: 9
Lanzamientos en esta prueba: 10
Lanzamientos en esta prueba: 4
Lanzamientos en esta prueba: 15
Lanzamientos en esta prueba: 6
Lanzamientos en esta prueba: 5
Lanzamientos en esta prueba: 3
Lanzamientos en esta prueba: 15
Lanzamientos en esta prueba: 1
Lanzamientos en esta prueba: 4
Lanzamientos en esta prueba: 17
Lanzamientos en esta prueba: 3
Lanzamientos en esta prueba: 6
Lanzamientos en esta prueba: 1
Lanzamientos en esta prueba: 5
Lanzamientos en esta prueba: 2
Lanzamientos en esta prueba: 10
Lanzamientos en esta prueba: 5
Lanzamientos en esta prueba: 7
Lanzamientos en esta prueba: 10
Lanzamientos en esta prueba: 6
Lanzamientos en esta prueba: 3
Lanzamientos en esta prueba: 4
Lanzamientos en esta prueba: 17
Lanzamientos en esta prueba: 19
Lanzamientos en esta prueba: 9
Lanzamientos en esta prueba: 2
Lanzamientos en esta prueba: 46
Lanzamientos en esta prueba: 5
Lanzamientos en esta prueba: 7
Lanzamientos en esta prueba: 1
Lanzamientos en esta prueba: 1
Lanzamientos en esta prueba: 4
Lanzamientos en esta prueba: 1
Lanzamientos en esta prueba: 14
Lanzamientos en esta prueba: 4
Lanzamientos en esta prueba: 7
Lanzamientos en esta prueba: 3
Lanzamientos en esta prueba: 5
Lanzamientos en esta prueba: 5
Lanzamientos en esta prueba: 4
Lanzamientos en esta prueba: 2
Lanzamientos en esta prueba: 29
Lanzamientos en esta prueba: 6
Lanzamientos en esta prueba: 3
Lanzamientos en esta prueba: 20
Lanzamientos en esta prueba: 2
Lanzamientos en esta prueba: 2
6.52

El problema es que yo pensé que daría en general 5.5 pero en general me ha dado más de 6, y eso es porque en cada prueba el número puede tardar infinitas veces en salir, en estas 100 lo máximo fue 46 pero ya con eso no hay "1s" que lo arreglen, el promedio resultará altísimo.

Bueno, yo presenté esto como prueba de mi idea o intuición pero parece decirme que estoy equivocado, pero no lo creo, y me parece que es debido a lo que ya expliqué.

Entonces ¿alguna idea de una demostración o algo parecido? ¿y qué les parece la mía, pueden indicarme la falla si es que les parece que la tiene? ¿o es que mi idea es la equivocada, por qué?

5
MasterMind:
https://es.wikipedia.org/wiki/Mastermind
Más info aquí:
https://en.wikipedia.org/wiki/Mastermind_(board_game)#Algorithms

El juego que me interesa se llama Codebreaker y está en otro llamado Demikids de GBA. No encontré estrategias en guías, etc, ni siquiera un video que muestre ese "minijuego" (probablemente lo hay, pero los walkthrough/lets play se llaman "part 1", etc, y no voy a buscar en qué parte lo muestran). Tiene un nivel difícil y uno normal, que por ahora es el que me interesa y funciona así:
1- Se genera un número al azar de 3 cifras usando números del 0 al 5, sin repetir. Yo no sé el número que se genera (a menos que haga trampa, pero no quiero).
2- Yo elijo un número de dichas condiciones (excepto el ser por azar).
3- El juego informa cuántos números bien colocados (considerando el número elegido por la computadora) puse, y cuántos números están mal colocados.
El paso 2 y 3 se repiten hasta digamos decir 6 códigos fallidos o hasta que yo acierte el número elegido por la compu.

Ejemplo:
Spoiler
1- Se genera el número 210
2.1- Yo digo 012
3.1- Me dice 1-2, lo cual significa que hay 1 número bien colocado (el 1, pero yo eso no puedo saberlo en este punto porque no sé el número generado) y 2 mal colocados.
2.2- Debido a que en este caso habría tenido bastante suerte, sé que el número es 021, o 210, o 102. A partir de ahora es cuestión de probar esos 3, no sé si hay un orden mejor que otro.
[cerrar]

Ejemplo 2:
Edit: Este ejemplo está mal, lo explico en el 2ndo post.
Spoiler
1- Se genera 531
2.1- Digo 012
3.1- Obtengo 0-1.
2.2- No tengo mucha idea de qué hacer, 304.
3.2- De nuevo 0-1
2.3- ¿?
Si el 0 fuese uno de los números, entonces los demás no son el 1, 2, 3 y 4, lo cual deja sólo al 5 pero entonces son sólo 2 por lo que queda descartado.
Si el 1 fuese uno, entonces no está el 2, y 3 y 4 no pueden estar a la vez así que es 135 o 145, en algún orden.
Si el 2 fuese uno, idem cambiando el 1 por el 2.
Ningún orden de 345 puede ser porque debido a las pistas sabemos que el 1 o 2 está presente.
Digo 245
3.3- 0-1
Joder.
Si los nums posibles eran 135, 145, 235, y 245 entonces asumo que es 135, pero por qué...
Si asumiera que el correcto es el 2, sólo puede ser 235 y 245, pero si fuese uno de esos habría obtenido al menos 2 números mal colocados, así que el 2 no está.
Si asumiera que el 4, queda 135 y 235, pero ocurre lo mismo... así que no.
...
La 1era cifra sé que no es el 3.
La 2nda no es el 1.
La 3era no es 5.
Entonces es: 153 o 531.
Ahora es cuestión de probar.
[cerrar]

Básicamente me gustaría tener un diagrama de flujo para saber qué hacer ante cada caso, o si no es un diagrama algo que yo pueda hacer y usar fácil. Un programa en este caso no lo es para mí creo, y no quiero usar algo que no entiendo, además.

Esto

...podría ser la base, modifíquenla y complétanla cuánto quieran o hagan otra cosa mejor (el problema de esta representación es que si muchas flechas salen de cada posibilidad se van a chocar o abarcar mucha pantalla. Lo bueno es que la cantidad de flechas que sale de cada posibilidad va bajando, y además la 2-1 no es posible creo y la 3-0 no es necesaria).
Algunos números de ahí los puse más por simetría que por otra cosa, no tengo mucha idea.

Estoy haciendo algo menos problemático que esa representación, así:
012__0-0__345__0-3__453__0-3__534
_______________1-2__354__0-3__435__0-3__543
_____0-1

6
Foro general / ¿Cómo calculo esto? Promedio, probabilidades...
« en: 30 Julio, 2018, 02:34 pm »
Supongamos que tengo un dado de 16 caras. Sólo una tiene el nro 10, las demás tienen el 5.
Lo que obtenga lanzando el dado será en promedio
(5*15+10)/16
85/16
5,3125

Si el dado tuviera 4 caras (1 con el nro 10, el resto con 5) el promedio sería
(5*3+10)/4
25/4
6,25


Ahora supongamos que el dado fuese de 16 caras pero tuviese 2 en una y 1 en las demás. ¿Cómo calculo qué obtendría en promedio, lanzándolo 5 veces? ¿es ((1*15+2)/16)*5
(17/16)*5
5,3125
?

¿Y si tuviera 4 caras sería
((1*3+2)/4)*5
(5/4)*5
6,25
?


No me cierra del todo.

Spoiler
En Pokemon hay ataques que "siempre" causan 100 puntos de daño digamos, con 1/16 chances de causar 200, lo que da un promedio de 106,25.
Otro ataque hace digamos 20 puntos pero 5 veces el mismo turno, o sea 100 en total, que aparentemente es lo mismo sí, pero no sé cómo se calcularía la chance de hacer 200 (cada golpe tiene 1/16 de chance), ni el promedio.
También existe un movimiento que aumenta la chance de golpes críticos (a 1/4), por lo que pensé o me da la sensación de que si se usara, luego sería conveniente usar el 2ndo ataque mencionado, porque al ser más golpes la chance de uno crítico sería más alta. Como el daño aumentaría menos que cuando el crítico es usando el 1ero, parece que da igual, pero a su vez, como dije, no siento eso. De hecho, como no siempre se van a tener 5 turnos (1 por el movimiento y 4 para causar un golpe crítico), el 2ndo parece más conveniente porque es el que más probabilidad tiene de que se cause algún golpe crítico antes de que el pokemon propio sea vencido.

Es que de hecho (otra vez) usar el movimiento resulta dudosamente efectivo (salvo que se quiera aumentar el daño sin que, al ser confundido aumente el autodaño, pero protegerse contra la confusión suele ser mejor), a menos que se quiera "apostar" a un todo o nada (tener suerte o embromarse) o que la batalla fuese a ser muy larga ¿pero cuánto? ¿cuántos turnos debería durar para que el movimiento en cuestión sea mejor que simplemente lanzar otro ataque (el dado)?

Por poner un ejemplo.
Si un golpe de 100 se usa 17 veces hará 1800 (por la chance de crítico).
Si en vez de eso, usamos el aumentador de críticos, y luego el golpe 16 veces, tendremos... 4*200+12*100=800+1200=2000.
Ya, cuando se estará 16 turnos golpeando, conviene, pero ¿con 15? ¿14? ¿desde cuando?

Me he referido al Pokemon de generación 3, por las dudas. Las reglas van cambiando.
[cerrar]

Gracias.

7
Foro general / ¿Cómo crear?
« en: 14 Julio, 2018, 07:02 am »
Una forma de crear números naturales es así:
0
1
2
3
...
9
10
11
Es decir variando la última parte y cuando no hay más posibles variaciones se resetea y varía la de adelante, y así sucesivamente.
En otras palabras sumándole 1.
 
Los números positivos y otras variaciones no sé bien un buen método, pero no me interesan mucho, se puede usar azar.
 
Las frases es similar a los números, sólo que en vez de ir del 0 al 9 van de la A hasta digamos el espacio.
El problema es que en vez de ser frases son combinaciones de letras o espacios, comas, etc, que no necesariamente tienen sentido. Es bastante complicado indicar el método para detectar si lo tienen o no, no lo intento por ahora.
 
Las expresiones condicionales son más simples que las frases, creo, pero no he podido entender cómo se generan evitando que se repitan, sean incoherentes, etc.
 
Esto sí:
Variable1 Comparador1 Variable2
Ejemplo: V1 < V2
Varío lo último, luego lo del medio, etc. Como de costumbre. Simplemente debo evitar que el 1er y último valor sean iguales.
 
Se expande a esto:
V1 C1 V2 Relación1 V3 C2 V4
Ej: V1<V2 y V1<V3
que tampoco es difícil. Sí evitar que las relaciones "y" sean contradictorias con otras, pero alguien me dió una solución. Las redundancias aún no las evité. Y las contradicciones o incoherencias en las relaciones "o", tampoco.
 
Lo que quiero, y se supone que no es tan difícil, es entender dónde tiene sentido un paréntesis, cual es el método por el cual se puede determinar eso.
 
Aprendí que las "y" se aplican antes que las "o", como si fuesen signos de * y de +. Parece cosa de magia pero así es.
 
Como en eso las subcondiciones no importan, las podemos resumir, así:
Ej: A y B
 
Para empezar, los paréntesis sólo tienen sentido si hay alguna "y" y alguna "o". Esta es una regla muy vaga, lo sé, pero dije "para empezar", si supiera la regla exacta ni haría el tema.
 
Nota: Rojo = repetidos. Basta con cambiar las subcondiciones de sitio y se obtendría el mismo resultado que alguna condición ya nombrada.
 
A y B o C: 2 o 1
A y (B o C): 1 y 1/2
A o B y C
(A o B) y C

A y B y C o D: 3 o 1
A y B y (C o D): 2 y 1/2
A y (B y C o D): 1 y (2 o 1)
A y (B y (C o D)): 1 y (1 o 1/2)
 
Bueno, puedo seguir, pero me confundo bastante ¿cual es la regla?
Parece que deben rodear alguna "o" dejando fuera alguna "y", pero es más complejo que eso ¿o no?
 
A y (B y C y (D o E)): 1 y (2 y 1/2)
A y B y C y (D o E): 3 y 1/2
 
Podría ser que no...
 
Intenté evitar usar paréntesis pero las expresiones se alargan. Es usar la propiedad distributiva.
 
Gracias...

8
Dadas 2 estructuras de funciones, A y B, quisiera un método para saber si los resultados de alguna son abarcados por la otra.

Por ejemplo si:
A: I*V
B: I+I+I
...entonces sé que A abarca a B, puede dar los mismos resultados e incluso más.

I es una variable involuntaria, no la controlo, digamos que fuese la temperatura ambiente.
V es voluntaria, puede ser el número que yo quiera.
Entonces en vez de hacer I+I+I puedo hacer I*V, si defino V como 3.

Espero que se entienda...


Lo necesito para adivinar funciones digamos, algo así: X = OPERACIONES, donde la incógnita no sería X sino OPERACIONES, es decir, pueden ser: I^I, I^V, etc. Todas las funciones que se imaginen, aunque me interesan las estructuras, es decir, V sin definir (ni V2, etc, si las hubiera).

9
Con las ecuaciones de sumas o restas no sucede:
A+B+C = A+(B+C)

Con las de multiplicaciones o divisiones tampoco:
A*B*C = A*(B*C)

Entonces:
¿A^B^C = A^(B^C)?

10
Foro general / ¿Métodos de asignar un valor a un número?
« en: 12 Febrero, 2018, 12:40 pm »
No es necesario leer tanto para entender. Escribí intentando más o menos poner la info más relevante al inicio, así que lean hasta que les parezca haber entendido.

------------------------------------------------------------------------------------------------

Quiero hacer un programa que en pantalla muestre métodos en los que se asigne un valor a una variable C, basados en otra variable V y a veces también en un valor F, fijo y elegido, o incluso en más de un F.
Ejemplo:
C = V+F

Y quiero que evite hacer "tonterías", como mostrar métodos que dan el mismo resultado o que pueden resumirse.
Ejemplo:
C = V+V+V+V+V-V se puede resumir a C = V*F, y si se mostraran ambos resultados sería una falla, quiero sólo el 2ndo.

------------------------------------------------------------------------------------------------

Nótese que no se pone V*4 por ejemplo, siempre que haya un número fijo se pone F, o sea que no preciso tanta especificación.

------------------------------------------------------------------------------------------------

Uds dirán cómo puedo hacer esto que quiero, especialmente lo de evitar tonterías.

------------------------------------------------------------------------------------------------

Por ahora logré que en la 1era línea pueda aparecer cualquiera de esto:
C = V+F
C = V*F
C = F/V
C = Math.pow ( V, V )
C = Math.pow ( V, F )
C = Math.pow ( F, V )

Algunas posibilidades que pueden imaginarse las descarté por evitar tonterías. Por ejemplo V+V es abarcado por V*F.
Dado que las computadoras tienen problemas para cálculos con decimales la diferencia en los resultados del ejemplo (o sino en casos como V*0.33333333... comparado con V/3, que no está en la lista) podría ser mucha, pero no busco TANTA precisión.

Obviamente quiero que comenten si creen que falta alguna "combinación" importante o si hay alguna tontería.

------------------------------------------------------------------------------------------------

En las próximas líneas puede aparecer cualquiera de estas:
C = C+V
C = C+F
C = C*V
C = C*F
C = V/C
C = F/C
C = Math.pow ( C, C )
C = Math.pow ( C, V )
C = Math.pow ( V, C )
C = Math.pow ( C, F )
C = Math.pow ( F, C )

En este caso no analicé mucho el tema de las tonterías, así que en comparación con las combinaciones anteriores es más probable que haya.

------------------------------------------------------------------------------------------------

El programa aún no genera métodos que contengan paréntesis.

Si continúo como hasta ahora la solución que intuyo es que a partir de la 2nda línea puedan ir cosas como C2 = V+F, es decir, que sea posible algo así:
C = V+F
C2 = V-F
C = C/C2
...lo cual equivaldría a C = (V+F) / (V-F)

Uno de los problemas es que al agregar una definición en base a C2 o una C "mayor" (C3, etc) habría que ver si tal variable fue definida en una línea anterior, y no en un método anterior, o sea que habría que llevar un conteo de las Cs definidas en el método. Fácil creo... pero tiene consecuencias (tonterías o repeticiones) complicadas de resolver.

------------------------------------------------------------------------------------------------

En la forma normal de expresar ecuaciones o como se llamen está permitido que haya más de una operación por línea. Con el tema de los paréntesis tendríamos que lo 1ero agregado podría ser:
(
V
F/
Math.pow ( V,
Math.pow ( F,

En vez de Math.pow y sus paréntesis podría usar ^, pero igual me parece complicado, que dependiendo de qué se agregó lo siguiente pueda ser una cosa u otra. Por ejemplo si se agregó un "(" entonces se puede agregar "V", pero si sólo se agregó "V" entonces lo 2ndo debe ser un símbolo.
Well, mi limitación de operaciones por línea también da problemas, quizá a la larga da más, pero en este punto aún no, por lo tanto lo seguiré usando.

------------------------------------------------------------------------------------------------

El programa aún no genera métodos que contengan F2 o "mayores".

No sé si es un problema.

El programa es para darme pistas sobre:
A- Cómo definir una variable de modo que cumpla una condición (esto puede sonar fácil, pero no siempre lo es, porque una variable puede representar una acción que no puede ser deducida simplemente por el valor de dicha variable, por ejemplo 2 en un ajedréz puede significar mover el rey a la derecha).
B- Cómo definir una condición (no sé por qué puede ser difícil, pero ya me ha pasado).

Entonces, que el método me diga por ejemplo:
C = V*F
C = C+F
...no sería un problema si yo tuviera en cuenta que en cada caso F puede ser un valor distinto.

Pero no estoy seguro de si siempre sería tan fácil o tan poco problemático. Habría que re-revisar el tema de las tonterías y las repeticiones...

Si decido poner F2 y demás, habría que poner un contador como había mencionado con las Cs y los paréntesis. La lista de agregables se agranda, y también se complica la detección de tonterías y repeticiones, so, no sé si esto es necesario o mejor que lo otro.

¿Qué creen?

------------------------------------------------------------------------------------------------

El programa aún no genera métodos que contengan la acción:
- Obtener parte
- Obtener largo
- Si
- Repetir

¿Pueden ser sustituídas por matemática normal? ¿cuales son las instrucciones mínimas necesarias para generar cualquier método de definir una variable como dije al inicio? No estoy pidiendo que me hablen de lenguaje máquina o cosas así, sino cosas como:
¿Puede la acción "redondear hacia abajo" aplicarse la acción "si", divisiones y cualquier cosa "normal", o es necesario que use esa acción?
Obviamente no conocen todas las acciones "raras" o de informática, pero yo tampoco, así que no se preocupen tanto por dar una respuesta completa o perfecta.

------------------------------------------------------------------------------------------------

La repetición de una suma sería una multiplicación, y la repetición de una multiplicación por si mismo sería una potenciación o como se llame.
Entonces, para evitar repeticiones de métodos tengo que:
A- Evitar que se generen repeticiones que sean simplemente una suma/multiplicación de un valor que no cambiará en la repetición (o como se diga, se supone que uds entienden mejor que yo a qué me refiero en esto (*)).
B- Evitar que haya sumas y evitar multiplicaciones por si mismo.

La opción A parece mejor, pero es más fácil decirlo que hacerlo.

(*): Ni siquiera tendría que explicarlo, pero bue, por las dudas.
Esto habría que evitarlo:
Repeticiones = 0
Repetir
   C = C+V
   Repeticiones = Repeticiones+1
hasta que Repeticiones == 3

Porque basta con decir
C2 = V*F (F sería 3).
C = C+C2

Y esto también habría que evitarlo:
Repeticiones = 0
Repetir
   C = C*V
   Repeticiones = Repeticiones+1
hasta que Repeticiones == 3

Porque basta con decir
C2 = V^F (F sería 3).
C = C*V

¿no?

Si C es 2 y V es 3.
Usando el método repetición: 2*3*3*3 = 54
El método reducido: 3^3*2 = 27*2 = 54

Ahora bien, si "el valor cambia", así:
Repeticiones = 0
Repetir
   C = C*C
   Repeticiones = Repeticiones+1
hasta que Repeticiones == 3

Entonces resultaría... 3*3... 9*9... 27*27
que no sería lo mismo que C^3

------------------------------------------------------------------------------------------------

El programa genera tonterías y repeticiones a partir de la 3era línea (o quizá la 2nda, no sé tanto).

Y no sé bien cómo evitar esto. Es más o menos el mismo problema de usar expresiones normales (las ecuaciones pudiendo tener más de una operación por línea).

Por ejemplo:
C = V+F
C = C+V
C = C+V

¿Cómo lo evito?

Si digo "no pongas C = C+V en la 3era línea", entonces no se podría generar esto:
C = V+F
C = C*V
C = C+V
que estaría bien, creo..

Si digo "si la línea anterior es C = C+V entonces no pongas C = C+V", podría ser... pero no quisiera tener que poner este tipo de excepciones...

Si ni siquiera sé cuales son. Y a medida que agregue más opciones van a ser más.

------------------------------------------------------------------------------------------------

¿Por qué Fs en vez de números?
Véase para qué hago esto, mencionado en "El programa aún no genera métodos que contengan F2 o "mayores"."

Entonces, ver en pantalla cosas como esto:
1:
C = V^V*F/(F+V)

2:
C = V^V*F/(F*V)

...me resulta más útil que esto:

1:
C = V^V*2/(3+V)

2:
C = V^V*2/(4+V)

...creo. Porque los valores a los Fs más o menos los puedo averiguar una vez que tenga "la estructura", los relacionamientos, la ecuación o como se llame, pero esas cosas me es más complicado, intento que l@s genere el programa.

------------------------------------------------------------------------------------------------

El programa muestra los resultados siempre en el mismo orden.

Lo cual a la larga me puede resultar aburrido, pero por ahora, considerando lo complicado que es todo esto, no tiene sentido complicarme en que haya azar a la vez que se eviten las repeticiones.

Los resultados es como si fuesen números. Pero en vez de 1, 2... 10, 11, etc, son LíneaA1, LíneaA2... LíneaA1 y LíneaB1, LíneaA1 y LíneaB2, etc.

------------------------------------------------------------------------------------------------

Este es el código del programa:

Escena 1
   actions for fotograma 1
      Mod1 = "C = V+F;\n";
      Mod2 = "C = V*F;\n";
      Mod3 = "C = F/V;\n";
      Mod4 = "C = Math.pow ( V, V );\n";
      Mod5 = "C = Math.pow ( V, F );\n";
      Mod6 = "C = Math.pow ( F, V );\n";
      // 2nda línea.
      Mod7 = "C = C+V;\n";
      Mod8 = "C = C+F;\n";
      Mod9 = "C = C*V;\n";
      Mod10 = "C = C*F;\n";
      Mod11 = "C = V/C;\n";
      Mod12 = "C = F/C;\n";
      Mod13 = "C = Math.pow ( C, C );\n";
      Mod14 = "C = Math.pow ( C, V );\n";
      Mod15 = "C = Math.pow ( V, C );\n";
      Mod16 = "C = Math.pow ( C, F );\n";
      Mod17 = "C = Math.pow ( F, C );\n";
      Line1ID = 0;
      Lines = 1;
      Resp = "";
   actions for fotograma 2
      C = "";
      Cursor = Lines;
   actions for fotograma 3
      Line_Cursor_ID = "Line"+Cursor+"ID";
      EvaledxLine_Cursor_IDxPlus1 = eval(Line_Cursor_ID)+1;
      // Línea lista para modificarse.
   actions for fotograma 4
      if (Cursor>1) {
         if (EvaledxLine_Cursor_IDxPlus1<18) {
            // Línea puede cambiar.
            set (Line_Cursor_ID, EvaledxLine_Cursor_IDxPlus1);
            // Línea cambia.
            // Hay que actualizar C.
         } else {
            // La línea no puede cambiar, no hay más posibilidades para ella.
            set (Line_Cursor_ID, 7);
            Cursor = Cursor-1;
            // Hay que modificar la línea anterior.
            gotoAndPlay (3);
         }
      } else if (EvaledxLine_Cursor_IDxPlus1<7) {
         // Línea 1 puede cambiar.
         set (Line_Cursor_ID, EvaledxLine_Cursor_IDxPlus1);
         // Línea cambia.
         // Hay que actualizar C.
      } else {
         // La línea 1 no puede cambiar, no hay más posibilidades para ella.
         set (Line_Cursor_ID, 1);
         // Hay que agregar una línea.
         Lines = Lines+1;
         set ("Line"+Lines+"ID", 7);
         // Hay que actualizar C.
      }
   actions for fotograma 5
      // Actualizar C.
      C = "";
      Cursor = Lines;
   actions for fotograma 6
      C = eval("Mod"+eval("Line"+Cursor+"ID"))+C;
      Cursor = Cursor-1;
   actions for fotograma 7
      if (Cursor>0) {
         // Continuar actualizando líneas.
         gotoAndPlay (6);
      } else {
         // Listo, mostrar en pantalla y crear otras instrucciones.
         Resp = C+"\n"+Resp;
         gotoAndPlay (2);
      }

Como mencioné arriba en la parte de no azar, el funcionamiento es análogo a como varía un número. La 1era unidad (lo que por ejemplo sería 2 en 2333) correspondería al contenido de la 1era línea, y así sucesivamente. Y al igual que los números, el último (izquierda en los números, abajo en cuanto a líneas) es el 1ero que varía (si hablamos de enteros y le estamos sumando 1), los demás varían cuando el posterior supera su máximo valor, momento en el que se resetea. Cuando a 19 se le suna 1 el 9 pasa a 0 y el 1 aumenta a 2. 20.
Acá es un poco más complejo porque el 1er valor va de 1 a 6 creo, y los demás de 7 a 17.

El código digamos que tiene 2 partes.

Desde el frame 1 hasta el 4 se modifican los IDs de las líneas, es decir, se aumenta el valor, como si fuesen números y como ya expliqué.

En los frames posteriores ese ID es usado para asignar a la línea el contenido que marque la correspondiente variable "Mod", definidas al inicio.

------------------------------------------------------------------------------------------------

Gracias.

11
Foro general / ¿Cómo hallar el exponente en una ecuación?
« en: 15 Septiembre, 2016, 02:36 am »
Acabo de ver 3 videos y ninguno me aclaró.

Supongamos que tengo 2^X=32. Supongo que haciendo:
Código: [Seleccionar]
Resultado = 32
Base = 2
Exponente = 1
Repetir:
   Resultado = Resultado/2
   Exponente = Exponente+1
Mientras que Resultado > Base
...lo hallaría. Pero quiero saber una forma más rápida y posiblemente exacta de hacerlo. En este video:
https://www.youtube.com/watch?v=-1yykqXOgDE
...el youtuber no halla el exponente, sólo llega a plantearla con logaritmos niperianos que no sé qué son. Buscaré porque quiero saber cómo funciona eso, no quiero simplemente usar una operación en una calculadora o lo que sea, sin saber cómo funciona dicha operación. Recuerdo que me fastidié en algunos ejercicios de física porque enseñaban a resolverlos con calculadora científica (que yo no tenía), no de la forma natural.

Este es un subtema en el otro tema que hice y que está activo, lamento la repetición, pero esto es una duda mucho más concreta.

Gracias.

12
Foro general / ¿Cómo averiguar una relación entre X e Y?
« en: 11 Septiembre, 2016, 10:17 am »
Edit:
Creo que me confundí, no necesito esto, necesitaría un programa que haga códigos que al ejecutarse logren la relación, o sea, simplemente obtener la relación no me sirve.


Hace años intenté hacer un programa que averiguara una relación entre X e Y, habiendo descrito ciertos X e Y...
Ejemplo:
X___Y
1___2
2___3
Una relación: Y = X+1
...dejé el proyecto cuando me enteré de un programa llamado Eureka - Formulize, que lo hace. Sin embargo ahora quiero hacerlo por motivos que no pueden satisfacerse usando Eureka, y quiero agregar algunas cosas también (ejemplo: Contar la cantidad de "1"s que tiene el número), y se me complica así que quiero pedirles ayuda. La pregunta es, dada una estructura como la que mencioné (o más larga) ¿cómo averiguar una relación que sirva para dicha estructura?

Tengo esta idea:
Si todo X es igual a todo Y, entonces Y=X
Sino...
Si Y-X siempre da el mismo resultado (R), entonces Y=X+R
Sino...
Si Y/X siempre da el mismo resultado (R), entonces Y=X*R
Sino...

Ahora quisiera hacer algo así para relaciones de tipo Y=X^R, supongo que sería:
Si haciendo raíces cuadradas a X se llega hasta Y en todo caso, y en todo caso requiere la misma cantidad (C) de raíces cuadradas, entonces Y=X^C
...pero bueno, no sólo me hace falta la función en programación para que se haga eso (es offtopic, pero lo menciono por si alguien lo sabe), sino que además no sé hacer operaciones como X^C cuando C es negativo y/o decimal. Me han dicho que se hace raíces cuadradas pero no lo entendí bien.

------------------------------------------------------------------------

Sobre otro método (2).

Sería más digamos de búsqueda por fuera bruta, pero como me da la sensación de que la búsqueda sería demasiado larga estoy pensando en agregar un poco de deducción, pero parece llevame al método anterior...

Ejemplo (sin deducciones):
Probar X+1
Si falla, probar X+2 Si falla, probar X*2 ... X^2
... (X+1)*2 ... (X+1)^2
etc

1 operación, usando el número 1.
1 operación, usando el número 2.
2 operaciones, usando 1 y 2.
1 operación, usando el número 3.
2 operaciones, usando 2 y 1.
3 operaciones, usando 1, 2 y 2.
etc
o algo más simple si eso me resulta complicado.

También es que poner algo de razonamiento es necesario, porque en los ejemplos he estado salteando casos de números decimales, que podrían ser lo que se busca.

------------------------------------------------------------------------

Sobre otro método (3).

Se me acaba de ocurrir, ir agregando operaciones cada vez que falla, ejemplo:
Probar Y=X
Si falla, probar agregarle +A o *A o ^A
... +B o ()*B o ()^B
Crear otra relación (2), usando la 2nda línea, con un A diferente.
etc
Nota: () significa meter entre paréntesis a lo que había.
Nota2: Ciertas combinaciones no se harían, por ejemplo X+A+B

Relación 1 tiene 0 operaciones
Relación 1 tiene 1 operación
Relación 1 tiene 2 operaciones
Relación 2 tiene 1 operación
Relación 1 tiene 3 operaciones
Relación 2 tiene 2 operaciones
Relación 3 tiene 1 operación
etc

La ventaja que me parece posible que tenga es que sería más fácil de hacer, no requeriría razonamientos. La desventaja seguiría siendo más o menos la misma, quizá un poco menos, y que la ecuación se volvería muy larga, pero se podría poner algunos "razonamientos" para intentar simplificarla.

------------------------------------------------------------------------

Sobre otro método (4).

Te escucho.

------------------------------------------------------------------------

Gracias.

13
Foro general / Cómo convertir un número en letras.
« en: 12 Mayo, 2016, 07:54 am »
Hace tiempo me dieron una solución pero no pude entenderla. Recientemente intenté idear una propia y aunque avancé, no he podido completarla.

Para no complicarme, las letras son por ahora sólo A y B, ninguna más. Y es lo mismo decir 0 y 1, pero puede haber 0s delante (por eso la conversión común "decimal a binario" no sirve). A continuación pongo ejemplos de cómo debe ser la conversión:
Número____Conversión
0_________0
1_________1
2_________00
3_________01
4_________10
5_________11
6_________000
13________111
etc

Este código traduce bien hasta el 5:
Código: [Seleccionar]
if (N<2) {
    NTrad = Tx.charAt(N);
} else if (N<6) {
    N1 = Math.floor(N/2)-1;
    N2 = N-(N1+1)*2;
    NTrad = Tx.charAt(N1)+Tx.charAt(N2);
}
Lo de "Tx.char..." es para convertir el 0 o 1 en A o B, pueden obviarlo. Lo demás se entiende ¿no?
Si el número a traducir es menor que 2, la traducción es igual al número.
Sino, si es menor que 5, el 1er número es (ver N1) y el 2ndo es (ver N2).
¿Cómo funciona?
No sé explicarlo bien pero, el número de delante vale doble, básicamente. un ejemplo más avanzado:
12________110
12 = (N1+1)*4 + (N2+1)*2 + N3
Puede que ayude verlo de forma inversa:
Conversión____Número
0____________0
1____________1
00___________2
Cuando hay un número delante significa que vale igual que todas las posibilidades que había sin él. Como 10 vale 0, 1, 2... 9, o sea 10 posibilidades.

Para siguientes casos (hasta cierto punto) pensé que esto serviría:
Código: [Seleccionar]
if (N<2) {
    NTrad = Tx.charAt(N);
} else if (N<6) {
    N1 = Math.floor(N/2)-1;
    N2 = N-(N1+1)*2;
    NTrad = Tx.charAt(N1)+Tx.charAt(N2);
} else if (N<14) {
    N1 = Math.floor(N/4)-1;
    NRestante = N - (N1+1)*4;
    N2 = Math.floor(NRestante/2)-1;
    N3 = NRestante-(N2+1)*2;
}
Ni siquiera lo probé, pasé directamente a otra cosa, pero me equivoqué, no sirve.
Si N es 8, el resultado debería ser 010, pero con esto resulta:
N1 = Math.floor(8/4)-1 = Math.floor(2)-1 = 2-1 = 1
Debería ser 1.

¿Cual sería entonces la fórmula de N1? Aparentemente, en vez de dividir por 4 habría que dividir entre 10, y no habría necesidad de restar 1. Y en el caso de N<66, habría que dividir entre 4 (también sin necesidad de restar 1). Ahora, claro, la pregunta: ¿Por qué esos números? Quiero saber eso porque quiero programar que se averiguen, no ponerlos yo luego de muchas pruebas.

El código que tengo (intentando una solución que sirva para cualquier caso) es este:
Código: [Seleccionar]
Escena 1
   actions for fotograma 1
      Tx = "AB";
      N = -1;
   actions for fotograma 2
      N = N+1;
      trace ("Traduciendo "+N+"...");
      NTrad = "";
   actions for fotograma 3
      if (N<2) {
         NTrad = Tx.charAt(N);
         trace (N+" es "+NTrad);
         gotoAndPlay (2);
      }
   actions for fotograma 4
      Cifras = 1;
      Numsconcifras = Math.pow(2, Cifras);
      Numshastacifras = Numsconcifras;
      NRestante = N;
   actions for fotograma 5
      Cifras = Cifras+1;
      Numsconcifras = Math.pow(2, Cifras);
      Numshastacifras = Numshastacifras+Numsconcifras;
      trace ("Cifras es "+Cifras);
      trace ("Numsconcifras es "+Numsconcifras);
      trace ("Numshastacifras es "+Numshastacifras);
   actions for fotograma 6
      if (NRestante>=Numshastacifras) {
         gotoAndPlay (5);
         trace (N+" tiene más de "+Cifras+" cifras.");
      }
   actions for fotograma 7
      trace ("Frame 7");
      trace ("NRestante es "+NRestante);
      trace ("Numsconcifras es "+Numsconcifras);
      NewNum = Math.floor(NRestante/(Numsconcifras/2))-1;
      trace ("NewNum es "+NewNum);
      NTrad = NTrad+Tx.charAt(NewNum);
      NRestante = NRestante-(NewNum+1)*(Numsconcifras/2);
      trace ("NRestante es "+NRestante);
      if (NRestante<2) {
         NTrad = NTrad+Tx.charAt(NRestante);
         trace (N+" es "+NTrad);
         gotoAndPlay (2);
      }
   actions for fotograma 8
      Numsconcifras = Numsconcifras/2;
      gotoAndPlay (7);
No es importante en este tema, sólo digo que mi idea era dividir entre Numsconcifras/2, o sea 2, 4, 8, etc. No 4, 10 y no sé qué otros números, que no entiendo bien de dónde saldrían.
¿Por qué 4 y 10? ¿y cual es el próximo y sucesivamente?

Gracias.

14
Esto es común en programación, creo, pero va más allá: No hay que saber programación para responder esto, sino matemática.

Imaginen que tenemos un plano, que es como una gráfica, en el sentido de que tiene x e y. Hay una línea, que puede ser la gráfica en sí, y se nos dice que hay un punto en xy (se nos da el valor de cada uno, y también de la línea), y se nos pregunta si está o no en la línea. Normalmente miraríamos la gráfica, lo ubicaríamos, y listo, pero digamos que tenemos que explicarlo.

Acá tengo un programa que simula la cuestión, pero algo falla.
https://dl.dropboxusercontent.com/u/169164922/Punto%20y%20recta2.swf
Debería decir false cuando el punto no esté en la línea y true cuando sí. La línea cuando se agranda o achica se ve un poco mal, pero eso no importa. La cuestión es que, por lo visto falla cuando la línea empieza en puntos mayores que 0, y creo que también cuando el punto está exactamente donde empieza.

Bueno, uds podrían decirme un método para detectar si el punto está en la línea, pero soy durísimo para entender (ya me han mencionado la pendiente y una ecuación pero no entiendo de dónde sale ni por qué funciona) así que mejor ayúdenme con mi método.

Código: [Seleccionar]
if (Recta._x <= Punto._x && RectaXfin >= Punto._x) {
      if (Recta._y <= Punto._y && RectaYfin >= Punto._y) {
         Porce = Punto._x*100/(Recta._x+RectaXfin);
         if (RectaYfin*Porce/100+Recta._y == Punto._y) {
            Colision = true;
         }
      }
   }
}
Dice: Si el x del inicio de la recta (viendo desde la izquierda) es anterior que el x del punto, y si el x final de la recta es posterior al x del punto, entonces la línea está entre la distancia x de la recta. O dicho de otro modo, el punto no está en el área roja ni en la verde:

Luego dice lo mismo pero para la y, descartando entonces las áreas azul y amarilla, o sea, si se cumplen las 4 condiciones significa que el punto está en el área blanca.
Nota: La y tiene los valores al revés de lo normal, o sea crece hacia abajo.
Bueno, si se cumplen las 4 condiciones entonces lo que he pensado es ver su punto x, ver ese mismo x en la línea, ver cual es su y, y luego compararlo con el y del punto.
Supongamos que la línea empieza en 0,0 y llega hasta 100,100. Y el punto está en 50,50. ¿Qué y tiene el x 50 de la línea? Intuyo que 50, pero hay que ver por qué.
Cuando x es 0, y es 0.
Cuando x es 100, y es 100.
y=x, o y=100% de x.
¿Cómo se llega a saber que es 100%?
x - 100%
y - ??
O sea: y*100/x
En un caso: 0*100/0, no me da 100...  :P
En el otro: 100*100/100=100.
Sabiendo que y es el 100% de x, si decimos que x es 50...
50 - 100%
?? - 100%
50*100/100=50
O sea, el y de la línea, en el x 50, sería 50.
Cuando en el código pongo:
Porce = Punto._x*100/(Recta._x+RectaXfin);
Punto._x sería el 50 que dije, ese punto x que en la línea vamos a ver qué y tiene. Es como si trazáramos una línea que pase por el punto x verticalmente y choque entonces con un punto x de la línea. Vamos a ver qué y tiene ese punto.
...
En realidad veo que el método que estoy describiendo no es el mismo que usé. Disculpen, les dejo esto que había escrito:
http://sofosagora.net/offtopic-general/deteccion-colisiones-t6818.html#p142370

Intentaré dejarme y dejarles las cosas más claras, pero si ya alguno puede ayudarme bienvenido sea. Quisiera usar porcentajes que es lo que entiendo (más o menos, según se ha visto u.u ), no pendientes ni cosas más avanzadas que evidentemente menos entiendo.

Gracias.

15
Se genera un código binario "al azar", de 2 dígitos. 00, 01, 10 o 11. El juego consiste en adivinarlo basándose en las pistas que se dan luego de cada intento. La máquina u otro jugador dice si el código es correcto, si hay un número bien ubicado, o nada.

Según mis cálculos, sin tener mucha idea de cómo se calcula, si elijo 00 o 11 tengo:
- 25% de chance de acertar.
- 50% de chance de no recibir pista (lo cual paradojcamente es la mejor pista: Si 00 no es ni tiene algún número bien colocado, entonces sé que es el contrario, 11).
- 25% de chance de que un número esté bien ubicado. En cuyo caso, luego tengo 50% de chance de acertarlo, y 50% no.

Uniendo todo esto, tengo:
- 25% de acertar en 1 intento.
- 62.5% de acertar en 2 intentos.
- 12.5% de acertar en 3 intentos.

¿Digo bien? No sé ni cómo lo calculo, lo hago intuitivamente, corrijanme y enseñenme si lo hago mal.

---

La otra opción al jugar es iniciar con 01 o 10:
- 25% de acertar.
- 25% de ningún número bien colocado, luego es deducible que es el contrario (10 si puse 01 y vicecersa).
- 50% de acertar uno. Luego tengo 2 opciones y en ambas tengo 50% de acertar en 1 intento y 50% de en 2.

Entonces:
25% acertar en 1 intento.
50% acertar en 2.
25% acertar en 3.

---

Como dije en el título, el juego está simplificado. El original no sé cómo es realmente y no importa, es sabido que puede simplificarse o complicarse. Yo lo simplifiqué porque no me siento bien preparado para otros casos. Si gustan iré planteando más, pero por ahora quiero ver si voy bien.

Gracias.

16
Foro general / Diferencia entre uds y la fuerza bruta?
« en: 12 Marzo, 2016, 03:21 am »
No creo que sean iguales, pero no sé si alguna vez tuve las diferencias suficientemente claras como para decirlas. Quisiera comprenderlas mejor, que me las digan.

Fuerza bruta por lo que tengo entendido es probar cosas que no se sabe si sirven o no, hasta confirmar que una sirve o hasta un límite especificado, en cuyo caso el problema no se resuelve.
Por ejemplo para hallar X en X+6=38 se podría probar X con valor 1, si no sirve con 2, y así sucesivamente. Como dije se puede poner un límite, por ejemplo 38.

Uds usan métodos más inteligentes, aunque básicamente entre más complejo sea el problema más suposiciones hacen, que les pueden llevar a errores. En el caso de la ecuación suponen que 38-6=X.

Estoy investigando los tipos de problema, como pueden ver aquí:
http://www.forosdelweb.com/f14/clasificacion-problemas-segun-metodo-solucion-1148298/

Hago este tema por si saben algo de eso o me pueden decir algo que me sirva.

Gracias.

17
Lo googlé y luego de ver algunos videos terminé viendo "Experimentos en casa" y ya no quiero seguir buscando, además no es la 1era vez que busco en vano. Por eso acudo a un foro: ¿Hay alguna forma sencilla y sin compás?

Gracias.

18
Foro general / Cambio de base modificado: ¿cómo funciona?.
« en: 22 Diciembre, 2015, 05:26 am »
La idea es transformar un número decimal a otra forma de numeración. No es simplemente otra base (como 2 o "pasar a binario" por ejemplo), si la base fuese 2 así serían las transformación en mi sistema:
Número decimal____________Transformación
1________________________1
2________________________2
3________________________11
4________________________12
5________________________21
6________________________22
7________________________111
8________________________112
9________________________121
10_______________________122
etc.
Si en vez de ser 1 y 2 fuese 0 y 1, entonces habría casos con 0s delante. Con el método más conocido de transformación no sucede así, por eso esta es otro tipo de transformación.

Bueno, me han dado y explicado un código que por lo visto lo resuelve; les paso el original (python 3 dice) y luego un pseudo:
Código: [Seleccionar]
import math
N=int(input("Introduzca numero:"))
B=int(input("Introduzca base numerica:"))
C=0
while N>=B**C:
    N = N - B**C
    C+=1
lista=[]
print(N,C)
while N>0:
    lista.insert(0,N%B)
    N=N//B
lista=[0]*(C-len(lista)) + lista
print(lista)
N es el número decimal a traducir.
B es la base a la que traducir (nro de símbolos).
C es un contador que inicia en 0
Repetir mientras que el número sea mayor o igual a la cantidad de números generables con C cifras, lo cual se calcula haciendo B^C y en este caso es 1.
____A N, o sea al número a traducir, lle restamos B^C.
____C aumenta 1.
Fin de la repetición.
Creamos una lista vacía.
Mostramos N y C en pantalla (esto creo que es innecesario, no sé si print hace algo extra).
Comentario: Ahora inicia el método normal de transformación.
Repetir mientras el número que nos quedó sea mayor que 0
____Al inicio de la lista, colocamos el resto que nos da N/B.
____N pasa a ser el resultado de N/B, convertido a entero.
Fin del mientras.
En la lista, por delante, colocamos X cantidad de 0s, donde X es C-el largo de la lista.

También lo he traducido a mi lenguaje favorito, pero, aunque entiendo el código (supongo...) no entiendo por qué funciona, cómo es posible que funcione, cual es la lógica, el mecanismo, el método, matemática subyacente, lo que sea. Quisiera que me lo expliquen.

Primero se averigua cuántas cifras tendrá el número. Eso se hace con el 1er while, no entiendo por qué se cuenta el caso de 0 cifras pero lo básico ya está. Si por ejemplo quiero traducir el 7 a base 2 tengo que 2^0 es 1 y por tanto menor que 7, así que podemos deducir que la traducción tendrá más de 0 dígitos (es obvio pero estoy haciendo lo que me dijeron, cuando lo entienda mejor veré si se puede mejorar). 2^1 es 2 y le sumamos el 1 que teníamos, lo cual nos da 3, que sigue siendo menor que 7 por lo que ahora deducimos que la trad tendrá más de 1 cifra. 2^2 es 4 y sumado al 3 nos da 7, así que seguimos, "mientras 7 >= la cantidad de números posibles con C cifras"; deducimos que la trad tendrá más de 2 cifras. 2^3 es 8 que sumado con 7 nos da 15, así que ahora sí paramos, deducimos que la traducción tendrá 3 cifras.
La fórmula B^C puede comprobarse más o menos así:

Números que pueden formarse con 2 símbolos y 0 dígitos:
? Supuestamente es 1, no sé mucho de esto.
1, o sea 2^0

Números que pueden formarse con 2 símbolos y 1 dígito:
1, 2
2, o sea 2^1

Números que pueden formarse con 2 símbolos y 2 dígitos:
11, 12, 21, 22
4, o sea 2^2

O sea... si uno hace una lista lo puede ver mejor, fíjense por ejemplo la que mostré al inicio, si el número a traducir es 7 sabemos que tendrá 3 cifras porque es igual o menor que 2^0 + 2^1 + 2^2. Yo no tengo mucha idea, casi que me parece magia, pero en fin, es lo que puedo explicar o decir por ahora.

La segunda parte o segundo while, hace una traducción común y corriente. Simplemente no entiendo por qué al inicio no funciona y luego sí. Ojo, en realidad acá traduce la diferencia entre:
2^0 + 2^1 + 2^2 o hasta donde corresponda
y N.
En el caso de que N sea 7 la diferencia es 0, así que el while no se hace. Si se hace entonces los restos (ver método común (*)), se agregan a la lista.
(*): https://www.youtube.com/watch?v=xC6snIf0feg

Al final, agrega X 0s delante donde X es C-el largo de la lista. Eso tampoco entiendo bien por qué funciona.

En fin, gracias.

19
Foro general / Serie de Fibonacci.
« en: 03 Diciembre, 2015, 12:52 am »
El siguiente número es la suma de los dos anteriores, comenzando por 1 y 1.

Si quisiera programar esto, usaría al menos 2 variables, el número anterior y el más reciente.

¿Hay alguna forma de hacerlo sólo mediante 1 variable? Un cálculo sería necesario. La duda, dicho de otro modo, es si hay una relación entre el nro (en el sentido de un eje de X) y su valor, algo así:
nro del nro o valor____valor
1__________________1
2__________________1
3__________________2
4__________________3
5__________________5
6__________________8
Los 2 1eros casos podrían obviarse.

------------------------------------------------------------------------

Ahora, otra cuestión. Supongan que en vez de sumar el último número, fuese sumar los últimos 20, o cualquier cantidad que les parezca mucho. Mi duda en este caso es más o menos similar ¿se puede programar esto usando menos de 20 variables? Tengo cierta idea pero la he estado pensando y como no he podido llegar a mucho ya estoy casi rendido, pero por eso recurriré a uds, me gustaría al menos ver una explicación de por qué es imposible. La idea en cuestión es que en vez de tener 20 variables podría tener la suma de ellas y para calcular el siguiente número le haría *2-X, donde X sería el número que ya no se sumará, el que ha quedado 21 números atrás.
¿Pero se puede calcular X? Parece que es una "solución" que en cierto punto choca con el mismo problema que intenta solucionar...

------------------------------------------------------------------------

Última cuestión, al menos por ahora.

Tengo un programa que obtiene el siguiente número de la serie, y chequea si cumple una condición. Repite este proceso hasta que algún número la cumple.
Tengo otro programa que obtiene la siguiente combinación de letras mayúsculas, así: 1ero "A", luego "B"... "Z", "AA". Chequea a si la combinación cumple una condición. Repite el proceso hasta hallar una que la cumpla.

Quisiera combinarlos. O sea, hacer que en vez de mostrarme "A", "B", "C", "D", etc, es decir lo que sería 1, 2, 3, 4, etc, me mostrara las "letras" que se corresponderían con la serie de Fibonacci: "A", "B", "C", "E"... como ven se ha salteado la D, que sería el 4.
"AA" = 27

Comprendo que el problema pueda, quizá, estar fuera del campo de un matemático, pero no sé, es cuestión de lógica y de trabajar con números, eso es lo que hace un matemático. Creo que está relacionado con esto
https://es.wikipedia.org/wiki/Sistema_hexadecimal
pero en vez de ser 16 dígitos son 27.

Les muestro los códigos de los programas:

Obtiene el siguiente número de la serie, y chequea si cumple una condición. Repite este proceso hasta que algún número la cumple:
Código: [Seleccionar]
// Elementos candidatos: Desde 1 y 1, Suma.
E_Anterior = 1;
E = 1;
// Otros elementos:
Resp = "";

// Análisis:
if (E > 10) {
    Resp = "Un elemento que cumple la condición es el "+E+"\n"+Resp;
    stop ();
}

Resp = "El elemento "+E+" no cumple la condición.\n"+Resp;
E = E_Anterior + E;
E_Anterior = E - E_Anterior;
gotoAndPlay (2);

obtiene la siguiente combinación de letras mayúsculas, así: 1ero "A", luego "B"... "Z", "AA". Chequea a si la combinación cumple una condición. Repite el proceso hasta hallar una que la cumpla.
Código: [Seleccionar]
// Elementos candidatos: Desde A, +1.
E = "A";
// Otros elementos:
Data = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
Char0ID = 0;
CursorMaxPos = 0;

// Anali:
if (E == "OK") {
    Resp = "Un elemento que cumple la condición es el "+E+"\n"+Resp;
    stop ();
}

Resp = "El elemento "+E+" no cumple la condición.\n"+Resp;
Cursor = 0;
E = "";

Resu = "Char"+Cursor+"ID";
EvaledResu = eval(Resu)+1;

if (EvaledResu < 27) {
    set (Resu, EvaledResu);
    // Agrega caracter.
    E = Data.charAt(EvaledResu)+E;
    Cursor = Cursor+1;
    if (Cursor > CursorMaxPos) {
        // Todos agregados.
        gotoAndPlay (2);
    } else {
        // Volverá a agregar.
    }
} else {
    // El char a agregar está fuera del límite.
    set (Resu, 0);
    E = E+Data.charAt(0);
    Cursor = Cursor+1;
    if (Cursor > CursorMaxPos) {
        // Hay que agregar uno.
        CursorMaxPos = CursorMaxPos+1;
        set ("Char"+CursorMaxPos+"ID", 0);
        E = E+Data.charAt(0);
        gotoAndPlay (2);
    } else {
        // Hay que aumentar/agregar uno.
        gotoAndPlay (4);
    }
}

Resu = "Char"+Cursor+"ID";
EvaledResu = eval(Resu);
gotoAndPlay (5);

20
Foro general / Características de un número?
« en: 01 Noviembre, 2015, 07:32 am »
Quisiera leer alguna más que no se me ocurra.

Un número puede tener...
- Adecuación o no, a ser X en una ecuación o inecuación.

¿Esa engloba todas, acaso he dicho un "sinónimo" nada más?

X = ...
- Positivo, negativo o neutro.
- Entero o decimal.
- Primo o no primo.
- Simético (ej: 1551, 1234321) o asimétrico.
- Y variedad de números (ej si Y es 3: 123, 9992993).
- La suma de sus números.

¿Alguna otra que sepan o se les ocurra?
Exceptuando variaciones a la operación de la última (es evidente que en vez de "suma" puede ser "multiplicación"; potencia se podría aplicar de 2 modos... otras no sé si tienen sentido).

¿Qué hay de fondo en los 4 últimos puntos (o conjuntos)? ¿se podrá decir un punto que abarque esos y otros que no imaginé?

Sobre el 3er punto:
Ser primo es cuando al ser dividido por cualquier número menor que él, entero y mayor que 1 da un resto mayor que 0 ¿no?
Bueno ¿no puede haber algo similar a esto? Por ejemplo así:
"Ser ?es cuando al ser dividido por cualquier número menor que él, entero y mayor que 1 da un resto mayor que Y"
¿Ya existe en mates, tiene un nombre? Es una forma ampliada de expresar lo que es un primo, va más allá de los primos obviamente, pero esa definición tiene la misma estructura que la de los primos, me refiero a eso.
También se podrían modificar los otros términos...?
"Ser ?es cuando al ser dividido por cualquier número mayor que él, entero y mayor que 1 da un resto mayor que Y"
¿?

Sobre el 6to punto:
En vez de decir la suma de sus números podríamos decir de qué números (por ejemplo su número 1 y el 3, pero no el 2; en este caso los que tienen una posición impar), y la operación podría variar en cada uno ¿cómo expresar esto? Se me ocurre:
X = X1+X2*X3
Es decir, X es cualquier número que al multiplicar su parte 3 con su 2 y luego sumarle la 1, es igual a si mismo.
No sé con qué fórmula se calcularía eso xD ni si es posible en este caso o en alguno, pero bueno, fue sólo un ejemplo, supongo que hay operaciones de este tipo que sí tienen un X posible.

Gracias.

Páginas: [1] 2 3