(*

  Wachtwoordmaker deel 1 (an aug2024)

Met ctrl-A selecteer je de gehele inhoud van deze html-file als platte tekst. Met ctrl-C copieer je dat. Met ctrl-V plak je het in de terminal of in een file voor een platte-tekst editor.
Voor forthbijeenkomst 05okt2024 .W ( len x -- ) \ druk wachtwoord af len = lengte vh wachtwoord x = een willekeurig getal Vier varianten: .W0 - Basisprogramma .W1 - Spatie om de 4 tekens .W2 - Niet te veel leestekens .W2a - Alternatief voor .W2 .W3 - Vermijd 0 1 I O l | .W3a - Alternatief voor .W3 noForth woorden: CH UMIN ?EXIT FOR NEXT *)

\   Vooraf

decimal 111 value (RND) : RND ( -- x ) \ Genereer een random getal. (rnd) 31421 * 6927 + dup to (rnd) ;

\   .W - Basisprogramma

: GET ( -- ch ) \ Genereer random ch, 34% kans op leesteken rnd ( x ) 94 ( x 94 ) \ 94 zichtbare tekens, ! t/m ~ mod ( n ) \ n in [0..93] ch ! + ; ( ch ) : .W0 ( len x -- ) \ Druk wachtwoord af to (rnd) 64 umin \ len' in [0..64] for get emit next space ;

\   .W1 - Spatie om de 4 tekens

: ?SPACE ( i -- ) 3 and ?exit space ; : .W1 ( len x -- ) to (rnd) 64 umin 0 ?do i ?space get emit loop space ;