如何生成一個嵌套數組,該數組包含6個數字的所有可能的4位組合以及重復值?紅寶石

給定數字n=1、2、3、4、5、6。

我想生成一個嵌套數組S,該數組將包含n的所有可能的4位組合。由于6^4=1296,因此將有1296個可能的組合。

示例:S=[[1,1,1,1],[1,1,1,2],[1,1,2,2]...[6,6,6,6]]

我用值為[1,1,1,1]的第一個索引開始嵌套循環,然后使用范圍為0..1295的for in循環,并嘗試將S[I]的值帶入S[I+1],然后增加S[I+1][x]的值,其中x總是從3開始,然后遞減,直到達到0,然后再次變為3。我的過程的問題是,當我試圖增加S[i+1][x]時,S[i]也會增加其S[i][x]。在下面的代碼中,S被稱為'all_possible_combinations'

all_possible_combinations = Array.new(1296) {Array.new(4)}
all_possible_combinations[0] = [1, 1 ,1 ,1]
x = 3
for i in 0..1295
    if i + 1 == 1296
        break
    else
        all_possible_combinations[i+1] = all_possible_combinations[i]
        all_possible_combinations[i+1][x] += 1
        x -= 1
        if x == 0
            x = 3
        end
    end
end

[附圖顯示了調試過程,其中Si][x]也會增加

? 最佳回答:

可以按如下方式計算該數組。

a = [1, 2, 3, 4, 5, 6]
b = a.repeated_permutation(4).to_a
  #=> [[1, 1, 1, 1], [1, 1, 1, 2], [1, 1, 1, 3], [1, 1, 1, 4], [1, 1, 1, 5],
  #    [1, 1, 1, 6], [1, 1, 2, 1], [1, 1, 2, 2], [1, 1, 2, 3], [1, 1, 2, 4],
  #    ...
  #    [6, 6, 5, 3], [6, 6, 5, 4], [6, 6, 5, 5], [6, 6, 5, 6], [6, 6, 6, 1],
  #    [6, 6, 6, 2], [6, 6, 6, 3], [6, 6, 6, 4], [6, 6, 6, 5], [6, 6, 6, 6]]
b.size
  #=> 1296

See Array#repeated_permutation

如果數組a可能包含重復項,并且您希望刪除重復排列,那么您可能希望附加數組#uniq。

a = [1, 1, 3, 1, 1, 6]
b = a.repeated_permutation(4).to_a.uniq
  #=> [[1, 1, 1, 1], [1, 1, 1, 3], [1, 1, 1, 6], [1, 1, 3, 1],
  #    [1, 1, 3, 3], [1, 1, 3, 6], [1, 1, 6, 1], [1, 1, 6, 3], 
  #    [1, 1, 6, 6], [1, 3, 1, 1], [1, 3, 1, 3], [1, 3, 1, 6],       
  #    [1, 3, 3, 1], [1, 3, 3, 3], [1, 3, 3, 6], [1, 3, 6, 1],
  #    [1, 3, 6, 3], [1, 3, 6, 6], [1, 6, 1, 1], [1, 6, 1, 3],
  #    [1, 6, 1, 6], [1, 6, 3, 1], [1, 6, 3, 3], [1, 6, 3, 6],
  #    [1, 6, 6, 1], [1, 6, 6, 3], [1, 6, 6, 6], [3, 1, 1, 1],
  #    [3, 1, 1, 3], [3, 1, 1, 6], [3, 1, 3, 1], [3, 1, 3, 3],
  #    [3, 1, 3, 6], [3, 1, 6, 1], [3, 1, 6, 3], [3, 1, 6, 6],
  #    [3, 3, 1, 1], [3, 3, 1, 3], [3, 3, 1, 6], [3, 3, 3, 1],
  #    [3, 3, 3, 3], [3, 3, 3, 6], [3, 3, 6, 1], [3, 3, 6, 3],
  #    [3, 3, 6, 6], [3, 6, 1, 1], [3, 6, 1, 3], [3, 6, 1, 6],
  #    [3, 6, 3, 1], [3, 6, 3, 3], [3, 6, 3, 6], [3, 6, 6, 1],
  #    [3, 6, 6, 3], [3, 6, 6, 6], [6, 1, 1, 1], [6, 1, 1, 3],
  #    [6, 1, 1, 6], [6, 1, 3, 1], [6, 1, 3, 3], [6, 1, 3, 6],
  #    [6, 1, 6, 1], [6, 1, 6, 3], [6, 1, 6, 6], [6, 3, 1, 1],
  #    [6, 3, 1, 3], [6, 3, 1, 6], [6, 3, 3, 1], [6, 3, 3, 3],
  #    [6, 3, 3, 6], [6, 3, 6, 1], [6, 3, 6, 3], [6, 3, 6, 6],
  #    [6, 6, 1, 1], [6, 6, 1, 3], [6, 6, 1, 6], [6, 6, 3, 1],
  #    [6, 6, 3, 3], [6, 6, 3, 6], [6, 6, 6, 1], [6, 6, 6, 3],
  #    [6, 6, 6, 6]]
b.size
  #=> 81
主站蜘蛛池模板: 亚洲毛片不卡av在线播放一区| 美女啪啪一区二区三区| 国产亚洲情侣一区二区无码AV| 国产电影一区二区| 久久99精品免费一区二区| 精品亚洲福利一区二区| 91一区二区三区四区五区| 中文无码AV一区二区三区| 国产一区二区好的精华液 | 精品国产一区二区22| 成人一区二区三区视频在线观看| 亚洲一区二区成人| 国产福利精品一区二区| 日韩人妻无码一区二区三区综合部| 国产精品一区二区久久乐下载| 亚洲国产AV一区二区三区四区| 精品无码一区二区三区爱欲 | 日本在线一区二区| 日韩制服国产精品一区| 免费av一区二区三区| 中文字幕一区二区三区有限公司| 精品无码人妻一区二区三区不卡 | 欧洲精品码一区二区三区免费看| 夜夜精品视频一区二区| 夜夜高潮夜夜爽夜夜爱爱一区| 无码人妻精一区二区三区| 精品国产一区二区三区www| 天堂va视频一区二区| 国产乱子伦一区二区三区| 日韩美女在线观看一区| 精品女同一区二区三区免费播放| 一区二区三区在线免费观看视频| 日韩十八禁一区二区久久| 精品国产日韩亚洲一区| 精品一区二区三区免费| 亚洲AV成人一区二区三区在线看| 一区高清大胆人体| 无码人妻av一区二区三区蜜臀| 日韩一区二区三区免费体验| www一区二区三区| 久久精品一区二区|