代码高尔夫:找到所有字谜

2024-03-02

一个词是一个anagram http://en.wikipedia.org/wiki/Anagram如果该单词中的字母可以重新排列以形成不同的单词。

Task:

  • 按字符数查找给定单词列表的所有字谜组的最短源代码。

  • 空格和换行符应计为字符

  • 使用代码尺

    ---------10--------20--------30--------40--------50---- ----60--------70--------80--------90--------100--------110- ------120

Input:

a 单词列表 http://cmalabs.com/files/words来自 stdin,每个单词用新行分隔。

e.g.

A
A's
AOL
AOL's
Aachen
Aachen's
Aaliyah
Aaliyah's
Aaron
Aaron's
Abbas
Abbasid
Abbasid's

Output:

所有组的字谜词,每组由单独的线分隔。

运行示例:

./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:更多说明

  • 如果两个单词仅大小写不同,则它们应折叠为同一个单词,并且由您决定折叠单词使用哪种大小写方案
  • 单词组只需以新行结束,只要每个单词以某种方式分隔即可,例如逗号分隔或空格分隔均有效。我了解某些语言内置了快速数组打印方法,因此如果它不输出空格分隔的数组,您应该可以利用它。

Powershell, 104 97 91 86 83 chars

$k=@{};$input|%{$k["$([char[]]$_|%{$_+0}|sort)"]+=@($_)}
$k.Values|?{$_[1]}|%{"$_"}

新要求的更新(+8 个字符):

要排除仅大小写不同的单词,我们可以从输入列表中删除重复项(不区分大小写),即$input|sort -u where -u代表-unique. sort默认情况下不区分大小写:

$k=@{};$input|sort -u|%{$k["$([char[]]$_|%{$_+0}|sort)"]+=@($_)} 
$k.Values|?{$_[1]}|%{"$_"} 

的解释[char[]]$_|%{$_+0}|sort -part

它是哈希表条目的键,在该条目下存储单词的字谜。我最初的解决方案是:$_.ToLower().ToCharArray()|sort。然后我发现我不需要ToLower()对于键,因为哈希表查找不区分大小写。

[char[]]$_|sort将是理想的,但是键的字符排序需要不区分大小写(否则Cab and abc将存储在不同的密钥下)。很遗憾,sort对于字符不区分大小写(仅对于字符串)。

我们需要的是[string[]][char[]]$_|sort,但我找到了一种将每个字符转换为字符串的更短方法,即将其他内容连接到它,在本例中是一个整数0, hence [char[]]$_|%{$_+0}|sort。这不会影响排序顺序,实际的键最终类似于:d0 o0 r0 w0。它不漂亮,但它可以完成工作:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代码高尔夫:找到所有字谜 的相关文章

  • 代码高尔夫:将多个排序列表合并为一个排序列表

    实现一种算法 将任意数量的排序列表合并为一个排序列表 目的是用您喜欢的任何语言创建最小的工作程序 例如 input 1 4 7 2 5 8 3 6 9 output 1 2 3 4 5 6 7 8 9 input 1 10 2 5 6 7
  • Code Golf:重复文本的“颜色突出显示”

    Locked 这个问题及其答案是locked因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 感谢下面的 greg0ire 帮助理解关键概念 挑战 构建一个程序来查找所有子字符串并使用颜色属性 标记 它们 在 XML 中有效
  • Ruby 方法在字符串数组中对字谜进行分组

    我实现了一个对字谜进行分组的功能 简而言之 输入 汽车 for 土豆 racs 四 疤痕 奶油 尖叫 输出 汽车 赛车 疤痕 四 for 土豆 奶油 尖叫 我想知道是否有更好的方法来做到这一点 我真的认为我使用了太多的重复语句 until
  • 如何在纯 C# 和 .Net 框架中编写字谜生成器 [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我想生成给定字符串的字谜输出 而不需要任何外部库 例如 Google 字谜算法助手 的帮
  • 使用 C++ 检查两个字符串是否是字谜

    我想出下面的程序来检查两个字符串是否是字谜 它对于小字符串工作正常 但对于较大的字符串 我尝试过 听过 入伍 它给了我一个 不 Help include
  • Code Golf:数学表达式评估器(尊重 PEMDAS)

    Locked 这个问题及其答案是locked因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我挑战你编写一个遵守 PEMDAS 运算顺序 括号 求幂 乘法 除法 加法 减法 的数学表达式求值器 而不使用正则表达式 预先存在
  • Anagrams - C 中的链式哈希和探测

    我的标题被编辑了 所以我想确保每个人都知道这是作业 问题只是优化程序 散列是我的想法 我正在优化一个 C 程序 该程序将彼此不同的单词组合在一起 然后将它们打印出来 目前的程序基本上是一个链表的链表 外部列表中的每个链接都是一组彼此不同的单
  • 查找无序字谜对子串的数量

    我正在尝试解决以下问题 https www hackerrank com challenges sherlock and anagrams https www hackerrank com challenges sherlock and a
  • 单线打乱程序

    又到了一年中的这个时候 程序员想要对列表进行洗牌 以便没有元素位于其原始位置 至少在荷兰 我们庆祝圣诞老人并挑选稻草来决定谁写一首诗 有没有人有一个不错的Python单一陈述为了那个原因 因此 输入示例 range 10 输出示例 2 8
  • 字谜索引计算[重复]

    这个问题在这里已经有答案了 给定一个由字符 A Z 组成的最长 25 个字符的输入字符串 输出其在输入字符串所有可能的字谜词按字母顺序排序的列表中的索引 输入字符串不区分大小写 输入的字符可以重复 该应用程序必须在 500 毫秒内完成 并且
  • Code Golf:验证数独网格

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 介绍 有效的数独网格由数字 1 到 9 填充 并且数字在 9 行或列的每个子块中出现的次数不会
  • 代码高尔夫:井字棋

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 按字符数发布您的最短代码 以检查玩家是否获胜 如果获胜 是哪一个 假设变量中有一个整数数组b
  • Java 8 Stream 函数将字谜列表分组为列表映射

    Java 8 即将发布 在学习 Streams 时 我遇到了一个使用其中一种新方法对字谜进行分组的场景 我面临的问题是我找不到使用 map reduce 函数对 Strings 对象进行分组的方法 相反 我必须创建与记录类似的方法聚合运算
  • 根据字符集对单词进行聚类

    假设有一个单词集 我想根据它们的字符包 多重集 对它们进行聚类 例如 茶 吃 阿爸 阿阿 你好 将被聚类成 茶 吃 abba aabb 你好 abba and aabb聚集在一起是因为它们具有相同的字符包 即两个a和两个b 为了提高效率 我
  • 代码高尔夫:连接点

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 您可能还记得小时候的这些图画 但现在是时候让计算机绘制它们了 以完整的 ASCII 格式 玩得
  • 字谜算法

    这是为文本生成字谜词的最佳方法 最多 80 个字符长度 例子 输入 狗 输出狗 dgo odg ogd gdo 神 我只是在考虑回溯解决方案 但如果文本较长 这将需要一段时间 另一个想法是我尝试字典中的所有单词 但问题并不要求真正的单词 有
  • 编程高尔夫:玩俄罗斯方块

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 基础知识 考虑以下四格骨牌和空的比赛场地 0123456789 I O Z T L S J
  • 我怎样才能简化或清理这个字谜方法?

    我这里有一个方法 它接受一个字符串数组 并将彼此不同的字符串分组在一起 每个组形成主数组的子数组anagram groups array 输出很好 但我觉得我的代码可能过于复杂 如果不将事物重构为更多方法 如何简化我的逻辑和 或语法 def
  • Code-golf:将乘法表输出到控制台

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我最近向一位从事工作经验的学生推荐了一篇有关将乘法表转储到控制台的文章 它使用嵌套的 for
  • 导致堆栈溢出的最短代码是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • 测试pdo的php代码可用吗?

    我想用PDO http php net manual en book pdo php但我不确定我的主机是否已正确设置 我如何在 PHP 中测试它是否已设置并适用于 MySQL php 5 1 始终安装 PDO 您可以使用 phpinfo 检
  • 扩展方法需要将类声明为静态

    为什么扩展方法要求声明类是静态的 这是编译器的要求吗 它在 C 4 规范的语言规范第 10 6 9 节中规定 当方法的第一个参数 包括 this 修饰符 即 方法被认为是一个扩展 方法 扩展方法只能是 以非泛型 非嵌套方式声明 静态类 第一
  • Three.js:有没有办法获取组的边界框

    我可以为 Threejs js 中的组获取 边界框吗 我在 Three js 中有一个对象列表 我将它们全部分组在一个单元中 我想获取组的高度和宽度 所以我尝试使用 Box3 来确定高度和宽度 有什么方法可以获取 Threejs 中对象组的
  • 在 Rails 集成规范中向同一控制器发出两个请求

    我在 Rails 集成测试中使用 rspec 向同一个 url 发出两个请求时遇到问题 it does something do get something status gt any other header lt lt lt lt lt
  • 如何在 Bash 中通过curl从谷歌驱动器下载大文件?

    我想制作一个非常简单的 bash 脚本 用于通过 google 驱动器下载文件Drive API 所以在这种情况下 谷歌驱动器上有一个大文件 我安装了OAuth 2 0 Playground在我的谷歌驱动器帐户上 然后在Select the
  • 是否有某些情况下 SIGKILL 不起作用?

    是否存在在 Linux 上运行的应用程序未阻止信号的情况SIGKILL 不会被射击杀死SIGKILL signal SIGKILL无法被阻止或忽略 SIGSTOP也不可以 如果进程在系统调用 内部 被阻塞 等待 I O 就是一个例子 等待失
  • 你如何优化你的Javascript?

    嗯 简单的问题 对吧 但没有那么简单的答案 在 Firefox 中 我使用 Firebug 控制台 配置文件 但是 在其他浏览器中该怎么办 像 Internet Explorer Opera Safari 在 Windows 上 随着时间的
  • 如何生成包含 R 中数据帧数据的 QR 码?

    我有一个实验室分析仪 可以生成 csv 或 xlsx 格式的结果 但现在我必须手动将输出结果手动输入到我们的结果跟踪软件系统中 因为复制粘贴不起作用 我想编写一个 R 脚本 可以将 csv 的结果转换为软件程序 我能想到的最好方法是将结果生
  • exec*() 后内存使用情况会发生什么

    C 父程序进行一些处理并分配内存 然后调用 execvp 所有已分配但未释放的内存会发生什么 它是自动释放还是作为垃圾保留 exec 用新程序完全替换了旧进程的内存 这包括所有分配的内存 因此不会留下任何垃圾 但请注意 文件描述符等其他资源
  • 如何理解Haskell中的“柯里化”?

    假设有一个名为 smallerc 的函数 smallerc Integer gt Integer gt Integer smallerc x y if x lt y then x else y 为什么不使用以下方式声明该函数 smaller
  • gcloud 应用程序部署“--appyaml”标志似乎不起作用

    对于 Google App Engine 我想注入env variables进入我的app yaml部署后 在文档中gcloud app deploy 我看到有标志 appyaml这将 使用特定的 app yaml 进行部署 该 app y
  • ASP.NET MVC - 显示项目列表,每个项目都有一个项目列表

    我希望这是解释这一点的最好方式 我有 3 个视图对象 学校 课程和班级 每所学校都有多个课程 每个课程可以有多个班级 将一门课程视为一个学习计划 班级是实际的班级 在我的主视图中 我显示所有学校 然后单击一所学校即可转到它 在该 课程视图
  • Zend Framework:控制器目录中的子目录

    我正在为我的网站使用 Zend Framework 并且刚刚创建了一个特殊的模块 api 来创建 嗯 一个 API 现在 我的模块中有很多控制器 我想在此控制器目录中创建子目录以 整理 它 我的新结构将是这样的 controllers co
  • 根据条件删除整行无法处理 400,000 行

    我有这个宏来删除那些不是 chr9 的整行 我总共有 401 094 行 它似乎编译得很好 但我的 Excel 冻结了 我必须强制退出 我认为这可能是一个低效的算法或者代码中的一些错误 Sub deleteNonChr9 Dim lastr
  • 用 nom 5.0 解析数字

    我正在尝试使用 Nom 5 0 解析一个大文件 数十 GB 流 解析器的一部分尝试解析数字 use nom IResult use nom character streaming char digit1 use nom character
  • 在测试中覆盖 Django 缓存设置

    我在用着Django DummyCache https docs djangoproject com en 1 8 topics cache dummy caching for development然而 在我的测试中 有一些测试依赖于真实
  • Pandas 重新索引数据框问题

    假设我有以下数据框 A B 0 1986 87 232131 1 1987 88 564564 2 1988 89 123125 等等 我正在尝试重新索引
  • 如何更改 heatmap.2 中的颜色键值?

    如上面的截图所示 我使用了该功能heatmap 2 here 我怎样才能改变 Value 在颜色编码栏中任何其他名称 人们可以只使用 gplots 包中的数据 library gplots data mtcars x lt as matri
  • 亚马逊的 AWS.NodeHttpClient - 没有文档:(

    我正在编写一个 lambda 函数 必须将日志写入 Amazon 的 ElasticSearch 服务 后端是Node js 我在 github 上发现了这个例子 https github com awslabs amazon elasti
  • 代码高尔夫:找到所有字谜

    一个词是一个anagram http en wikipedia org wiki Anagram如果该单词中的字母可以重新排列以形成不同的单词 Task 按字符数查找给定单词列表的所有字谜组的最短源代码 空格和换行符应计为字符 使用代码尺