Anagram generator: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) m (→{{header|Raku}}: Add another anagram for thundergnat :-)) |
(J) |
||
Line 29: | 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}}== |
=={{header|Raku}}== |