Skip to main content
x

Puntatori, Esagoni e Turbo C

Questo programmino lo scrissi durante l'ultimo anno delle scuole superiori. Era l'anno dei puntatori, un termine che incuteva timore al solo sentirli nominare.

Un giorno sentii parlare di questo cammino critico... non sapevo bene cosa fosse ma era qualcosa che si studiava all'università... fui così incuriosito che iniziai timidamente a cercare informazioni a riguardo e finii per trovare questo rompicapo, che parlava di una griglia esagonale, con una numerazione che parte da 1 al centro e prosegue in forma di spirale fino all'infinito, il quesito richiedeva di trovare, dati 2 numeri, il percorso più breve che li collega.

Non ho mai cercato altro, per evitare di arrivare a suggerimenti indesiderati. O trovavo la soluzione per conto mio o avrei abbandonato il progetto. Mal che vada avrei fatto un po' di pratica con l'utilizzo dei puntatori.

Iniziai a ragionare su carta per capire come risolvere il problema, come fare a spostarmi a una cella all'altra...

Il sistema era basato su un puntatore a funzione che si chiamava in maniera ricorsiva con una miriade di parametri... solo a rileggerlo mi viene il mal di testa, ed ammetto che alcune parti manco più mi ricordo come funzionano... 

La complessità arrivo al punto tale che fui obbligato far disegnare su schermo i passaggi che l'algoritmo seguiva per il calcolo del percorso, in modo da intercettare eventuali bachi nell'algoritmo... fortunatamente il nostro prof di laboratorio ci aveva spiegato come utilizzare le librerie grafiche del Turbo C! 

beh ecco un video della mia soluzione, in allegato c'è anche il codice, auguri a chi avrà voglia di provare a leggerlo :)

EXA4 CODICE SORGENTE

Ci sono ancora ampi margini di ottimizzazione, soprattutto riguardo alle prestazioni, ma ottimizzare una soluzione è meno stimolante... arrivato a questo punto il puzzle era risolto, persi quindi interesse nel continuare a ragionarci sopra e decisi di dedicarmi alla prossima sfida.. il winsock e la programmazione client/server

Un rompicapo non è divertente se non è difficile, ed a volte da più soddisfazione la strada che si percorre per arrivare alla soluzione che la soluzione stessa.

citando S.King:

Voi siete i draconiani paladini del risultato finale che rifiutano di credere che la gioia stia nel viaggio e non nella destinazione, e poco vi importa quante volte abbiate avuto riprova del contrario.
[. . .]
Se volete la fine, non avete che da andare all'ultima pagina e vedere che cosa c'è scritto. 
Ma i finali sono senza cuore.