Scuse per la domanda non descrittiva; se riesci a pensarne uno migliore, sono tutto orecchie.Esiste un nome per questo algoritmo?
Sto scrivendo un po 'di Perl per implementare un algoritmo e il codice che ho odore di pesce. Dal momento che non ho uno sfondo di CS, non ho molta conoscenza degli algoritmi standard nella mia tasca posteriore, ma questo sembra qualcosa che potrebbe essere.
Lasciatemi descrivere quello che sto facendo per mezzo di metafora:
- Si dispone di un nastro trasportatore di arance. Le arance ti passano una ad una. Hai anche una scorta illimitata di scatole piatte.
- Per ogni arancione, controllarlo. Se è marcio, smaltilo
- Se è buono, mettilo in una scatola. Se non hai una scatola, prendine una nuova e costruiscila.
- Se la scatola contiene 10 arance, chiuderla e metterla su un pallet. Non costruirne uno nuovo.
- Ripetere fino a quando non si hanno più arance
- Se si dispone di una scatola costruita con alcune arance in esso, chiuderlo e metterlo su un pallet
Quindi, abbiamo un algoritmo per la lavorazione di articoli in una lista, se soddisfano alcuni criteri, dovrebbero essere aggiunti a una struttura che, quando soddisfa alcuni altri criteri, dovrebbe essere "chiusa". Inoltre, una volta che l'elenco è stato elaborato, se esiste una struttura "aperta", dovrebbe essere "chiuso".
Ingenuamente, presumo che l'algoritmo sia costituito da un ciclo che agisce sulla lista, con un condizionale per vedere se l'elemento della lista appartiene alla struttura e un condizionale per vedere se la struttura deve essere 'chiusa'. Al di fuori del ciclo, ci sarebbe un altro condizionale per chiudere tutte le strutture in sospeso.
Così, qui sono le mie domande:
- Si tratta di una descrizione di un algoritmo ben noto? Se sì, ha un nome?
- Esiste un modo efficace per fondere l'attività "chiusura della scatola" in un singolo luogo, anziché una volta all'interno del ciclo e una volta all'esterno del ciclo?
L'ho etichettato come "Perl" perché gli approcci Perlish sono interessanti, ma sarei interessato a conoscere qualsiasi altro linguaggio che abbia soluzioni chiare a questo.
+1 per una spiegazione molto molto chiara di ciò che stai chiedendo. – DGH
D'ora in poi questo sarà conosciuto come "la procedura di Dancrumb". Lavorerò sulla pagina Wiki. – mob
1. No. 2. Crea una funzione chiamata 'close_box()' e chiamala in 2 posizioni. Questo è ciò che le funzioni * sono per *, non c'è nulla di moralmente sospetto nel farlo :) –