Jump to content

Anagram generator: Difference between revisions

J
m (→‎{{header|Raku}}: Add another anagram for thundergnat :-))
(J)
Line 29:
 
 
 
=={{header|J}}==
 
Implementation:
 
<lang J>anagen=: {{
seed=: (tolower y)([-.-.)a.{~97+i.26
letters=: ~.seed
list=: <;._2 tolower fread x
ok1=: */@e.&letters every list
ref=: #/.~seed
counts=: <: #/.~@(letters,])every ok1#list
ok2=: counts */ .<:ref
c=: ok2#counts
maybe=: i.1,~#c
while. (0=#r)*#maybe do.
assert. */(({:$maybe){.99 252) e.,maybe
done=: (+/"2 maybe{c)*/ .=ref
if. 1 e. done do.
r=. (;:inv ((done#maybe) { ok2#I.ok1){L:0 1 <;._2 fread x)-.tolower y
if. #r do. r return. end.
end.
step=: {{
<(#~ n */ .<:"1~ [: +/"2 {&m) y,"1 0 ({:y)}.i.#m
}}
maybe=: ; c step ref"1(-.done)#maybe
end.
EMPTY
}}</lang>
 
Examples:
 
<lang J> 'unixdict.txt' anagen 'Rosettacode'
cetera stood
coat oersted
coda rosette
code rosetta
coed rosetta
create stood
creosote tad
derate scoot
detector sao
doctor tease
doctorate se
ostracod tee
'unixdict.txt' anagen 'Thundergnat'
dragnet hunt
gannett hurd
ghent tundra
gnat thunder
hurd tangent
tang thunder
'unixdict.txt' anagen 'Clint Eastwood'
atwood stencil
clio downstate
coil downstate
downcast eliot
downstate loci
edison walcott</lang>
 
=={{header|Raku}}==
6,962

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.