前提・実現したいこと
「正の整数kに対し,k個の正の整数a1,a2,...,akが次の条件をみたすとき長さkの良い数列とよぶことにする.・すべて30以下で異なる.・i=1,2,...,k-1に対し,iが奇数ならばai+1はaiの倍数である.iが偶数ならば,ai+1はaiの約数である.良い数列の長さとしてありうる最大の値を求めよ.」
この問題を解いてくれるプログラムを作ろうと思っています.パーミュテーションを用いて長さ30から長さ1までの全ての数列を全部作り、そこから条件でフィルタリングすれば求めたいプログラムが製作できることはわかったのですがパーミュテイションをした後に条件でフィルタリングする方法が分かりません.
発生している問題・エラーメッセージ
パーミュテイションを用いたときの条件のフィルタリングの方法が分かりません.
該当のソースコード
python
1import itertools 2inp_list = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30] 3permutations = [] 4for i in range(1,len(inp_list)+1): 5 permutations.extend(list(itertools.permutations(inp_list, r=i))) 6print(permutations)
試したこと
googleで様々なサイトを閲覧したのですが理解できませんでした.
補足情報(FW/ツールのバージョンなど)
「ai+1」の「+1」がどこにかかっているか分かりにくいので問題の出典を記載ください。