Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

    words←⊃⎕nget 'wordlist.txt' 1        ⍝ read lines
    tenK←'^........k.$' ⎕S '&' ⊢ words   ⍝ regex filter
    ↑tenK/⍨{∧/1='abc'(+/∘.∊)⍵}¨tenK      ⍝ count abc and filter
Dyalog APL, but it's still kinda ... heavy.


> tenK←'^........k.$' ⎕S '&' ⊢ words ⍝ regex filter

Is tenK←{(10=≢⍵)∧⍵[9]='k'}¨words better?

Feel that better matches the problem spec, although requires the each


⍵[9] INDEX ERRORs on the shorter words, and that code needs a compress to do the filtering. It's a more traditional and faster approach, which is better from those viewpoints. If faster and avoiding each and using array concepts is desirable, how about:

    words←↑⊃⎕nget 'wordlist.txt' 1 
    tenK←words⌿⍨('k'=words[;9])∧(' '≠words[;10])∧(' '=words[;11])
    tenK⌿⍨{∧/1='abc'(+/∘.∊)⍵}⍤1⊢tenK
Mix ↑ turns the nested wordlist into a 2D array by padding short strings out to the length of the longest using spaces, which I don't like but am (ab)using here to tell when the words end.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: