次の要素を循環させたいと思います。
[1,2,11,12,21,22,111,112,121,122、....、222222]
または例えば
[1,2,3,11,12,13,21,22,23,31,32,33,111,112,113、... 333333333]
どうすればJavaで作成できますか?私の特定のケースでは、4桁(1、2、3、4)を使用し、最後の数字の長さは1から10までです。
私はなんとかPythonとPHPでそれを行うことができました。最初のケースでは、リストよりもリストを使用しました。[[1]、[2]、]から始めて、リストのすべての要素に1と2を追加したので、[[1,1]、[1,2]、[2,1]、[2 、2]]など:
nchips = sum(chips)
traj = [[]]
last = [[]]
while len(last[0]) < nchips:
newlast = []
for tr in last:
for d in [1,2,3,4]:
newlast.append(tr + [d])
last = newlast
traj += last
PHPでそれを行ったとき、基数3の数値を使用しました。しかし、それはトリッキーでエレガントではないソリューションでした。
for ($i=-1; $i<=$n; $i+=1) {
if ($i>-1) {
$n5 = base_convert($i,10,5);
$n5_str = strval($n5);
$tr = array();
$found = 0;
for ($j=0; $j<strlen($n5_str); $j+=1) {
$k = $n5_str[$j];
if ($k==0) {
$found = 1;
break;
}
array_push($tr,$k);
}
if ($found==1)
continue;
} else {
$tr = array();
}
}
Javaで簡単に実行できますか?