20以上のアイテムのリストを配列として読み込み、リストから4つのアイテムのすべての組み合わせを生成するBashスクリプト

20以上のアイテムのリストを配列として読み込み、リストから4つのアイテムのすべての組み合わせを生成するBashスクリプト

38ワード(1行に1つ)のリストを含む "ingredients.txt"ファイルがあります。配列で読む方法を見つけました。

getArray() {
    array=() 
    while IFS= read -r line 
    do
        array+=("$line")
    done < "$1"
}

getArray "ingredients.txt"

しかし、今38のリストから正確に4つの単語のすべての組み合わせを出力する方法は何ですか?

編集:コメントに応じて順列ではなく組み合わせを意味し、重複は効果がありません。各組み合わせには4つの固有の単語があります。

もっと明確に説明するには、これをバッグから38色のビーズ4個を選ぶと考えてみてください。 2つの色が同じではありません。赤の組み合わせを一度描画すると、その組み合わせに対して他の赤の組み合わせを描画することはできません。 4つを塗り、色を記録し、再びバッグに入れて4つを塗ります。 {ブルー、イエロー、パープル、レッド}と{イエロー、パープル、レッド、ブルー}を取得すると、別々にカウントされません。私は順列ではなく組み合わせをしたいです。

また、玉ねぎ、チーズ、肉、レタス、ニンジン、セロリ、てんとう根、レタス、セロリ、酢などの各組み合わせ(成分リストに戻る)を印刷したいと思います。

これがはっきりしていることを願っています。

ベストアンサー1

Pythonでは:

import itertools.combinations

with open('ingredients.txt') as fd:
    words= fd.readlines()
    for combination in itertools.combinations(words, 4):
        print(combination)

おすすめ記事