« first day (1430 days earlier)      last day (1682 days later) » 

8:38 AM
Buenos días por la mañana
 
8:55 AM
@LucasDamian Vaya si lo he notado! A principios de año no estuvo, luego volvió hacia primavera-verano y ahora parece que no está otra vez. Cuando se va, nos deja a Mauricio y a mi prácticamente "solos ante el peligro" :-)
Pero cuando está, no nos deja ni una :-)
 
9:51 AM
@abulafia Vaya, no sabía que era parte de algún dúo dinámico, espero no ser el joven maravilla, ya que se dicen cosas muy raras de él. XDDD
 
10:02 AM
@MauricioContreras jaja. No, pero es cierto que somos pocos los que solíamos responder en la etiqueta python, y que tus respuestas y las de FJSevilla son siempre de alta calidad. Si he observado, de septiembre a acá, algunos colaboradores nuevos que también dan muy buenas respuestas
 
@abulafia Recuerdo haber respondido 1 sola pregunta con la etiqueta Python, gracias por lo de buena calidad
 
10:20 AM
huy, tienes razón! me había liado porque tú y yo también solemos estar solos ante el peligro pero en otro frente, que es el chat los fines de semana XD
a quien quería referirme era a Patricio Moracho! pero tu respuesta también fue buena, eh? XXD
 
@abulafia XDD, gracias por la comparación con el gran Patricio. Al menos ambos tenemos un nombre que termina en ricio.
 
@MauricioContreras Pues seguro que por eso lo lié XD
 
 
2 hours later…
12:29 PM
Como no hay mucha actividad python hoy y me aburro, he empezado a responder de javascript :-)
 
@abulafia +1
 
 
4 hours later…
4:55 PM
@abulafia @abulafia +1
jaja muy bien
 
5:29 PM
@IsraelGonzález hey, veo que te ayudaron con el problema de los sumandos
 
@MauricioContreras que tal amigo
si y mejoro el enfoque de la solucion
pero igual el tiempo del algoritmo es muy alto
 
@IsraelGonzález Yo sigo pensando que el problema es NP
 
@abulafia que es np
 
Pues una familia de problemas que no se puede resolver en tiempo polinomial. O dicho de otra forma, que en ellos el tiempo que se necesita para resolverlos crece exponencialmente a medida que el tamaño de la entrada es más grande
en tu caso, que si para encontrar la solución para un número N tarda 1 segundo, para el número 2N no tarda 2 segundos, sino quizás 4. A medida que crece N, el tiempo crece, pero a un ritmo mucho mayor (2^N por ejemplo).
Este tipo de problemas son por desgracia muy comunes en el mundo de la computación. Lo de P/NP es una forma de medir la complejidad de un problema
generalmente los problemas NP son aquellos en los que buscas una solución óptima bajo algún criterio (en tu caso el cirterio era que el producto sea lo mayor posible), y en los que no es posible encontrar un algoritmo que "ataje", sino que la única forma de dar con el óptimo es examinar (casi) todos los casos posibles
 
5:38 PM
Por ejemplo, un problema NP que me recuerda mucho al que tú planteaste es el problema de "la mochila". Tienes una mochila con capacidad máxima para llevar, digamos 20Kg. Y tienes un montón de objetos, cada uno de ellos con un peso y con un valor. El problema es rellenar la mochila con todos los objetos que puedas, de forma que el valor de lo transportado sea el máximo posible (sin pasarse del peso de 20Kg)
 
entiendo
 
Este problema de la mochila ha sido ya muy estudiado y se ha demostrado que es NP
si tu problema se pudiera transformar en el de la mochila, también sería NP (y tiene toda la pinta de ser equivalente)
y si lo es, abandona la esperanza de dar con un algoritmo eficiente para resolverlo
 
ahora estaba haciendo otro
de fibonnasi numbers
dime que piensas tu
te dan un numero n y tienes que decir verdadero o falso si es producto de numeros de fibonasi consecutivos
ej: 4895 es true pq 55, 89 = 4895
ok eso esta facil se puede hacer a fuerza bruta
el problema es el siguiente
tienes q devolver [55, 89, true]
o si es false [n, n+1, false] en el momento que se pase
 
@IsraelGonzález De dos números sólo, o de más de dos?
 
para por ejemplo 5895 =[34, 55, false]
solo 2 consecutivos
 
5:46 PM
@IsraelGonzález Este no lo veo ¿por qué? ¿seguro que está bien?
 
el segundo no existen num fibonassi consecutibos que multiplicados den 5895 por eso devuelve eso
yo hice esta funcion
let i = 2
let arr = [0, 1]
while (i <= prod / 10) {
arr.push(arr[i - 1] + arr[i - 2])
i++
}
fue la que se me ocurrio para hacer una sucesion de fib
lo meto en un arreglo y luego recorro y voy revisando si i*j == n
 
@IsraelGonzález Sí, vale, no existen, pero ¿por qué el 34, 55? ¿No debería ser 55, 89?
 
si tienes razon
deberia regresar [89, 144, false]
 
@IsraelGonzález Sí, eso
 
como hago para ir revisando 2 elementos en un for
mira esto
for (let i = 0, j = i + 1; i < arr.length - 1; i + 2) {
if (arr[i] * arr[j] == prod) {
return [arr[i], arr[j], true]
}
}
 
5:58 PM
Yo lo acabo de resolver en python, mira a ver si puedes aprovecharlo
def test(n):
    a, b = 0, 1
    result = [a]
    found = False
    while (a < n**.5):
        if a*b == n:
            found = True
            break
        result.append(b)
        a, b = b, a+b
    if not found:
        result.append(b)
    return result[-2:] + [found]
>>> test(4895)
[34, 55, True]
>>> test(5895)
[89, 144, False]
 
jaja grande @abulafia
deja ver pq lo estas haciendo en python un poco avanzado
 
Todavía podía optimizarlo un poco, pues en result voy guardando la secuencia de fiboncci entera, cuando me bastaba guardar los dos últimos términos
Es más, seguramente no necesite para nada esa lista, déjame pensar un momento...
Sí, listo. Además antes estaba mal el resultado de 4895 y ahora sale bien
def test(n):
    a, b = 0, 1
    found = False
    while (a < n**.5):
        if a*b == n:
            found = True
            break
        a, b = b, a+b
    return [a, b, found]
>>> test(4895)
[55, 89, True]
>>> test(5895)
[89, 144, False]
@IsraelGonzález Salvo la asignación de pares el resto es bastante estándar. No debería ser muy complejo pasarlo a javascript
 
ya ya
xq el n**.5
ahi estas haciendo raiz
 
Es la raiz cuadrada de n
 
xq raiz
 
6:06 PM
en cuanto a sea mayor, ya no vas a encontrar solución, pues b será aún mayor también por lo que su producto será mayor que a**2 y por tanto mayor que n
La traducción a JS es directa, por cierto. Esto me ha funcionado:
test = function(n){
    var [a, b] = [0, 1];
    var found = false;
    while (a < n**.5) {
        if (a*b == n) {
            found = true;
            break;
        }
        [a, b] = [b, a+b];
    }
    return [a, b, found];
}
 
wow no sabia esa forma de hacer fibonnasi
y de declarar variables
thanks @abulafia
una cosa
 
@IsraelGonzález lo de asignar a [a, b]? Yo tampoco sabía que JS pudiera hacerlo, pero como en python estoy tan acostumbrado a verlo, y ya que JS ha ido copiando cosas de Python, he buscado si JS podría y he encontrado que sí
 
haciendo los test falla en un detalle
en algunos casos regresa falso con los ultimos numeros que probo
y se pasa en un n+1
function productFib(prod) {
let a = 0, b = 1;
found = false;
while (a < prod ** .5) {
if (a * b == prod) {
found = true;
break
} else if (a * b > prod) {
return [a, b, found]
}
[a, b] = [b, a + b];
}
return [a, b, found]
}
le agregue el else if y paso todas las pruebas
 
Ah, interesante. ¿En cuál fallaba? (para entenderlo)
 
447577 [987, 1597, false] regresaba este y debia ser [610, 987, false]
 
6:18 PM
@IsraelGonzález Pero no lo veo... 610*987 es solo 602070, aún por debajo de 447577
ah, no, no
que está por encima, me bailó una cifra
Sí, no acabo de entender por qué, pero puede ser cosa de la raiz cuadrada. Y eso me ha dado una idea para quitar esa raiz y dejar todo mucho más comprensible
test = function(n){
    var [a, b] = [0, 1];
    var found = false;
    while (a*b <= n) {
        if (a*b == n) {
            found = true;
            break;
        }
        [a, b] = [b, a+b];
    }
    return [a, b, found];
}
 
deja probarla
si
era eso ahora perfect @abulafia
function productFib2(prod){
let [a, b] = [0, 1];
while(a * b < prod) [a, b] = [b, a + b];
return [a, b, a * b === prod];
}
simplificada
 
@IsraelGonzález Bravo!
 
muy buena esa forma de las variables
antes lo mas resumido que sabia era: let a=0, b=1;
 
6:34 PM
Te ahorras muchas auxiliares
sobre todo en esta otra: [a, b] = [b, a + b];
 
y esa forma de fib genial tmb
thankss
@abulafia en que trabajas
 
Soy profe
tú?
 
oh de programacion?
trabajo en una empresa de software
 
@IsraelGonzález ¿Frontend? ¿Backend? ¿Mobile? ¿Qué lenguaje usas más?
 
estoy mas bien en el frontend
aunque en donde trabajo alguna cosa tienes que hacer con el backend
en el proyecto que estoy ahora se hace casi todo con javascript puro
jquery
 
6:44 PM
bueno, jquery no es javascript puro ;-)
 
o jquery tmb para algunas cosas
 
Ah, bueno
 
y de que es tu clase
programacion con python?? ggg
 
Doy de diferentes cosas, pero sí, usamos python, y también C, y algo de Java, y programación de red
 
universidad
 
6:48 PM
Sí, pero no me interrogues más. No quiero dar detalles. Estoy "de incógnito" :-)
 
jajajaja
algun alumno entrara de vez en cuando
 
Pues seguro
 

« first day (1430 days earlier)      last day (1682 days later) »