Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-08-2012
rbarzallo rbarzallo is offline
Registrado
 
Registrado: oct 2008
Ubicación: Guayaquil
Posts: 5
Poder: 0
rbarzallo Va por buen camino
Smile Combinaciones Numero De 4 Cifras

Buen dia Foro,

alguien me puede ayudar e indicar como puedo realizar en Delphi las combinaciones posibles de un numero de 4 cifras? es decir, a partir de un numero de 4 cifras previamente conocido.

Por ejemplo el 0027 o el 8012 y que no se repitan?

Agradeciendo de antemano su ayuda.
Responder Con Cita
  #2  
Antiguo 01-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Te refieres a las combinaciones de sus dígitos?

Toma cada uno de los dígitos y pégales las combinaciones de los tres restantes. Ahora tienes el mismo problema pero con menos dígitos, es decir, basta que resuelvas el problema para números de tres dígitos.

Para resolver este segundo problema, toma cada uno de los tres dígitos y pégales las combinaciones de los dos restantes. Ahora tienes el mismo problema pero con menos dígitos, es decir, basta que resuelvas el problema para números de dos dígitos.

Este tercer problema es trivial pues sólo hay dos combinaciones posibles para números de dos cifras, AB y BA.

Lo que estoy describiéndote es un proceso recursivo con el que puedes resolver el problema.

// Saludos

Última edición por roman fecha: 01-08-2012 a las 18:49:12.
Responder Con Cita
  #3  
Antiguo 01-08-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola rbarzallo.

Una forma de realizarlo: Declara cinco variables, una para almacenar los 4 dígitos y 4 mas para que recorran los cuatro números.

El algorímo se reduce a:
Código:
variables
n        
a,b,c,d 

comenzar

leer n.  // leer los 4 dígitos

para a <- 1 hasta 4 
  ... 
    ...
      ...
        si no((n[a]=n[b]) v (n[a]=n[c]) v (n[a]=n[d]) v 
              (n[b]=n[c]) v (n[b]=n[d]) v (n[c]=n[d])) entonces
           escribir (n[a],n[b],n[c],n[d]).
  ...
Saludos.

Edito: No lo puse en Pascal para que realices algo de la tarea...
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 01-08-2012 a las 17:33:01.
Responder Con Cita
  #4  
Antiguo 01-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por ecfisa Ver Mensaje
Edito: No lo puse en Pascal para que realices algo de la tarea...
Entre lo que ha explicado Román y el metacódigo que ha puesto ecfisa... ya casi tengo yo también mi programita de combinaciones.
Así sí que se aprende
Responder Con Cita
  #5  
Antiguo 01-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Yo, la verdad, no entendí el metacódigo (pero ya hice la tarea )

// Saludos
Responder Con Cita
  #6  
Antiguo 01-08-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por roman Ver Mensaje
Yo, la verdad, no entendí el metacódigo
Seguramente por que el pseudocódigo que iría en lugar de los '...' no queda tán claro de deducir como yo pensaba...

Sería:
Código:
variables
n        
a,b,c,d 

comenzar

leer n 

para a <- 1 hasta 4 
  para b <- 1 hasta 4  
    para c <- 1 hasta 4 
      para d <- 1 hasta 4 
        si no((n[a]=n[b]) v (n[a]=n[c]) v (n[a]=n[d]) v (*)
              (n[b]=n[c]) v (n[b]=n[d]) v (n[c]=n[d])) entonces
           escribir (n[a],n[b],n[c],n[d]).
fin
(*) v = disyunción inclusiva

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 01-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
jejeje... puse metadato, lo corregí a medias y se quedó en metacódigo
Responder Con Cita
  #8  
Antiguo 01-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por ecfisa Ver Mensaje
Seguramente por que el pseudocódigo que iría en lugar de los '...' no queda tán claro de deducir como yo pensaba...
A ver si lo que está preguntando es otra cosa, porque todavía no ha dicho nada.
Responder Con Cita
  #9  
Antiguo 01-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Quizá dejó el ejercicio y se fue a la escuela.

// Saludos
Responder Con Cita
  #10  
Antiguo 01-08-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Casimiro Notevi Ver Mensaje
A ver si lo que está preguntando es otra cosa, porque todavía no ha dicho nada.
Puede ser, pero me parece que es eso... realmente estuve amarrete con el primer código

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #11  
Antiguo 01-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Bueno, mi solución tiene un error que ahora veo. La puse pensando en que las cifras del número no se repetían, pero si eso pasa debo descartar las repeticiones.

// Saludos
Responder Con Cita
  #12  
Antiguo 02-08-2012
rbarzallo rbarzallo is offline
Registrado
 
Registrado: oct 2008
Ubicación: Guayaquil
Posts: 5
Poder: 0
rbarzallo Va por buen camino
Combinaciones 4 Cifras

ok, gracias por su ayuda.

Exactamente lo que necesito realizar es obtener las combinaciones de 4 digitos conocidos, pero de forma aleatoria.

Es decir, si tengo el numero 1963, obtener 6 combinaciones de dicho numero es decir, 1963, 1936, 1396, 1369, 1693, 1639

Gracias
Responder Con Cita
  #13  
Antiguo 02-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No entiendo lo de "forma aleatoria"
Además tampoco entiendo lo de 6 combinaciones, ¿el 1 no cuenta?
Responder Con Cita
  #14  
Antiguo 02-08-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por rbarzallo Ver Mensaje
ok, gracias por su ayuda.

Exactamente lo que necesito realizar es obtener las combinaciones de 4 digitos conocidos, pero de forma aleatoria.

Es decir, si tengo el numero 1963, obtener 6 combinaciones de dicho numero es decir, 1963, 1936, 1396, 1369, 1693, 1639

Gracias
Hola rbarzallo.

Se puede hablar de combinatoria cuando los grupos obtenidos se consideran diferentes si y solo sí, tienen un elemento diferente, por lo que en este caso estaríamos hablando de permutación. Es decir, se considera que un grupo es diferente a otro cuando difiere en el órden en que están dispuestos los elementos.

El número 1963 consta de cuatro dígitos y como es tomado de 4 en 4, sin ahondar en detalles, podemos decir que el número total de grupos a formar es 4! = 4.3.2.1 = 24

Los grupos obtenidos son:
Código:
1369  3169  6139  9136
1396  3196  6193  9163
1639  3619  6319  9316
1693  3691  6391  9361
1936  3916  6913  9613
1963  3961  6931  9631
Y aunque tal vez haya una mejor forma, es lo que realiza el pseudocódigo del mensaje #6 de este hilo.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 02-08-2012 a las 01:33:09.
Responder Con Cita
  #15  
Antiguo 02-08-2012
rbarzallo rbarzallo is offline
Registrado
 
Registrado: oct 2008
Ubicación: Guayaquil
Posts: 5
Poder: 0
rbarzallo Va por buen camino
Correcto eficsa, eso es exactamente lo que estoy necesitando desarrollar en Delphi.

Saludos
Responder Con Cita
  #16  
Antiguo 02-08-2012
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Estaba pensando en las combinaciones y permutaciones, el famoso factorial (!) y mis clases de Mate IV en la Uni. La solución de eficsa es la correcta y además la más sencilla. Me acorde de una materia que se llamaba "Análisis Numérico" y que precisamente se trataba de resolver problemas matemáticos como este (hasta "Furias" de Fourier y "Transtornadas" de La Place) pero con la ayuda del lenguaje computacional de tu gusto. Era fenomenal esa clase.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #17  
Antiguo 02-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por ecfisa Ver Mensaje
El número 1963 consta de cuatro dígitos y como es tomado de 4 en 4, sin ahondar en detalles, podemos decir que el número total de grupos a formar es 4! = 4.3.2.1 = 24
Claro, pero el problema es cuando el número tiene cifras repetidas, como en el ejemplo que dio al principio: 0027, porque entonces hay aparecen combinaciones repetidas.

// Saludos
Responder Con Cita
  #18  
Antiguo 02-08-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por roman Ver Mensaje
Claro, pero el problema es cuando el número tiene cifras repetidas, como en el ejemplo que dio al principio: 0027, porque entonces hay aparecen combinaciones repetidas.

// Saludos
Hola roman.

Estuve pensando en lo que comentas y no sé si estare hacertado conceptualmente, pero pienso que aún usando permutación con repetición, se debería consider la posición que ocupa el elemento en los grupos y no su valor. Si bién 0 y 0 tienen el mismo valor, no se refieren al mismo elemento.

Claro que tomando en cuenta lo anterior y con el condicional:
Código Delphi [-]
  if not((a=b)or(a=c)or(a=d)or(b=c)or(b=d)or(c=d)) then // tampoco serviría evaluar el valor (n[a]=n[b])...
    writeln(n[a],n[b],n[c],n[d]);
las repeticiones son inevitables.

Pero como te dije mas arriba, no estoy totalmente seguro cuál es el concepto que debiera considerarse, si el valor o el elemento...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #19  
Antiguo 02-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Entiendo lo que dices, pero eso ya tendrá que contestarlo el profesor.

// Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Combinaciones Delar Varios 21 17-02-2014 10:28:30
Cinco cifras para Neftali roman La Taberna 18 25-10-2010 17:36:41
Obtener la cantidad de cifras de un numero aeff Varios 12 10-10-2007 20:08:33
generar numero de 9 cifras aleatorio que nunca se repita coletaun Varios 9 19-02-2007 10:34:29
Cifras alucinantes en el ClubDelphi dec La Taberna 7 16-08-2006 01:32:10


La franja horaria es GMT +2. Ahora son las 01:41:45.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi