22 lines
604 B
Factor
22 lines
604 B
Factor
USING: assocs combinators.short-circuit formatting
|
|
io.encodings.utf8 io.files kernel literals locals make
|
|
prettyprint random sequences ;
|
|
IN: rosetta-code.semordnilap
|
|
|
|
CONSTANT: words $[ "unixdict.txt" utf8 file-lines ]
|
|
|
|
: semordnilap? ( str1 str2 -- ? )
|
|
{ [ = not ] [ nip words member? ] } 2&& ;
|
|
|
|
[
|
|
[let
|
|
V{ } clone :> seen words
|
|
[
|
|
dup reverse 2dup
|
|
{ [ semordnilap? ] [ drop seen member? not ] } 2&&
|
|
[ 2dup [ seen push ] bi@ ,, ] [ 2drop ] if
|
|
] each
|
|
]
|
|
] H{ } make >alist
|
|
[ length "%d semordnilap pairs.\n" printf ] [ 5 sample . ] bi
|