home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.forth      Forth programmers eat a lot of Bratwurst      117,927 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 116,536 of 117,927   
   B. Pym to HenHanna   
   Another Scheme or Lisp problem   
   05 Jun 24 10:10:19   
   
   From: No_spamming@noWhere_7073.org   
      
   Re: From JoyceUlysses.txt -- words occurring exactly once   
   On 5/30/2024, HenHanna wrote:   
      
   > could someone give me a pretty fast (and simple) program   
   > that'd give me a list of all words occurring exactly once?   
   >   
   >     -- Also, a list of words occurring once, twice or 3 times   
   >   
   >   
   >   
   > re: hyphenated words        (you can treat it anyway you like)   
   >   
   >        ideally, i'd treat  [editor-in-chief]   
   >                            [go-ahead]  [pen-knife]   
   >                            [know-how]  [far-fetched] ...   
   >        as one unit.   
      
      
   SP-Forth   
      
   REQUIRE /STRING lib/include/string.f   
   REQUIRE PLACE ~mak/place.f   
   REQUIRE PcreMatch ~ac/lib/string/regexp.f \ PCRE wrapper   
   REQUIRE new-hash ~pinka/lib/hash-table.f   
   REQUIRE {STR@LOCAL}   ~ac/lib/str5.f   \ to slurp file: FILE   
   REQUIRE CASE-INS lib/ext/caseins.f   
      
      
   \ Trim the string being searched so that the next   
   \ search point is past the string just found.   
   : advance-search-point ( cadr1 u1 cadr2 u2 -- cadr3 u3 )   
     +  ( a1 u1 a3)   
     2 pick -  /string ;   
      
   \ Doesn't handle captures.   
   : PCRE-for-each-match ( str regex xt -- )   
     { r-adr r-len xt }   
     begin   
       2dup   
       r-adr r-len PcreGetMatch   
     while   
       2dup xt execute   
       advance-search-point   
     repeat   
     2drop   
      
      
   : increment-ht-value { caddr u ht }   
     caddr u ht HASH@N   
     if 1+ else  1 then   
     caddr u ht HASH!N ;   
      
   3000 new-hash value hash-table   
      
   : process-word ( cadr u -- )   
     hash-table increment-ht-value ;   
      
   : go   
     s" Alice.txt"  FILE   \ Slurp.   
     s" [a-zA-Z][-a-zA-Z]*[a-zA-Z]"   
     ['] process-word   
     PCRE-for-each-match   
      
      
      
   go   
   s" Entries: " type  hash-table hash-count . cr   
      
      
   \ Show words that were found 3 times and that   
   \ have a length > 8:   
      
   hash-table   
   :noname  { n adr len }   
     n 3 =  len 8 >  and   
     if n . adr len type cr  then ;   
   for-hash   
      
     ===>   
   3 considering   
   3 considered   
   3 unfortunate   
   3 directions   
   3 rose-tree   
   3 listening   
   3 impossible   
   3 carefully   
   3 cautiously   
   3 spectacles   
   3 e--e--evening   
   3 particular   
   3 mentioned   
   3 forgetting   
   3 immediately   
   3 pattering   
   3 repeating   
   3 themselves   
   3 yesterday   
   3 hedgehogs   
   3 out-of-the-way   
   3 knowledge   
   3 expecting   
   3 attending   
   3 adventures   
   3 remarking   
   3 confusing   
   3 muttering   
   3 telescope   
   3 succeeded   
   3 advantage   
      
      
   hash-table del-hash   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca