Cha*_* Ma 16 code-golf anagram
如果该单词中的字母可以重新排列以形成不同的单词,则单词是字谜.
使用代码标尺
--------- -------- 10 20 -------- -------- 30 40 -------- ---- 50 ---- -------- 60 70 -------- -------- 80 90 -------- 100 ------- 110- ------ 120
一个单词的列表,从一个新行分隔每个字标准输入.
例如
A
A's
AOL
AOL's
Aachen
Aachen's
Aaliyah
Aaliyah's
Aaron
Aaron's
Abbas
Abbasid
Abbasid's
Run Code Online (Sandbox Code Playgroud)
所有组的字谜,每组由一条单独的线分隔.
示例运行:
./anagram < words
marcos caroms macros
lump's plum's
dewar's wader's
postman tampons
dent tend
macho mocha
stoker's stroke's
hops posh shop
chasity scythia
...
Run Code Online (Sandbox Code Playgroud)
我有一个149 char perl解决方案,我会在几个人发布后发布:)
玩得开心!
Dan*_*bić 12
$k=@{};$input|%{$k["$([char[]]$_|%{$_+0}|sort)"]+=@($_)}
$k.Values|?{$_[1]}|%{"$_"}
Run Code Online (Sandbox Code Playgroud)
为了排除只是大小写不同的话,我们只能从输入列表,即删除重复的(案例insensitvely) $input|sort -u,其中-u代表-unique.sort默认情况下不区分大小写:
$k=@{};$input|sort -u|%{$k["$([char[]]$_|%{$_+0}|sort)"]+=@($_)}
$k.Values|?{$_[1]}|%{"$_"}
Run Code Online (Sandbox Code Playgroud)
[char[]]$_|%{$_+0}|sort-part的解释它是哈希表条目的关键,在该条目下存储单词的字谜.我最初的解决方案是:$_.ToLower().ToCharArray()|sort.然后我发现我不需要ToLower()密钥,因为哈希表查找不区分大小写.
[char[]]$_|sort将是理想的,但对于字符的关键需要的排序,以不区分大小写(否则Cab和abc下不同的密钥将被存储).不幸的是,sort字符不具有大小写不敏感(仅适用于字符串).
我们需要的是[string[]][char[]]$_|sort,但是我找到了一种将每个char转换为字符串的简短方法,即将其他东西连接到它,在这种情况下是一个整数0,因此[char[]]$_|%{$_+0}|sort.这不会影响排序顺序,实际的键最终会像:d0 o0 r0 w0.它不漂亮,但它做的工作:)
Mic*_*man 12
chop,$_{join'',sort split//,lc}.="$_ "for<>;/ ./&&say for%_
Run Code Online (Sandbox Code Playgroud)
请注意,这需要Perl 5.10(用于该say功能).
先前尺寸: 150 159 字符
import Char
import List
x=sort.map toLower
g&a=g(x a).x
main=interact$unlines.map unwords.filter((>1).length).groupBy((==)&).sortBy(compare&).lines
Run Code Online (Sandbox Code Playgroud)
该版本的165个字符符合新的澄清规则:
import Char
import List
y=map toLower
x=sort.y
g&f=(.f).g.f
w[_]="";w a=show a++"\n"
main=interact$concatMap(w.nubBy((==)&y)).groupBy((==)&x).sortBy(compare&x).lines
Run Code Online (Sandbox Code Playgroud)
此版本处理: