Skip to content

Instantly share code, notes, and snippets.

@PurityControl
Created November 5, 2015 12:06
Show Gist options
  • Save PurityControl/c8e3bc8a18651fa5513d to your computer and use it in GitHub Desktop.
Save PurityControl/c8e3bc8a18651fa5513d to your computer and use it in GitHub Desktop.
Quick and dirty perms script for tansaku
names = ["Pablo", "Dan", "Andrew", "Tom", "Rob", "Jay", "Norm", "Yev"]
def make_pairs_from_perms perms
full_set = []
perms.each do |x|
z = []
x.each_slice(2){|y| z << y}
full_set << z
end
full_set
end
def quick_filter_sort perms
perms.map{|x| x.map(&:sort)}.map(&:sort).uniq
end
def no_dups lst
dups = lst.dup
acc = []
pairs_seen = []
until dups.empty?
cmbn = dups.pop
if cmbn.any?{|pair| pairs_seen.include?(pair)}
else
acc << cmbn
cmbn.each{|pair| pairs_seen << pair}
end
end
acc
end
perms = names.permutation
paired_perms = make_pairs_from_perms perms
filtered = quick_filter_sort paired_perms
no_dups(filtered).each{|x| p x}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment