Anadromes: Difference between revisions
Thundergnat (talk | contribs) m (Better link) |
(Add Factor) |
||
Line 18: | Line 18: | ||
=={{header|Factor}}== |
|||
{{works with|Factor|0.99 2022-04-03}} |
|||
<lang factor>USING: assocs grouping hash-sets io.encodings.ascii io.files |
|||
kernel math prettyprint sequences sets sets.extras ; |
|||
"words.txt" ascii file-lines [ length 6 > ] filter dup >hash-set '[ reverse _ in? ] filter |
|||
[ reverse ] zip-with [ all-equal? ] reject [ fast-set ] unique-by .</lang> |
|||
{{out}} |
|||
<pre> |
|||
{ |
|||
{ "amaroid" "diorama" } |
|||
{ "degener" "reneged" } |
|||
{ "deifier" "reified" } |
|||
{ "deliver" "reviled" } |
|||
{ "dessert" "tressed" } |
|||
{ "desserts" "stressed" } |
|||
{ "deviler" "relived" } |
|||
{ "dioramas" "samaroid" } |
|||
{ "gateman" "nametag" } |
|||
{ "leveler" "relevel" } |
|||
{ "pat-pat" "tap-tap" } |
|||
{ "redrawer" "rewarder" } |
|||
{ "reknits" "stinker" } |
|||
{ "relever" "reveler" } |
|||
{ "reliver" "reviler" } |
|||
{ "revotes" "setover" } |
|||
{ "sallets" "stellas" } |
|||
} |
|||
</pre> |
|||
Revision as of 23:39, 23 June 2022
An anadrome is similar to a palindrome except, rather than spelling the same word or phrase when reversed, it spells a different word or phrase. An anadrome is a special case of an anagram.
Anadrome is a portmanteau of the words anagram and palindrome.
For instance, regal and lager are anadromes.
- Task
Using the words.txt file from https://github.com/dwyl/english-words, find and display all of the anadrome pairs with more than 6 characters.
Each word pair should only show up one time in the list.
Factor
<lang factor>USING: assocs grouping hash-sets io.encodings.ascii io.files kernel math prettyprint sequences sets sets.extras ;
"words.txt" ascii file-lines [ length 6 > ] filter dup >hash-set '[ reverse _ in? ] filter [ reverse ] zip-with [ all-equal? ] reject [ fast-set ] unique-by .</lang>
- Output:
{ { "amaroid" "diorama" } { "degener" "reneged" } { "deifier" "reified" } { "deliver" "reviled" } { "dessert" "tressed" } { "desserts" "stressed" } { "deviler" "relived" } { "dioramas" "samaroid" } { "gateman" "nametag" } { "leveler" "relevel" } { "pat-pat" "tap-tap" } { "redrawer" "rewarder" } { "reknits" "stinker" } { "relever" "reveler" } { "reliver" "reviler" } { "revotes" "setover" } { "sallets" "stellas" } }
Raku
<lang perl6>my @words = 'words.txt'.IO.slurp.words.grep: *.chars > 6;
my %words = @words.pairs.invert;
put join "\n", @words.map: { %words{$_}:delete and sprintf "%10s ↔ %s", $_, .flip if ($_ ne .flip) && %words{.flip} }</lang>
- Output:
amaroid ↔ diorama degener ↔ reneged deifier ↔ reified deliver ↔ reviled dessert ↔ tressed desserts ↔ stressed deviler ↔ relived dioramas ↔ samaroid gateman ↔ nametag leveler ↔ relevel pat-pat ↔ tap-tap redrawer ↔ rewarder reknits ↔ stinker relever ↔ reveler reliver ↔ reviler revotes ↔ setover sallets ↔ stellas