Estoy trabajando en una aplicación web que incluye listas largas de nombres. El cliente originalmente quería dividir los nombres en div
s por letra, por lo que es fácil saltar a un nombre en particular en la lista.Listado por alfabeto, agrupa letras con pocas entradas juntas (PHP o JS)
Ahora, mirando la lista, el cliente señaló varias letras que tienen solo uno o dos nombres asociados a ellas. Ahora quiere saber si podemos combinar varias letras consecutivas si solo hay unos pocos nombres en cada una.
(Tenga en cuenta que las cartas sin nombres no se muestran en absoluto.)
lo que hago en este momento es que el servidor de base de datos devuelve una lista ordenada, a continuación, mantener una variable que contiene el carácter actual. Repaso la lista de nombres, incrementando el carácter e imprimiendo las etiquetas de apertura y cierre div
y ul
a medida que voy llegando a cada letra. Sé cómo adaptar este código para combinar algunas letras, sin embargo, una cosa de la que no estoy seguro es cómo una determinada combinación de letras es la mejor posible. En otras palabras, decir que tengo:
A
- 12 nombresB
- 2 nombresC
- 1 NombreD
- 1 NombreE
- 1 NombreF
- 23 nombres
Sé cómo terminar con un grupo A-C
y luego tengo D
por sí mismo. Lo que estoy buscando es una forma eficiente para darse cuenta de que A
debe estar solo y luego B-D
deben estar juntos.
No estoy seguro de por dónde empezar a buscar esto.
Si hace alguna diferencia, este código se utilizará en un módulo de Kohana Framework.
ACTUALIZACIÓN 2012-04-04:
Aquí es una aclaración de lo que necesito:
Diga el número mínimo de elementos que quiero en un grupo es de 30. Ahora dicen que la letra A tiene 25 elementos, letras B, C y D, tiene 10 elementos cada uno, y la letra E tiene 32 elementos. Quiero dejar a A solo porque será mejor combinar B + C + D. La forma simple de combinarlos es A + B, C + D + E, que no es lo que quiero.
En otras palabras, necesito el mejor ajuste que se acerque al mínimo por grupo.
Aquí es un violín con una lista inicial de nombres si la gente quiere hacer algunas pruebas con un método mejorado js. http://jsfiddle.net/Avveb/ – mrtsherman
Sé que esto se puede hacer con una gran programación dinámica, pero espero que alguien encuentre algo lo suficientemente simple como para ser utilizado en una aplicación web. Si necesito usar programación dinámica, tendré que ejecutarla de vez en cuando y almacenar en caché los resultados porque será demasiado intensa para ejecutar en la carga de la página. –