我怎样才能简化或清理这个字谜方法?

2024-03-17

我这里有一个方法,它接受一个字符串数组,并将彼此不同的字符串分组在一起,每个组形成主数组的子数组anagram_groups array.

输出很好,但我觉得我的代码可能过于复杂。如果不将事物重构为更多方法,如何简化我的逻辑和/或语法?

def combine_anagrams(words)
  anagram_groups = []
  # For each word in array argument
  words.each do |word|

    # Tracking variable for the word
    word_added = false

    anagram_groups.each do |group|
      # Check if word already exists (prevents duplicates)
      if group.include? word
        word_added = true
      # Add word to group if it is an anagram of the first string in the group
      elsif word.downcase.chars.sort == group[0].downcase.chars.sort
        group << word
        word_added = true        
      end
    end

    # If word was not an anagram of anything, create new group (subarray)
    unless word_added
      anagram_groups << [word]
      word_added = true
    end

  end
  return anagram_groups
end

这是用于测试的单词数组:

test_words = ['cars', 'for', 'potatoes', 'racs', 'four', 'scar', 'creams', 'scream']

test_words.group_by{|w| w.each_char.sort}.values

会给

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

我怎样才能简化或清理这个字谜方法? 的相关文章

随机推荐

  • 用户控件在面板上拖放

    我正在制作一个图形编辑器 但在拖放时遇到一些问题Panel 椭圆没有占据我放置它的确切位置 我认为它被放置在大小为 150 150 的 UserControl 中 这是一个短片的链接来说明我的意思 http gyazo com abf548
  • Android 会在更新时清理应用程序缓存吗?

    In this document https developer android com training data storage files 谷歌表示 当用户卸载您的应用时 系统会删除您应用的所有内容 内部存储中的文件 但是 当更新应用
  • R6 类的 S4 调度行为不一致

    实际问题 事实不应该是这样吗R6 https github com wch R6类继承自 非正式 S3 类R6允许为该类的签名参数定义 S4 方法吗 由于事实并非如此 那么符合当前 S3 S4 标准或在这种情况下在某种程度上可以被视为 最佳
  • jQuery:自动触发悬停

    我对列表项有一个悬停鼠标输入鼠标悬停设置 如下所示 main nav li a hover function el this leftPos el position left newWidth el parent width magicNa
  • 使用 Apache POI 编辑 Word 文档 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试读取Word文档模板 然后用用户给定的数据替换模板中的变量 不更改模板上的标题或样式 我不确定我正在做的事情是否正确 但是这
  • 使用 ASP.NET MVC 处理/接收从 WebRTC 或任何基于浏览器的捕获机制到服务器的实时视频网络摄像头流

    我们需要从 WebRTC 或来自客户端网络摄像头的任何其他捕获机制 即使并非所有浏览器都支持 但作为 PoC 捕获实时视频流 该实时视频需要由服务器组件 ASP Net MVC Web API 处理 我想服务器上的代码将如下所示 HttpP
  • 更新 Windows 服务

    我有一个用 net VB net 2 0 编写的 exe 我使用 installutil exe 将其安装为服务 我的问题是 每次更新 exe 时是否都需要完全卸载该服务并重新安装 我尝试停止服务并替换 exe 但它似乎没有反映所做的更改
  • 准确测量一组基准点之间的相对距离(增强现实应用)

    假设我有一组 5 个标记 我正在尝试使用增强现实框架找到每个标记之间的相对距离 例如AR工具包 http www hitl washington edu artoolkit 在我的相机中 前 20 帧仅向我显示前 2 个标记 以便我可以计算
  • Android + Facebook SDK:“由于应用程序名称不匹配,无法对应用程序进行身份验证。”

    当尝试在我的 Android 应用程序上使用 Facebook SDK 时 我收到此错误 由于应用程序名称不匹配 无法对应用程序进行身份验证 请检查对话框中配置的应用程序名称 在阅读了有关此主题的许多帖子后 其他人也遇到了同样的问题并成功纠
  • ggplot2 - 添加 alpha 参数使 PDF 中的所有其他文本变暗/加粗

    我注意到 当我将 alpha 参数添加到几何图形时 当输出为 PDF 时 图表上的所有文本 轴标题等 都会变暗 几乎就像它们变成粗体一样 这似乎与实际的 alpha 值无关 它使图表变得更难看 特别是当每页有多个图表且有大量文本时 还有其他
  • 如何在存储库中实现 IDisposable 继承?

    我正在创建一个通用存储库 但不知道实现处置功能的正确方法是什么 我没有使用 IoC DI 但我将来会重构我的代码来做到这一点 所以 My code IUnitOfWork 接口 namespace MyApplication Data In
  • Eclipse 支持虚拟空白吗?

    不久我将加入一家严重依赖 Eclipse 进行 Java 开发的公司 对于我自己的开发 我专门使用了其他工具 因此我现在在开始合同之前熟悉了 Eclipse 我已经习惯的功能之一是虚拟空白 这允许您单击给定文本区域中的任意位置并开始输入 如
  • 如何更改 VS Code 的合并冲突布局?

    我使用 VS CODE 进行版本控制 使用 git 每次遇到冲突时 VS CODE 都会向我展示一种布局 我可以在一个窗口中看到所有更改 然而 在没有任何建议的情况下 它变成了奇怪的三窗口设计 我什么都看不懂 有人知道我怎样才能回到第一个设
  • Python 元素树 - 从元素中提取文本,剥离标签

    使用 Python 中的 ElementTree 如何从节点中提取所有文本 剥离该元素中的任何标签并仅保留文本 例如 假设我有以下内容
  • 可以打开窗口的 Win32 控制台应用程序

    我的问题很简单 在 Ubuntu 中 程序通常可以使用或不使用 GUI 进行部署 也许可以使用 showGUI 之类的标志 我本质上想在 Windows 中重新创建此功能 但似乎 Windows 应用程序以 win main 开头 而控制台
  • 如何在 CentOS 7.2 上使用 yum 安装 gcc 5.3?

    我使用的是CentOS 7 2 当我使用yum groupinstall Development Tools gcc版本是4 8 5 像这样 我想安装 gcc 5 3 如何解决这个问题yum Update 通常人们想要最新版本的 gcc 并
  • 在 BigQuery 中将大量数据从美国数据集迁移到欧盟数据集的最佳方法?

    我在一个 BigQuery 项目中的大约 100 万个表中拥有许多 TB 这些项目托管在位于美国的多个数据集中 我需要将所有这些数据移动到欧盟托管的数据集 我这样做的最佳选择是什么 我将表导出到 Google Cloud Storage 并
  • 近跨合约调用(允许一个账户将资金从托管释放到另一个账户)

    我正在尝试学习如何允许 1 个帐户 捐赠匹配器 将资金存入第二个帐户 本合同 https github com ryancwalsh donation matching blob 0a7bd3e39e79aec480367d0425d807
  • gcc 中的线程安全原子操作

    在我编写的一个程序中 我有很多代码如下 pthread mutex lock frame gt mutex frame gt variable variable pthread mutex unlock frame gt mutex 如果中
  • 我怎样才能简化或清理这个字谜方法?

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