Python - Comparar digitos.

 
Vista:
sin imagen de perfil
Val: 7
Ha disminuido su posición en 15 puestos en Python (en relación al último mes)
Gráfica de Python

Comparar digitos.

Publicado por Manuel (3 intervenciones) el 27/03/2020 04:53:12
Hola
necesito resolver el siguiente problema:
Escriba una función que determine si en dos números enteros aparecen los mismos dígitos. No tenga en cuenta ni la frecuencia ni el orden de aparición de los digitos en los números. Los números no tienen necesariamente la misma cantidad de digitos. Por ejemplo, si los números son '998' y '89' la función debería retornar True.
Sin embargo tengo prohibido convertir el numero a str para comparar y unicamente puedo usar iterador simple (While) y pues condicionales (if, elif, else).

He intentado hacerlo pero nunca me regresa la respuesta esperada, o simplemente no regresa nada. Porfa ayudaaaa :(
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Comparar digitos.

Publicado por tincopasan (1082 intervenciones) el 27/03/2020 05:21:41
hola:
pon el código que has intentado aunque no regrese lo que esperas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha disminuido su posición en 15 puestos en Python (en relación al último mes)
Gráfica de Python

Comparar digitos.

Publicado por Manuel (3 intervenciones) el 27/03/2020 06:03:58
ffff

te adjunto la imagen del programa con unos casos de prueba. El problema está en que cuando hay al menos dos digitos distintos en el primer numero siempre da false, asi se compare con el mismo numero. Tambien te coloco el codigo aqui para que puedas copiarlo. Gracias

1
2
3
4
5
6
7
8
9
10
11
12
13
def mismos_digitos(a: int, b: int)->bool:
    rta=True
    while a>0:
        if a%10!=b%10:
            rta=False
            b//=10
        a//=10
    return rta
 
 
n1=int(input ("numero1: "))
n2=int(input ("numero2: "))
print (mismos_digitos(n1,n2))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 156
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Comparar digitos.

Publicado por Andrés (55 intervenciones) el 27/03/2020 07:30:13
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def mismos_digitos(a:int, b:int) -> bool:
    c = b
    todos_en_a = True
    while a > 0:
        da = a % 10
        en_b = False
        while b > 0 and not en_b:
            db = b % 10
            en_b = (da == db)
            b //= 10
        b = c
        todos_en_a = todos_en_a and en_b
        a //= 10
    return todos_en_a
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 7
Ha disminuido su posición en 15 puestos en Python (en relación al último mes)
Gráfica de Python

Comparar digitos.

Publicado por Manuel (3 intervenciones) el 27/03/2020 16:32:00
Está perfeco. Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comparar digitos.

Publicado por dsaa (1 intervención) el 29/03/2020 23:49:54
oye cuando se coloca el a=111234 y en b=12345 sale true en vez de false
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 156
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Comparar digitos.

Publicado por Andrés (55 intervenciones) el 30/03/2020 03:57:25
1
2
3
4
5
a, b = 111234, 12345
 
result = mismos_digitos(a, b) and mismos_digitos(b, a)
 
print(result)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comparar digitos.

Publicado por Julian (1 intervención) el 18/09/2022 05:03:16
no es la solución mas optimizada pero me funciona, jajaj.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
def mismoLen(lista1: list, lista2: list)->bool:
    terminado = False
    i = 0
    while terminado == False:
        if len(f"{lista1[i]}") == len(f"{lista2[i]}") and f"{lista1[i]}" in f"{lista2}":
            res = True
            i+=1
            if i >= len(lista1):
                terminado = True
        else:
            res = False
            terminado = True
 
    return res
 
def dif_len(list_menor: list, num_mayor: int)->bool:
    terminado = False
    i = 0
 
    while terminado == False:
        if f"{list_menor[i]}" in f"{num_mayor}":
            res = True
            i+=1
            if i>=len(list_menor):
                terminado = True
        else:
            res = False
            terminado = True
 
    return res
 
 
def mismos_digitos(a: int, b: int)->bool:
    num_a = [int(a) for a in str(a)]
    num_b = [int(a) for a in str(b)]
    num_mayor = a if len(f"{a}")>len(f"{b}") else b
    list_menor = num_b if len(num_b)<len(num_a) else num_a
    list_mayor = num_a if len(num_b)<len(num_a) else num_b
 
    if len(f"{a}") == len(f"{b}"):
 
        res = mismoLen(list_mayor, list_menor)
    else:
        res = dif_len(list_menor, num_mayor)
 
    return res
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Comparar digitos.

Publicado por Jhonatan (2 intervenciones) el 24/01/2023 04:26:57
Este código me funciona a mi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def mismos_digitos(a:int, b:int) -> bool:
    u=str(a)
    v=str(b)
    x=len(u)-1
    y=len(v)-1
    contador=0
    vig=True
    if len(u)==len(v):
        if u not in v:
            vig=False
    if x<y:
        while contador<=x:
           if u[contador] in v: contador +=1
           else:
               vig=False
 
 
 
    if y<x:
        while contador<=y:
           if v[contador] in u: contador +=1
           else:
               vig=False
               contador +=1
    return vig
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Comparar digitos.

Publicado por Jhonatan (2 intervenciones) el 24/01/2023 04:32:43
ups, soy nuevo acá y no se como borrar comentarios, pero ajá... me percaté de dos errores en el anterior, este si me parece mas preciso:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def mismos_digitos(a:int, b:int) -> bool:
    u=str(a)
    v=str(b)
    x=len(u)-1
    y=len(v)-1
    contador=0
    vig=True
    if len(u)==len(v) and len(u)==1 :
        if u not in v:
            vig=False
    if x<=y:
        while contador<=x:
           if u[contador] in v: contador +=1
           else:
               vig=False
               contador +=1
    if y<x:
        while contador<=y:
           if v[contador] in u: contador +=1
           else:
               vig=False
               contador +=1
    return vig
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar