/ / Ruby Refactoring Problem - Ruby, Refactoring

Ruby Refactoring Problem - Ruby, Refactoring

Sagen wir, ich habe eine @array = [1 ,2 ,3] Ich möchte drei Blöcke von jeder Nummer des Arrays mit dem Rest wie folgt erstellen:

@array.each do |first|
(@array - [first]).each do |second|
(@array - [first] - [second]) do |third|
#do something

Daher durchläuft jeder Block das gesamte Arrayaußer dem Element, das vom vorhergehenden Block verwendet wird. Aber das ist irgendwie stinkend und repetitiv, weil ich für jeden Block die vorhergehenden Elemente löschen muss, was ist der beste Weg, diese Blöcke umzuformen?

Vielen Dank

Antworten:

2 für die Antwort № 1

Die Terminologie dafür ist a Permutation. Ruby hat eine eingebaut Methode dafür:

@array.permutation(3) do |first, second, third|
# do something
end