【发布时间】:2011-02-03 16:29:19
【问题描述】:
如果单词中的字母可以重新排列以形成不同的单词,则该单词是anagram。
任务:
-
按字符数查找给定单词列表的所有字谜集的最短源代码。
-
空格和换行应该算作字符
-
使用码尺
---------10--------20--------30--------40--------50- -------60--------70--------80--------90--------100------ -110-------120
输入:
来自标准输入的list of words,每个单词由一个新行分隔。
例如
A
A's
AOL
AOL's
Aachen
Aachen's
Aaliyah
Aaliyah's
Aaron
Aaron's
Abbas
Abbasid
Abbasid's
输出:
所有字谜组,每组由单独的行分隔。
示例运行:
./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
...
我有一个 149 字符 perl 解决方案,我会在更多人发布后立即发布 :)
玩得开心!
编辑:澄清
- 假设字谜不区分大小写(即大小写字母相同)
- 只应打印多于 1 件的套装
- 每组字谜只能打印一次
- 字谜集中的每个单词只能出现一次
EDIT2:更多说明
- 如果两个单词仅大小写不同,则应将它们折叠成同一个单词,由您决定为折叠的单词使用哪种大写方案
- 单词集只需要以新行结尾,只要每个单词以某种方式分开,例如逗号分隔或空格分隔有效。我了解某些语言内置了快速数组打印方法,因此如果它不输出空格分隔的数组,您应该可以利用它。
【问题讨论】:
-
听起来 Prolog 中的解决方案可以很短。
-
大小写是否等价?
-
只打印多于一项的套装?
-
两个问题:1) 如果单词列表中有两次相同的单词但在不同的情况下,“Azalea”和“azalea”,这算作一个字谜(就像下面的大多数解决方案一样),还是必须将它们折叠成一个单词,如果没有其他字谜,不输出? 2)输出格式是否必须与上述完全匹配?还是可以接受像 '["milepost","polemist"]' 这样的每行输出?
-
您应该在问题meta.stackexchange.com/questions/24242中明确添加最短代码要求