%%HP: T(3)A(R)F(.); @ @ @ V RETEZCI OPTIONS PONECHANY PLATNE ZNAKY @ Binary String ENVOPTS(String options); @ Binary String ENVOPTS(Gobname options); \<< @ 'WE' \->STR @ "'WE'" "PNWE" @ "PNWE" "'WE'" \-> optchrs \<< @ "'WE'" @ Zatim prazdny seznam indexu platnych znaku { } @ { } "'WE'" SWAP @ "'WE'" { } WHILE DUP @ "'WE'" "'WE'" { } SIZE @ 4. "'WE'" { } REPEAT @ "'WE'" { } optchrs @ "PNWE" "'WE'" { } OVER @ "'WE'" "PNWE" "'WE'" { } HEAD @ "'" "PNWE" "'WE'" { } POS @ 0.|3. "'WE'" { } @ Aktualni znak nalezen ve vzorovem retezci? IF DUP @ 0.|3. 0.|3. "'WE'" { } THEN @ 3. "'WE'" { } ROT @ { } 3. "'WE'" SWAP @ 3. { } "'WE'" + @ { 3. } "'WE'" SWAP @ "'WE'" {3.} ELSE @ 3. "'WE'" { } DROP @ "'WE'" { } END TAIL @ "E'" {3.} END @ Nasbiraly se nejake indexy znaku? IF OVER @ {3. 4.} "" {3. 4.} SIZE @ 1. "" {3. 4.} THEN @ "" {3. 4.} @ Ano, sestavi se retezec... OVER @ {3. 4.} "" {3. 4.} 1. @ 1. {3. 4.} "" {3. 4.} \<< optchrs SWAP DUP SUB + \>> @ \<< \>> 1. {3.} "" {3. 4.} DOLIST @ "WE" {3. 4.} @ ...a pole bitovych priznaku SWAP @ {3. 4.} "WE" # 0h @ # 0h {3. 4.} "WE" SWAP @ {3. 4.} # 0h "WE" 1. @ 1. {3. 4.} # 0h "WE" \<< 2. SWAP ^ R\->B SR OR \>> @ \<< \>> 1. {3. 4.} # 0h "WE" DOLIST @ # Ch "WE" ELSE @ "" {3. 4.} @ Nebyly platne znaky NIP @ "" # 0h @ # 0h "" END \>> \>>