Piero V.

Eclipse

Finalmente mi sono deciso ad usare un IDE per programmare in C++.

Tutto è nato dall’esigenza di provare Ogre, un motore di rendering 3D. Questa volta avevo voglia di fare le cose bene, così ho seguito il consiglio del loro wiki e ho fatto la mia scelta.

I tre candidati erano Eclipse, NetBeans e CodeBlocks.

L’ultimo l’ho escluso a priori perché in realtà l’avevo già provato su Windows e non mi era piaciuto.

Così la sfida è stata tra Eclipse e NetBeans.

Alla fine ho scelto il primo perché occupava meno spazio.

Che dire? È veramente utile e comodo.

Sono 250MB occupati ma in compenso mi risparmia un sacco di fatica e fa già lui dei controlli per me, per esempio sul tipo, sull’esistenza di variabili/funzioni/classi.

Insomma, se state ancora programmando con editor che offrono solo l’evidenziazione del codice vi consiglio di provare anche a voi questo programma.

È libero, multipiattaforma e supporta anche altri linguaggi, Java in primis.

Bullet e pendii

Se avete avuto a che fare con la libreria per la simulazione della fisica Bullet e dei pendii (colline, rampe), sarete sicuramente impazziti cercando di risolvere il problema per cui il corpo non sta fermo nel pendio.

È capitato anche a me, così dopo ore perse dietro, cambiando appena una parola chiave su google ho trovato la soluzione: come riportato qui, dovete fare così:

World->getDispatchInfo().m_allowedCcdPenetration = 0.0001f;

dove world è il vostro Bullet World.

Se usate Panda3D per ottenerlo dovete fare world->get_world().

Spero sia di aiuto a qualcuno!

Grazie Vodafone!

La Vodafone mi ha proprio reso felice.

Visto che ho già la Zero Limits vecchia mi regalano Smart Zero Limits+, la quale comprende SMS illimitati verso Vodafone, 500MB di internet mensili il tutto a 7€ anziché a 10!

Mi basta fare una ricarica da 10€ e me la posso attivare gratis anziché a 8€ e mi regalano 10€, così posso cambiare il mio piano telefonico e guadagnare anche 2€. Inoltre ho contato che il risparmio sarà di 1,50€ al mese.

Che dire? Grazie Vodafone! E quella volta lì ho fatto bene a rimanere con la vecchia Zero Limits, altrimenti non avrei avuto quest’offerta.

XML e C++

Mi sto divertendo parecchio a lavorare con C++.

Oggi mi sono posto un altro problema: mi serviva un formato abbastanza comodo da leggere con cui si potesse anche dare un certo ordine alle informazioni.

Allora ho pensato che la scelta migliore sarebbe stata l’XML: non è facilissimo da leggere ma esistono parecchie librerie che svolgono questo compito. Da scrivere invece non è il massimo, ma non mi serviva il supporto alla scrittura.

Così mi sono messo a cercare e ho trovato un po’ di informazioni: esistono due tipi di librerie, quelle SAX e quelle DOM.

In realtà conoscevo entrambi questi concetti abbastanza superficialmente, ma in parole povere, se per voi è più importante trovare un certo nodo è meglio il DOM.

Così dopo un po’ ho trovato questa libreria: TinyXML.

Non è affatto male, anzi! Da un primo approccio mi pare anche semplice da usare.

La licenza poi è fantastica, perché è la Zlib/libpng, perciò è molto libera.

E un’altra cosa magnifica è che questa libreria è anche capace di salvare i file XML modificati, perciò penso di estendere il suo uso anche a dove avevo pensato di usare altri sistemi.

Risolviamo i Sudoku... con C++

Da quando ho imparato a fare i Sudoku mi sono sempre chiesto come fare un programma che li risolvesse 😊

La cosa non è difficile, soprattutto per quelli semplici, che ero già riuscito a risolvere con PHP 😊

Tuttavia non ero andato più avanti perché non avevo considerato la risoluzione tramite brute force, invece recentemente, anche per consolidare la mia conoscenza di C++, mi sono messo e ho fatto questo programmino.

In pratica l’algoritmo di risoluzione si divide in due parti: la prima con un loop crea le possibili soluzioni per ogni cella e le inserisce fino a quando il sudoku non viene più modificato. Quindi se ci sono celle ancora vuote (con possibili soluzioni) tenta il brute force, altrimenti esce. Il brute force è implementato tramite ricorsione: prima ordino le soluzioni in modo da partire dalla cella con meno soluzioni possibili, quindi prendo le soluzioni una ad una e provo a vedere se impostandole ce la faccio a risolvere il sudoku. Quando ce l’ho fatta termino il programma.

Se volete il sorgente, eccolo qui: sudoku.cpp.

L’ho provato su Linux e andava.

Penso che si possa migliorare il programma ma per il momento mi va bene così 😊

Aggiornamento 31/05/2012: aggiunto un meccanismo di controllo, perché prima con certi sudoku difficili il brute force falliva.