Disculpas por la pregunta no descriptiva; si puedes pensar en una mejor, soy todo oídos.¿Hay un nombre para este algoritmo?
Estoy escribiendo algunos Perl para implementar un algoritmo y el código que tengo huele a pescado. Como no tengo experiencia en CS, no tengo mucho conocimiento de los algoritmos estándar en mi bolsillo trasero, pero parece ser algo que podría ser.
permítanme describir lo que estoy haciendo por medio de la metáfora:
- Usted tiene una cinta transportadora de naranjas. Las naranjas te pasan uno por uno. También tiene un suministro ilimitado de cajas planas.
- Para cada naranja, compruébalo. Si está podrido, deséchelo
- Si está bien, colóquelo en una caja. Si no tiene una caja, tome una nueva y contrátela.
- Si la caja tiene 10 naranjas, ciérrela y colóquela sobre una plataforma. No construya uno nuevo.
- Repetir hasta que no tenga más naranjas
- Si usted tiene una caja construida con algunas naranjas en él, cerrarlo y ponerlo en una paleta
Por lo tanto, tenemos un algoritmo para el procesamiento de artículos en una lista, si cumplen algunos criterios, deben agregarse a una estructura que, cuando cumpla con otros criterios, debe ser "cerrada". Además, una vez que la lista ha sido procesada, si hay una estructura 'abierta', también debe 'cerrarse'.
Ingenuamente, supongo que el algoritmo consiste en un ciclo que actúa sobre la lista, con un condicional para ver si el elemento de lista pertenece a la estructura y un condicional para ver si la estructura debe 'cerrarse'. Fuera del ciclo, habría una condición más para cerrar cualquier estructura pendiente.
lo tanto, aquí están mis preguntas:
- ¿Es esta una descripción de un algoritmo conocido? Si es así, ¿tiene un nombre?
- ¿Existe una manera efectiva de fusionar la actividad de "cerrar la caja" en un solo lugar, en lugar de una vez dentro del ciclo y una vez fuera del ciclo?
Lo etiqueté como 'Perl' porque los enfoques de Perlish son de interés, pero me interesaría saber de otros idiomas que tengan soluciones claras para esto.
+1 para una explicación muy clara de lo que está pidiendo. – DGH
A partir de ahora esto se conocerá como "el Procedimiento Dancrumb". Trabajaré en la página Wiki. – mob
1. No. 2. Realice una función llamada 'close_box()' y llámela en 2 lugares. Eso es lo que funciona * para *, no hay nada moralmente sospechoso para hacer esto :) –