Willem Ouwerkerk: wachtwoordmaker deel 1

Hier mijn bijdrage voor het eerste deel van de programmeer opdracht. Alles wordt op de stack gedaan, geen enkele variable nodig.

\ Brodie generator zoals gewenst, de code bewust geheel dpANS94:
decimal
: RANDOM        ( u1 -- u3 )        31421 *  6927 + ;

hex
: CHOOSE-CHAR   ( u1 -- u2 ch ) \ Kies geldig karakter
    random  dup                 \ Volgende random getal
    [ 7F char ! - ] literal mod \ Zet om naar klein getal
    [char] ! + ;                \ Bouw karakter


\ De simpelste
: .WW0          ( u len -- )
    0 ?do  choose-char emit  loop  drop ; \ Print wachtwoord karakters


\ Nu in groepjes van vier
: .WW1          ( u len -- )
    0 ?do
        choose-char emit
        i 4 mod 3 = if space then   \ Na elke vierde teken een spatie
    loop  drop ;

Nu .WW0 noForth specifiek en ontdaan van alles:

hex
: SELECT-CHAR   ( u0 -- u1 ch ) \ Kies geldig karakter
    dm 31421 *  dm 6927 +  dup           \ Genereer random getal
    [ 7F ch ! - ] literal  mod  ch ! + ; \ Zet om naar karakter

: .WW0          ( x len -- )
    0 ?do  choose-char emit  loop  drop ; \ Print wachtwoord karakters