[问题] 排列组合问题

楼主: feynmankao (最爱我的老婆!)   2016-05-19 00:50:04
大家好,我是python初学者,碰到一个各位高手应该都可以秒杀的问题
我现在想要弄出一个list含有一个变量n: 先称为L(n)
L(n) 是一堆list 组成的 list。
L(1) = [[1],[2],[3],[4]]
L(2) = [[1,1],[1,2],[1,4],[2,1],[2,2],[2,3],[3,2],[3,3],
[3,4],[4,1],[4,3],[4,4]]
...
简单的说 L(n) 是所有长度为 n 且满足下列条件(1)(2)(3) list L(n)[i] 的 list
条件(1): 在 L(n)[i] 里的 元素都取自 [1,2,3,4]
条件(2): 元素1和3 不能相邻; 2和4不能相邻
条件(3): L(n)[i] 头尾二个元素要满足,如果头是1,尾就不能是3;
头是3,尾就不能是1; 头是2,尾就不能是4; 头是4 尾就不能是2
作者: IKAFIRE (没有)   2016-05-19 01:08:00
itertools.product()再用你的规则下去筛选?
作者: chienweichih ((゚д゚))   2016-05-19 01:12:00
直觉的做法是三个条件写三个if, 然后暴力解
作者: bibo9901 (function(){})()   2016-05-19 01:39:00
其实就是{1,3}和{2,4}两类交错排列而已只要先产出字典序最小的 剩下的用旋转就好了嗯...想想不用这么麻烦
作者: IKAFIRE (没有)   2016-05-19 02:02:00
他同数字可以相邻,所以不是13和24交错排
作者: SocketAM2 (AM2)   2016-05-19 02:13:00
ATCG
楼主: feynmankao (最爱我的老婆!)   2016-05-19 02:29:00
请问各位高手,能多给一些线索或是资料吗?我是真的菜不是假的菜,如果可以多给一点线索的话,我应该可以模仿写出来~ 谢谢大家~
作者: s06yji3 (阿南)   2016-05-19 02:32:00
Back tracking
作者: bigpigbigpig (To littlepig with love)   2016-05-19 02:37:00
用 zip 和 set 就可以搞定了 :)
作者: s06yji3 (阿南)   2016-05-19 02:37:00
https://goo.gl/PRz1gs我好像忘了加重复判断
作者: mikapauli (桜花)   2016-05-19 02:51:00
把将条件3变成固定头尾所得到集合记为L(n,h,t)则L(n)为其中12个L(n,h,t)的连集L(n,h,t)为9个L(n-2,h,t)的连集,递回可得。看起来像被条件3筛选的双生成自由群
楼主: feynmankao (最爱我的老婆!)   2016-05-19 03:24:00
m大真眼尖,这的确跟F2(2个生成元的自由群)有关谢谢大家,我会研究看看的~
作者: bigpigbigpig (To littlepig with love)   2016-05-19 07:41:00
楼主: feynmankao (最爱我的老婆!)   2016-05-19 08:38:00
感谢大猪大~
作者: mikapauli (桜花)   2016-05-19 16:05:00
minimal normal subgroup?好像也不是
楼主: feynmankao (最爱我的老婆!)   2016-05-24 09:44:00
我是要cyclically reduced words的列表

Links booklink

Contact Us: admin [ a t ] ucptt.com