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 № 1Die Terminologie dafür ist a Permutation. Ruby hat eine eingebaut Methode dafür:
@array.permutation(3) do |first, second, third|
# do something
end