Angenommen, es ist ein Array wie diese:in Ruby
list = ["a", "a", "a", "b", "b", "c", "d", "e", "e"]
Wir wollen einen Zyklus schaffen, wo jeder nächste Element unterscheidet sich von dem vorhergehenden Element ist und das erste Element ist anders das letzte Element.
required = ["a", "b", "a", "b", "a", "c", "e", "d", "e"]
Wie wird das in Rubin gemacht?
def create_cycle
temp = Array.new($input)
i, j, counter = 0
while i == 0
while (counter != $input.length)
j = rand(1..$input.length-1).floor
unless !($input[i][0].to_s.eql?$input[j][0])
$solution.push($input[i])
$solution.push($input[j])
puts input[i], input[j]
$input.delete_at(i)
$input.delete_at(j)
counter = counter + 1
end
end
end
end
Ich versuche, dies zu lernen. Danke für Ihre Hilfe.
Zusätzliche Hinweise:
- Die Elemente a, b, c, d, e repräsentieren spezielle Format-Strings, wo
eine bestimmte Eigenschaft ist unter ihnen gemeinsam, so dass das erste Element "a" Aktien ein Eigenschaft mit dem nächsten Element "a", aber ist nicht gleich der erste. - Wenn es nicht möglich ist, einen Zyklus zu erstellen, genügt es, ein Flag in der Befehlszeile zu setzen.
Was ist, wenn es nicht möglich ist? Sprich: [a, a, a, b]? – Anand
Vielen Dank, dass Sie darauf hingewiesen haben, @Anand. Wir müssen den Benutzer nur informieren, falls ein Zyklus nicht möglich ist. Cary, danke für deinen Vorschlag. Ich werde das sofort einbeziehen. – Deucalion