生成所有可能的字符串组合

2024-03-20

我正在尝试生成字符串的所有可能组合。

例如对于以下列表:a1q5z!H9、b1q5z!H9、c1q5z!H9、d1q5z!H9、a2q5z!H9 ... 等

我不想做很多嵌套循环,而是想用 MODULO 尝试一些聪明的东西……但碰壁了。

这是我想出的 Javascript - 有什么指示可以告诉我如何继续吗?

var c = [
  ['a', 'b', 'c', 'd'],
  ['1', '2', '3', '4'],
  ['q', 'w', 'e', 'r'],
  ['5', '6', '7', '8'],
  ['z', 'x', 'c', 'v'],
  ['!', '"', '£', '$'],
  ['H', 'J', 'K', 'L'],
  ['9', '8', '7', '6'],
];

var o = document.getElementById('output');
var pw = "";
var chars = c.length;

for( var i = 0; i <20; i++)
{
  pw = ""
  for(var j = 0; j < chars; j++ )
    {
      pw += c[j][i%4];
    }
  op(pw);
}

function op(s)
{
  o.innerHTML = o.innerHTML + "<br>" + s;
}

这只是输出列表中的前 20 个,但会重复......我几乎拥有它,但不完全是。任何帮助或指示表示赞赏。


写一个递归函数很容易demo http://jsfiddle.net/tarabyte/tKM2c/.

function permutate(abc, memo) {
    var options;
    memo = memo || abc.shift().slice(0);

    if(abc.length) {
        options = abc.shift();

        return permutate(abc, memo.reduce(function(all, item){
            return all.concat(options.map(function(option){
                return item + option;
            }))
        }, []));       
    }

    return memo;
};

console.log(permutate(c).length); //65536 items

或者更命令式的方法

function permutate2(abc) {
    var options, i, len, tmp, j, optionsLen, 
        memo = abc.pop().slice(0); //copy first the last array

    while(options = abc.pop()) { //replace recursion
        tmp = [];
        optionsLen = options.length;
        for(i = 0, len = memo.length; i < len; i++) { //for every element in memo
            for(j = 0; j < optionsLen; j++) { //do cartesian product with options
                tmp.push(options[j] + memo[i]);    
            }
        }
        memo = tmp;
    }

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

生成所有可能的字符串组合 的相关文章

随机推荐

  • Python 2.7 的蓝牙? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 对 Python 2 7 进行蓝牙编程的最佳方法是什么 我尝试使用pybluez https code
  • 使用预定脚本部署 Shiny App

    我有一个简单的脚本 可以在 Rstudio 中用于部署应用程序 rsconnect setAccountInfo name xx token xx secret xx xx library rsconnect deployApp xxx l
  • 链接后台 NSURLSession 上传

    有人成功链接 NSURLSession 后台上传吗 我正在尝试使用 NSURLSession 的后台上传来上传 5 MB 的巨大视频文件 上传必须按顺序进行 整个事情在前台工作得很好 我为此使用 AFNetwoking 它是多部分上传 但是
  • 尝试从一个页面推送到另一页面时出现“找不到组件工厂”错误

    尝试从一个页面推送到另一页面时出现错误 当我尝试推送到同一页面时 它不会给出该错误 只有我在从一个页面推送到另一页面时遇到错误 setRoot 也没有给出错误 this navCtrl push Page7 我已将 Page7 添加到 ap
  • Pandas fillna() 基于特定列属性

    假设我有这张桌子 Type Killed Survived Dog 5 2 Dog 3 4 Cat 1 7 Dog nan 3 cow nan 2 其中的价值之一Killed缺少 Type Dog 我想将平均值归咎于 Killed for
  • 最好的 SQL Server 性能优化技术是什么? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我始终采取的方法是首先使用最少的索引集部署数据库 然后根据性能要求添加 更改索引 这种方法效果相当好 但是 它仍然没有告诉我可以在哪里
  • Rails 4.0 的自定义错误处理

    我正在使用 Ruby 2 0 和 Rails 4 0 构建 Ruby on Rails api 我的应用程序几乎只是一个 JSON API 因此如果发生错误 500 404 我想捕获该错误并返回格式良好的 JSON 错误消息 我试过了thi
  • 子集化 data.frame 时的 NA 会发生一些意想不到的事情

    考虑以下代码 当你没有明确测试NA在您的情况下 该代码将在稍后您的数据发生更改时失败 gt A toy example gt a lt as data frame cbind col1 c 1 2 3 4 col2 c 2 NA 2 3 c
  • 如何使 MapView 对象透明(alpha)?

    All 我需要在 MapView 对象上显示信息 那里没有问题 问题是 有时 MapView 对象显示的地图详细信息在视觉上与我的叠加数据相竞争 因此 我想做的是提供一种通过使用 alpha 通道在视觉上 缩小 MapView 对象的方法
  • 如何自动检测用户的时区?

    您好 我正在创建一个网络应用程序 如果用户注册 我们将显示创建日期 为此 我们在我的sql表中使用当前时间戳 它显示服务器时间 但我们不知道如何根据用户时区转换时间 因为我们不是获取用户所在国家 地区 任何人都可以帮我解决它吗 提前致谢 使
  • “return 0”和“exit (0)”之间的区别[重复]

    这个问题在这里已经有答案了 有什么区别吗return 0 and exit 0 在函数中使用时 如果是 我应该什么时候使用return 0 or exit 0 在一个函数中 return退出该函数 同时exit退出程序 In main函数执
  • backbone.js 收集事件

    我开发了一个 jquery 和backbone js 网络应用程序 一个组件有一个 html 表 该表后面是一个backbone js 集合 该集合中的任何更改都会导致 html 表的更新 所以我写 this collection bind
  • UITableView重新加载数据

    我正在为 iPhone 制作一个基于导航的应用程序 我的视图控制器之一如下所示 interface NewComputerViewController UIViewController
  • 什么时候会使用 BRICK 权限?

    在Android中 曾经有一个名为BRICK http developer android com reference android Manifest permission html BRICK可用于潜在地禁用该设备 除了将其视为都市神话
  • 除 None 之外的任何类型的 Mypy 注释[重复]

    这个问题在这里已经有答案了 我怎样才能注释一个类型 除了None 换句话说 这个类型是Any但不是None 你可以做Union int str 但排除None来自那个工会
  • Scala Futures 如何与 flatMap 链接在一起?

    我正在 Scala 中首次使用 Futures 并且正在研究使用 flatMap 组合器的示例 我一直在关注这个讨论 http docs scala lang org overviews core futures html http doc
  • 当构建系统已引用 System.Core 时,添加对 System.Core 的引用

    即使项目已生成 Visual Studio Intellisense 也无法识别动态关键字 我尝试添加对System Core来解决问题 我收到此错误 无法添加对 System Core 的引用 该组件是 已经被构建系统自动引用 我注意到我
  • 从 Eclipse 和命令行运行时,BufferedImage 字节具有不同的字节顺序

    我试图转换一个BufferedImage s byte 从 32 位 RGBA 到 24 位 RGB 根据这个答案 https stackoverflow com a 9470843 2581401最快的方式获得byte 从图像中可以看出
  • AWS - 对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头

    我对 AWS 还很陌生 所以请耐心等待 我目前正在制作一个具有上传照片功能的网络应用程序 我想将这些照片保存在 S3 存储桶中 并将对它们的引用保存在我的数据库中 我目前正在遵循本指南 http docs aws amazon com sd
  • 生成所有可能的字符串组合

    我正在尝试生成字符串的所有可能组合 例如对于以下列表 a1q5z H9 b1q5z H9 c1q5z H9 d1q5z H9 a2q5z H9 等 我不想做很多嵌套循环 而是想用 MODULO 尝试一些聪明的东西 但碰壁了 这是我想出的 J