Elimina le aree dello spazio binario e incrementa il risultato in modo efficiente

1

L'obiettivo è prendere uno spazio binario, diciamo 64 bit, e rendere certe parti "valide" e alcune parti "non valide", quindi incrementare, partendo da 0, attraverso quello spazio, evitando le aree non valide.

Lo spazio è reso "non valido" applicando un numero arbitrario di regole arbitrarie. Ad esempio "se i bit 2 e 49 sono impostati, quel numero non è valido", ecc.

Lo spazio non influenzato dalle regole è considerato "valido".

Il modo semplice per farlo è semplicemente applicare tutte le regole ogni volta che si incrementa. Ma questo non è realistico per uno spazio a 64 bit con anche poche regole, ci vuole per sempre. Per spazi di bit più grandi e / o molte regole complesse, lo stesso problema.

Quindi è necessario un metodo molto più efficiente. Qualcosa che richiede pochissime istruzioni e il risultato finale è essenzialmente solo incrementando i numeri che sono nello spazio valido.

Immagino che questo sia già stato scoperto in una tesi da qualche parte ed è probabilmente usato ogni giorno nei file system o qualcosa di comune.

    
posta Not Really 22.07.2017 - 19:46
fonte

1 risposta

2

Stai cercando un modo automatico per trasformare una serie di regole di convalida arbitrarie in un insieme di regole incrementali arbitrarie che producono solo numeri validi.

Se esistesse una cosa del genere non avremmo problemi a prevedere i numeri primi. Dal momento che lo facciamo, non lo fa.

Questo non significa che non esistono regole di incremento valide per alcune regole di validazione. Numeri dispari per esempio. Ma certamente non esistono per ogni insieme arbitrario di regole di convalida.

    
risposta data 22.07.2017 - 22:13
fonte

Leggi altre domande sui tag