Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-11-2015
Avatar de mamcx
mamcx mamcx is online now
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.915
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Pero en el caso que se plantea, no hay que preocuparse mucho por las colisiones
__________________
El malabarista.
Responder Con Cita
  #2  
Antiguo 10-11-2015
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por mamcx Ver Mensaje
Pero en el caso que se plantea, no hay que preocuparse mucho por las colisiones
Entonces, si no hay que preocuparse por las colisiones es porque no se trata de un algoritmo que tenga como base un hash.
Si es el caso, ¿porqué tu mismo has vuelto a meterlo en la bolsa en uno de tus últimos comentarios?:

Cita:
Empezado por mamcx Ver Mensaje
Segun tu caso de uso, puedes reusar un acortador de URLS. Solo tienes que crear una tabla que diga HasId=FullId y eso es todo. Si generaste un HashId es porque tienes el FullId, asi que si pasar un valor y no lo encuentras, es porque obviamente nunca fue generado.
Si al final le estás mareando al usuario.
Roman tiró la indirecta al comienzo y Neftali apuntó con la linterna. ¡Si no debe haber colisión, y debe ser reversible, entonces no se trata de un algoritmo de reducción hash!

Una reversibilidad apunta más hacia un cifrado que otra cosa.
El asunto acá es que no hay tal reversibilidad... pasa por tener una forma de referenciar una cadena de menor longitud por otra de mayor. Necesariamente debe intervernir una tabla que haga esa asociación. Generada alguna cadena corta esta se marca como usada. Listo. No más. ¿Que tiene que intervernir acá un "Hashid"?

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 10-11-2015
agustibaldo agustibaldo is offline
Miembro
 
Registrado: nov 2006
Posts: 105
Poder: 18
agustibaldo Va por buen camino
[delphius], muchas gracias por tu respuesta.

Cita:
"Generada alguna cadena corta esta se marca como usada. Listo. No más. ¿Que tiene que intervernir acá un "Hashid"?"
Podrías sugerirme algún generador hecho en Delphi para resolver esto que me transforme una cadena de 28 caracteres en 8 o 10 caracteres? En el inicio de esta discusión (incluidas las fallas teóricas de mi parte) yo consultaba por algún algoritmo que me acorte justamente una cadena. También considero conveniente tomar como referencia el consejo de Neftali sobre implementar una tabla para relacionar estas cadenas.

Nuevamente, muchas gracias.
Saludos.
Responder Con Cita
  #4  
Antiguo 10-11-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Por que necesitas 8 o 10 caracteres? No te bastaria con tener un Id que identifique a cada string? Con un sencillo diccionario<integer, string> de delphi lo solucionarias
Responder Con Cita
  #5  
Antiguo 10-11-2015
agustibaldo agustibaldo is offline
Miembro
 
Registrado: nov 2006
Posts: 105
Poder: 18
agustibaldo Va por buen camino
Cita:
Empezado por AgustinOrtu Ver Mensaje
Por que necesitas 8 o 10 caracteres? No te bastaria con tener un Id que identifique a cada string? Con un sencillo diccionario<integer, string> de delphi lo solucionarias
Porque el origen es un código de 28 caracteres y tengo que convertirlo en algo mas corto que tiene que ser leído e ingresado manualmente por un usuario desde una etiqueta. El objetivo de ser 8/10 caracteres es para establecer algún formato (estilo serial number) donde los dígitos no son correlativos sino que es un código alfanumérico conformado por letras y números.
Responder Con Cita
  #6  
Antiguo 10-11-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.298
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por agustibaldo Ver Mensaje
Porque el origen es un código de 28 caracteres y tengo que convertirlo en algo mas corto que tiene que ser leído e ingresado manualmente por un usuario desde una etiqueta. El objetivo de ser 8/10 caracteres es para establecer algún formato (estilo serial number) donde los dígitos no son correlativos sino que es un código alfanumérico conformado por letras y números.
¿De qué volumen estamos hablando?
Pensando en 1 día o en un año.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 10-11-2015
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por agustibaldo Ver Mensaje
Porque el origen es un código de 28 caracteres y tengo que convertirlo en algo mas corto que tiene que ser leído e ingresado manualmente por un usuario desde una etiqueta. El objetivo de ser 8/10 caracteres es para establecer algún formato (estilo serial number) donde los dígitos no son correlativos sino que es un código alfanumérico conformado por letras y números.
Por fin vas hilando más fino y al verdadero dilema.
Nos pusiste un bosque enfrente del árbol.

Aún empleando ese "id" alfanumérico restringido a cierta longitud va a ser tarde o temprano una limitación.

Empleando las 27 letras y los 10 números tienes para un ID de longitud de 10, un máximo de 37^10 posibles ids.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #8  
Antiguo 10-11-2015
agustibaldo agustibaldo is offline
Miembro
 
Registrado: nov 2006
Posts: 105
Poder: 18
agustibaldo Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
Por fin vas hilando más fino y al verdadero dilema.
Nos pusiste un bosque enfrente del árbol.

Aún empleando ese "id" alfanumérico restringido a cierta longitud va a ser tarde o temprano una limitación.

Empleando las 27 letras y los 10 números tienes para un ID de longitud de 10, un máximo de 37^10 posibles ids.

Saludos,
[delphius], en una respuesta anterior había detallado para que lo necesitaba exactamente. Te copio el mensaje:

Cita:
Básicamente, el problema es que tengo una cadena de 28 caracteres que me identifica un proceso y debo convertirla (o comprimirla o codificarla) en otra cadena de menor longitud (8 o 10 caract. aprox.) que tiene que ser impresa en una etiqueta y posteriormente leída e ingresada manualmente por un usuario (sin posib. de utilizar cód. de barra). Imagínense un usuario con la etiqueta en la mano tratando de leer en un espacio reducido y tipeando 28 caracteres.
En este momento estoy haciendo pruebas con un generador de cadenas aleatorias alfanuméricas para estos IDs. Lo saqué una respuesta de [Casimiro Notevi] y [Antoniov]
Después les cuento que tal fue.
Nuevamente, muchas gracias por su tiempo.
Saludos.
Responder Con Cita
  #9  
Antiguo 10-11-2015
Avatar de mamcx
mamcx mamcx is online now
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.915
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Mira. A ti solo te importa que la cadena sea corta. Puedes usar cualquier libreria de hash/encoding que te cumpla con el largo, pero si nos atenemos a lo que dices, puedes pre-generar las cadenas superfacil.

Código Delphi [-]
Largo1= C1
Largo2= C2
Largo3= C3
__________________
El malabarista.
Responder Con Cita
Respuesta



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
numeración alfanumérica y aleatoria Aprendiendo OOP 5 06-09-2011 19:34:25
Funcion para borrar la cadena que aparesca repetida dentro de otra cadena flystar Varios 1 02-07-2007 23:51:10
Funcion para buscar cadena dentro de otra cadena y el numero de veces flystar Varios 3 02-07-2007 22:48:08
crear una llave alfanumerica con un generador reina SQL 3 17-08-2005 19:49:44
Extraer números en una string alfanumérica Tonio Varios 4 23-10-2003 10:22:04


La franja horaria es GMT +2. Ahora son las 19:53:17.


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