
|  |      1bigcoon      2014-09-12 15:31:58 +08:00  1 var a = 'abcdefghijklmnopqrstuvwxyz'; var f = function (d, p) { !p && (p = ''); for (var i = 0; i < a.length; i++) { var s = a[i], s2 = p + s; if (s2.length < d)f(d, s2); else console.log(s2); } } f(5); | 
|      2Automan      2014-09-12 15:34:27 +08:00  1 重复还是不重复? | 
|  |      3ChanneW      2014-09-12 15:37:22 +08:00 26^5 | 
|  |      4kamal      2014-09-12 15:43:28 +08:00 这是考手写排列公式? | 
|  |      5clino      2014-09-12 15:44:11 +08:00 python: import itertools print map("".join,list(itertools.product("abcdefghijklmnopqrstuvwxyz",repeat=5))) | 
|  |      6clino      2014-09-12 15:47:46 +08:00  1 不用map会更好一点,这样不会占太多内存 import itertools for l in itertools.product("abcdefghijklmnopqrstuvwxyz",repeat=5):print "".join(l) | 
|  |      7ziyuan      2014-09-12 15:49:23 +08:00  1 java import java.util.ArrayList; import java.util.List; public class Test { private static char[] is = new char[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h','i', 'j', 'k', 'l', 'm', 'n', 'o', 'p','q', 'r', 's', 't', 'u', 'v', 'w', 'x','y','z'}; private static int total; private static int m = 5; public static void main(String[] args) { List<Integer> iL = new ArrayList<Integer>(); new Test().plzh("", iL, m); System.out.println("total : " + total); } private void plzh(String s, List<Integer> iL, int m) { if(m == 0) { System.out.println(s); total++; return; } List<Integer> iL2; for(int i = 0; i < is.length; i++) { iL2 = new ArrayList<Integer>(); iL2.addAll(iL); if(!iL.contains(i)) { String str = s + is[i]; iL2.add(i); plzh(str, iL2, m-1); } } } } | 
|  |      8imn1      2014-09-12 15:52:30 +08:00  2 import itertools list("".join(x) for x in itertools.product('abcdefghijklmnopqrstuvwxyz', repeat=5)) | 
|  |      9YouXia      2014-09-12 15:53:56 +08:00  1 题意有点不明啊,是否有序啊,比如 a b c d e 与 a c b d e 是否相同? | 
|  |      14hahastudio      2014-09-12 16:07:12 +08:00  1 那么就 from itertools import combinations from string import ascii_lowercase as lowercase for c in combinations(lowercase, 5): ....print ''.join(c) | 
|  |      15toctan      2014-09-12 16:07:52 +08:00  4 Ruby ('aaaaa'..'zzzzz').to_a | 
|  |      16imn1      2014-09-12 16:09:20 +08:00 itertools还是太慢了,array+tobytes应该更快,或者用numpy或pandas直接生成一个数字矩阵,再chr/tobytes后合并变形~ 机器太旧,不测试了~ | 
|      18paolongtao      2014-09-12 16:10:44 +08:00 @toctan 哈哈 | 
|  |      19iptux      2014-09-12 16:15:08 +08:00  3 BASH 来一发 ```bash echo {a..z}{a..z}{a..z}{a..z}{a..z} ``` | 
|  |      20ChiangDi      2014-09-12 16:15:26 +08:00 哈哈哈哈看起来没有哪种语言能短过 Ruby 了。/td> | 
|      21minix      2014-09-12 16:20:47 +08:00  1 linux命令符输入 < /dev/urandom LC_CTYPE=C tr -dc a-z | head -c5 | 
|  |      22hahastudio      2014-09-12 17:00:20 +08:00 @toctan 貌似 LZ 要的是组合? | 
|  |      23zhs227      2014-09-12 17:28:01 +08:00 @hahastudio 用node运行了一把楼主的脚本,生成的是排列。 ruby的结果是一样的。 | 
|  |      24hahastudio      2014-09-12 17:30:17 +08:00 @zhs227 LZ 给脚本了? | 
|  |      25zhs227      2014-09-12 17:36:10 +08:00 | 
|  |      26hahastudio      2014-09-12 17:44:54 +08:00 @zhs227 主要是不知道 LZ 指的这个“无序的” 是什么 我觉得应该指的是组合= = | 
|  |      27jevonszmx      2014-09-12 18:28:54 +08:00  1 ```php # 不管有木有重复的 for($i = 0;$i < 5;$i ++){ echo chr(rand(97,122)); } # 不能有重复的 $chars = array(); for($i = 97;$i <= 122;$i ++){ $chars = array_unique($chars); if (5 == count($chars)) { break; } $chars[] = chr(rand(97,122)); } $chars = implode('', $chars); echo($chars); ``` | 
|      29billlee      2014-09-12 18:52:34 +08:00  1 char str[] = "aaaaa"; while(str[0] <= 'z'){ printf("%s\n", str); for(int i=4; i>=0; i--){ str[i]++; if(str[i] > 'z'){ str[i] = 'a'; }else{ break; } } } | 
|  |      30ffffwh      2014-09-12 18:59:29 +08:00 排列组合嘛,好像够资格上算法书了。 当然库函数就。。。 | 
|      31feiyuanqiu      2014-09-12 20:22:01 +08:00 for ($i = 'a'; $i <= 'zzzzz'; $i++) { var_dump($i); } | 
|  |      32lightening      2014-09-12 20:34:17 +08:00 | 
|      33feiyuanqiu      2014-09-12 20:39:44 +08:00 31楼的回复有问题,我改了一下...但是现在有需求要做,待会才有时间调试... | 
|  |      34jesse_luo      2014-09-12 21:19:41 +08:00 #include <stdio.h> #define LEN 5 void gen(char *str, int last) { char i; for (i = 'a'; i <= 'z'; i++) { *str = i; if (0 != last) gen(str+1, last-1); else printf("%s\n", str-LEN+1); } } int main() { char str[LEN]; gen(str, LEN-1); } c的…… | 
|      35feiyuanqiu      2014-09-12 21:25:08 +08:00 for ($i = 'aaaaa'; $i <= 'zzzzz'; $i++) { var_dump($i); } 好了,php的 | 
|  |      36jucelin      2014-09-12 21:25:40 +08:00 题主要的是 “五位长度的所有字符串” ,楼上们提供的有点不对题吧 | 
|  |      37P233      2014-09-12 21:30:46 +08:00  1 | 
|  |      38P233      2014-09-12 21:35:04 +08:00 打错了 22 行 $2 应该是 $e | 
|      39feiyuanqiu      2014-09-12 21:42:19 +08:00 @P233 终于遇见一个用 birds of paradise 主题的了...有品位! | 
|  |      40P233      2014-09-12 22:01:56 +08:00 @feiyuanqiu 一直觉得这个看着比较舒服,设计也很合理 :) | 
|  |      41zhs227      2014-09-12 22:08:40 +08:00 @lightening 高手,刚出去的路上还在想着组合有什么办法呢, Rails的数组太强大了 | 
|      42artwalk      2014-09-12 22:25:08 +08:00 ```Swift let alp = "abcdefghijklmnopqrstuvwxyz" func puts (s:String, i:Int) { if i <= 0 { println(s) return } for c in alp { puts (("\(c)" + s), i - 1) } } puts ("", 5) ``` 求更简单的办法 PS: 1. Playground 测试用的 `puts ("", 3)` ,没敢直接上 5 2. Ruby 的太变态了,这也是我喜欢的原因 | 
|  |      43orzfly      2014-09-12 22:29:38 +08:00 @lightening combination 是不会重复的,你需要 repeated_combination。 [*?a..?z].repeated_combination(5).map(&:join) | 
|  |      44orzfly      2014-09-12 22:30:59 +08:00 顺带一提 ruby 还可以这样…… [*?a*5..?z*5] | 
|  |      45zakokun      2014-09-12 22:41:10 +08:00  1 这是我写的很傻的php....生成的文件有67M...... <script src="https://gist.github.com/zakokun/f7fbe7e3f9d7410396e7.js"></script> | 
|      46feiyuanqiu      2014-09-12 23:21:37 +08:00 | 
|  |      47lightening      2014-09-12 23:29:08 +08:00 @orzfly 啊,看错需求了…… | 
|  |      48zakokun      2014-09-12 23:37:24 +08:00 @feiyuanqiu 看了下你写的,好神奇......学习了 | 
|  |      49xiaowangge      2014-09-12 23:52:36 +08:00  1 | 
|  |      50xiaowangge      2014-09-13 00:01:27 +08:00 又读了一遍需求,是「所有」 :-) | 
|      51feiyuanqiu      2014-09-13 00:59:05 +08:00 @zakokun ...我的写错了,不能用 <=号,只能用< 或者!=。 原因是:在PHP中,对字母进行增减运算时遵循的是Perl的方式而不是C的,在Perl中,是通过首字母比较大小:比如,b > az。 具体到这里: 当$i = 'zzzzz'的时候,$i <= 'zzzzz'是成立的,循环不会终止,这时$i++ => 'aaaaaa','aaaaaa' < 'zzzzz',循环继续...直到$i = 'yzzzzz',这时,$i < 'zzzzz',$i++ => 'zaaaaa', $i > 'zzzzz',循环终止。所以最后一个输出是 ’yzzzzz'; http://stackoverflow.com/questions/4098345/why-doesnt-this-code-simply-print-letters-a-to-z 修改之后是这样的: for ($i = 'aaaaa'; $i < 'zzzzz'; $i++) { echo $i; } echo $i; 或者: $c = 'aaaaa'; for ($i = 0; $i < 11881376; $i++) { echo $c++; } | 
|  |      52mudenng      2014-09-13 01:00:50 +08:00 C++版的。。。就是个DFS   | 
|      53feiyuanqiu      2014-09-13 01:03:40 +08:00 for ($c = 'aaaaa', $i = 0; $i < 11881376; $i++, $c++) { echo $c; } | 
|  |      54zeq      2014-09-13 08:36:06 +08:00 | 
|  |      56jsq2627      2014-09-13 12:17:12 +08:00 上面都是发代码的,我来发点算法的知识吧。 http://www.cnblogs.com/autosar/archive/2012/04/08/2437799.html | 
|  |      57zakokun      2014-09-13 13:00:18 +08:00 @feiyuanqiu 确实,不能用 $i <='zzzzz' 但我想了下, 'zaaaaa', 依然是小于 'zzzzz'的诶,直到 $i='zzzzzy'的时候,$i+1='zzzzzz'这时候才大于'zzzzz' 才会跳出循环.是这样吧? | 
|      58feiyuanqiu      2014-09-13 13:11:07 +08:00  1 @zakokun 实际上是zzzzyz | 
|  |      59cha1      2014-09-13 13:23:59 +08:00 @xiaowangge 你这样好像是随机产生 'a-zA-Z'的5位数字吧? 我这边的运行结果: src ./test.py RVTwn src ./test.py akJtF src ./test.py IXSJU | 
|  |      60zakokun      2014-09-13 13:29:19 +08:00 @feiyuanqiu you are right...... | 
|  |      61coolicer      2014-09-13 14:33:40 +08:00 ruby开挂啊 | 
|  |      62jedihy      2014-09-13 21:30:56 +08:00 via iPhone 这是算法题,用dfs |