ricerca lettera mancante

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
Avatar utente
jumoonp
GMI VIP
Messaggi: 3292
Iscritto il: 13/01/2008, 20:59
Contatta:

ricerca lettera mancante

Messaggio da jumoonp »

Ho due stringhe, in una stringa ci sono 20 lettere diverse tra loro, ed in un altra stringa ce ne sono 19.
Vorrei sapere in un modo "smart", possibilmente senza cicli for or while, qual'è la lettera che manca nella seconda stringa.
Spoiler
Gabriele Dell'Otto e Lee bermejo

Immagine

Avatar utente
doom13
Moderatore
Messaggi: 2093
Iscritto il: 31/08/2012, 15:40
Specialità: Programmazione
Uso: GM:Studio 2
Contatta:

Re: ricerca lettera mancante

Messaggio da doom13 »

Le lettere delle due stringhe sono sparse? Oppure, ad esempio, la prima stringa è "jumoonp" e la seconda è "jumoop"?
Immagine
Spoiler
Maze [sospeso]
Isom (titolo provvisorio) (Windows & Android) [sospeso]
Keep Calm & Jump (Android) [In corso]
The Graywall (Windows) [Completo]
DTB (Windows & Android) [Completo]
The Last Spell (Windows) [Completo]
Dukenstein: Return to the house (Windows) [Completo]
DMSystem (Windows) [Completo]
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"

Avatar utente
jumoonp
GMI VIP
Messaggi: 3292
Iscritto il: 13/01/2008, 20:59
Contatta:

Re: ricerca lettera mancante

Messaggio da jumoonp »

Sono lettere sparse prive di spazio, sono tutte attaccate tra loro.
Spoiler
Gabriele Dell'Otto e Lee bermejo

Immagine

Avatar utente
jumoonp
GMI VIP
Messaggi: 3292
Iscritto il: 13/01/2008, 20:59
Contatta:

Re: ricerca lettera mancante

Messaggio da jumoonp »

La prima stringa e' lunga 20, la seconda 19.
Spoiler
Gabriele Dell'Otto e Lee bermejo

Immagine

Avatar utente
Simsure
Membro
Messaggi: 223
Iscritto il: 13/09/2013, 21:54
Specialità: Programmazione
Uso: GM:Studio 2
Località: dietro di te...
Contatta:

Re: ricerca lettera mancante

Messaggio da Simsure »

Non credo sia proprio possibile senza usare dei cicli,in qualche modo devi per forza controllare ogni lettera prima di poter dire quale manca nella seconda stringa. (in ogni caso per cosi poche lettere non è molto dispendioso per il PC fare un ciclo)
Le due stringhe sono uguali (però forse con le lettere in posizioni diverse),ma in una manca una lettera giusto? Non credo tu possa evitare di fare un ciclo però potresti trovare il modo piu veloce di effettuarne uno,magari salvando le due stringhe su due variabili temporanee,e una ad una vedere le lettere della prima,se quella lettera è anche nella seconda,allora rimuovi la lettera da entrambe le stringe,alla fine ne rimarrà solo una,che non è presente nell'altra,quindi rimarrà l'ultimo carattere nella variabile.
Questa è la prima cosa che mi è venuto in mente sul momento,però probabilmente puoi trovare altri mille modi diversi.
Immagine
Spoiler
Immagine

Avatar utente
Alv
Membro
Messaggi: 133
Iscritto il: 14/11/2014, 22:33
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Località: Sicilia
Contatta:

Re: ricerca lettera mancante

Messaggio da Alv »

jumoonp ha scritto:Ho due stringhe, in una stringa ci sono 20 lettere diverse tra loro, ed in un altra stringa ce ne sono 19.
Vorrei sapere in un modo "smart", possibilmente senza cicli for or while, qual'è la lettera che manca nella seconda stringa.
Se le lettere sono in ordine all'interno di ciascuna stringa, ti basta iterare con un singolo ciclo for, e fermarti non appena l'i-esimo carattere della prima stringa è diverso dall'i-esimo della seconda stringa.

In alternativa, ogni lettera della prima stringa andrebbe confrontata con tutte le lettere della seconda (due cicli for annidati). Si potrebbero pre-ordinare i due array; oppure si potrebbe fare all'inizio una scansione della seconda stringa per popolare un array di booleani (di lunghezza 27), in cui ciascun elemento indica se l'i-esima lettera è presente o meno. A questo punto, si fa la scansione della prima stringa. Non è necessario confrontare ogni carattere con tutti i caratteri della seconda: basta usare l'array precedentemente popolato per accedere, mediante indice, al booleano che indica se quella lettera è presente o meno.

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 150 ospiti