anagramma di una parola, con pic,up...ecc

« Older   Newer »
  Share  
view post Posted on 19/9/2010, 13:41
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


Ciao a tutti, rieccomi dopo una lunga assenza (purtroppo), mi e' venuta in mente una vecchia idea, che avevo avuto fin dai tempi dell'MSX (quindi anni '80): scrivere una parola e fare tutti gli anagrammi possibili, indipendentemente che abbiano senso o no.

L'utilita', e' pressoche' zero, lo so, ma mi e' sempre piaciuta l'idea di provarci.
Io vorrei provare con i pic, ma nulla vieta di usare altri processori. Prima pero' di provarci "fisicamente" sul micro, vorrei provare solo a stendere il software sul compilatore e vedere cosa succede.

Gia' il fatto di predisporre una tastiera di input per ogni lettera, non e' cosi' semplice, quindi procediamo per gradi.
Qualcuno a suo tempo, ha suggerito di trasformare la parola in una array di caratteri e poi usare una funzione che trova le varie combinazioni. Ok, come si fa?
Supponiamo di avere il caso:
ABC

ogni lettera, sara' messa nel suo registro con il corrispettivo codice asci es:

A (0x20) codice asci 100 (solo indicativo, non ricordo la lettera A che codice ha), ma tralasciamo
B (0x21)
C( 0x22)


considerando che tutte le combinazioni si ottengono, se non erro col calcolo fattoriale, quello indicato col ! sulla calcolatrice, si avrebbe che con ABC si hanno 3*2*1=6 combinazioni.
Ma questo forse e' irrilevante.

La mia idea, sarebbe di shiftare le lettere:

si parte con ABC
poi

ACB,
CBA
BAC

e cosi' cia. Quando la lettera B ha raggiunto il registro 0x20, che e' il primo, si deve passare ad un'altra lettera e cosi' via, fino a passare tutte le lettere, a quel punto le combinazioni sono finite.

L'operazione di shift, in questo caso, non so bene come farla, visto che si parla di shiftare registri e non un singolo bit all'interno del byte, non so se mi spiego. Comunque e' solo un'idea molto molto grezza. Certo che se la parola va su un po' di lettere, povero micro: supponiamo la parola CALORIFERO: 3628800 combinazioni!!!!!!


Bhe, magari bisognerebbe ricorrere al C piuttosto che all'assembler, qui non so, magari mi sapete dire voi
 
Top
view post Posted on 20/9/2010, 09:07
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


Sicuramente, senza alcuna ombra di dubbio, questo tipo di applicazione è meglio sviluppabile con un linguaggio evoluto. Inoltre, tutto ha un senso se il risultato viene filtrato da un vocabolario. Altrimenti i risultati dell'anagramma non hanno senso.
Ma, più importante del come e con cosa sviluppare il software, è importante capire dove vanno a finire i risultati e che risultati si vogliono ottenere. Se si vogliono ottenere tutti i risultati possibili forse ti occorre una laser industriale in-line per la stampa. Oppure li potresti inviare a video su un terminale, ma per vedere tutte quelle parole senza senso ti occorrerebbero anni, e a quale proposito?
Più utile invece sarebbe avere a disposizione un piccolo vocabolario all'interno della memoria stabile del micro in modo che una volta digitati i caratteri anche a casaccio questi ti diano la corrispondenza con le eventuali parole del vocabolario.
Insomma, un'applicazione tutt'altro adatta ad un micro che è stato progettato allo scopo di fare qualche controllo elettronico complicato si, magari, ma di tutt'altro genere. :)
 
Web  Top
view post Posted on 25/9/2010, 10:27
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


CITAZIONE
Inoltre, tutto ha un senso se il risultato viene filtrato da un vocabolario. Altrimenti i risultati dell'anagramma non hanno senso.

Sicuramente questo e' verissimo, ma tralasciamo un attimo per il momento.

CITAZIONE
è importante capire dove vanno a finire i risultati e che risultati si vogliono ottenere.

Ma l'idea era per esempio, caricare nel programma la parola es ROMA, "buttare" il programma nel micro.
All'accesione a display apparirebbe appunto "ROMA", poi tramite un tasto collegato a un pin, quindi o interrupt, ma molto piu' semplicemente un polling, a ogni pressione il micro elabora una sequenza nuova a LCD:
ROMA
RAMO
OMAR
....

Ripeto, l'utilita' pratica e' meno di zero, mi affascina piu' che altro "il come" imporre a una macchina la logica per fare questo.

CITAZIONE
Insomma, un'applicazione tutt'altro adatta ad un micro che è stato progettato allo scopo di fare qualche controllo elettronico complicato si, magari, ma di tutt'altro genere

Certo, un microcontrollore, lo dice la parola stessa,nasce per gestire un hardware esterno, non certo per fare queste cose.
E' come usare una racchetta da tennis al posto di un badile o viceversa....
Ma allora facciamo finta che non abbia mai nominato uc o up, restiamo solo sulla teoria, sulla possibile logica che si potrebbe applicare, indipendentemente dal linguaggio...se vi va l'argomento!

CITAZIONE
forse ti occorre una laser industriale in-line per la stampa.

Nebbia totale, puoi spiegarmi? Cosa sono e cosa fanno?

 
Top
view post Posted on 27/9/2010, 08:11
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


Le laser industriali sono stampanti da 60m di carta stampata al minuto... :lol:
Hai presente quelle che stampano le bollette per tutta l'Italia?

Comunque, c'un utente che ha aperto una nuova discussioe in Hobby, si potrebbe continuare lì la discussione ed in seguito passare discussione e utente in questa sezione quà se tutto funziona bene. ;)

https://thegeniusworkshop.forumcommunity.net/?t=40737396
 
Web  Top
3 replies since 19/9/2010, 13:41   560 views
  Share