Per varie ragioni stavo implementando gli insiemi in gamemaker (non possono esserci elementi doppi).
Appena finite le funzioni essenziali mi sono accorto di un errore che non capisco.
Premessa = gli elementi vengono inseriti in maniera ordinata.
Ora, la funzione aggiunngi per prima cosa controlla se un elemento è già presente, e lo fa tramite ricerca dicotomica (che è il codice buggato), la quale A VOLTE FUNZIONE E A VOLTE NO SENZA APPARENTE RAGIONE.
Vi posto qui il codice della ricerca:
Spoiler
Quando chiamo su un insieme vuoto aggiungi(i) da 5 a 1, appena deve aggiungere il 3 mi dice "malformed variable" con items_n, che è l'intero contenente il numero attuale di elementi. Le uniche operazioni eseguite su items_n sono ++ e --.
Oltre a ciò, il nel codice dell'aggiunta, dopo aver chiamato questa ricerca, la variabile dell'elemento da aggiungere che viene passata alla ricerca come argomento, diventa 0.
Esempio
add(3)
// argument0 è 3
if not find(3)
{
//e qui argument0 diventa inspiegabilmente 0
}