Skip to content

Instantly share code, notes, and snippets.

@Shinichi-Ohki
Last active October 14, 2015 16:00
Show Gist options
  • Save Shinichi-Ohki/b08d53a989e40e1dfeea to your computer and use it in GitHub Desktop.
Save Shinichi-Ohki/b08d53a989e40e1dfeea to your computer and use it in GitHub Desktop.
7種類から重複ありで4つ選ぶ組み合わせを出力するスクリプト

7種類から重複ありで4つ選ぶ組み合わせを出力するスクリプト

7つある要素から重複あり(同じ要素が何度でも使える)で4つ選ぶ組み合わせを出力します。 組み合わせなので、例えば(2,3,4,4)と(4,3,4,2)は同じとみなして1つと数えます。 詳細は「重複組合せ」で検索してみてください。

Rubyで書こうかと思っていたらPythonだとそのまんまのメソッドを持つモジュールがあったので日和りました。
と思ったらRubyでもrepeated_combinationメソッドありました。検索力が低かっただけでした。Rubyのも足しました。
Pythonのが行数が多いのは作者のPython力が低いからです。

# -*- coding: utf-8 -*-
import itertools
seq = ('A','B','C','D','E','F','F')
listarray = itertools.combinations_with_replacement(seq,4)
count = 0
for items in listarray:
print "%s,%s,%s,%s" % (items[0],items[1],items[2],items[3])
count += 1
# print "%i patterns" % c
seq = ['A','B','C','D','E','F','F']
count = 0
seq.repeated_combination(4) { |a, b, c, d| begin
printf("%s,%s,%s,%s\n", a, b, c, d)
count += 1
end
}
#printf("%i patterns\n" % count)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment