Oto przykład, który właśnie napisałem, który pobiera tablicę i generuje spacje w razie potrzeby. Można odkomentować zmienną prędkości, aby kontrolować prędkość w czasie wykonywania. Usuń także drugi sen 0.2 Ostatnia część tablicy musi być pusta, aby wyprowadzić całą tablicę, wciąż pracując nad jej naprawieniem.
#@speed = ARGV[0]
strArray = [ "First String there are also things here to backspace", "Second Stringhereare other things too ahdafadsf", "Third String", "Forth String", "Fifth String", "Sixth String", " " ]
#array = [ "/", "-", "|", "|", "-", "\\", " "]
def makeNewLine(array)
diff = nil
print array[0], "\r"
for i in (1..array.count - 1)
#sleep @speed.to_f
sleep 0.2
if array[i].length < array[i - 1].length
diff = array[i - 1].length - array[i].length
end
print array[i]
diff.times { print " " } if !diff.nil?
print "\r"
$stdout.flush
end
end
20.times { makeNewLine(strArray) }
#20.times { makeNewLine(array)}
Hmm, lubię rozwiązanie @ jsegal lepiej, więc wybierz odpowiedź. Pamiętaj, aby nadal "płukać" swoje wyjście. – cam
Jestem tutaj podzielony, ponieważ twoją odpowiedzią jest doskonale działający fragment kodu, o który dokładnie pytałem: rozwiązanie w * Ruby *. Tak, mogłoby być bardziej elegancko, gdyby używał sugestii jsegala. Ale a) odpowiedź jsegala nie jest specyficzna dla rubinu i b) wolę zaakceptować odpowiedź z roboczym ułamkiem. Zamierzam więc zmienić odpowiedź, aby odzwierciedlić sugestię jsegala i kiedy/jeśli ta zmiana zostanie zaakceptowana, przyjmuję twoją odpowiedź i nagrodzę jsegala, głosując na niego. To najlepsze, co mogę zrobić w tym systemie. –
@Steph: Twój dylemat, na który można odpowiedzieć, wydaje się być przede wszystkim oparty na fakcie, że odpowiedź Jsegala nie zawierała fragmentu kodu. Zważywszy, że Stack Overflow nie jest witryną do udostępniania kodu, wydaje się, że jest to dość arbitralne wymaganie. Powinieneś upomnieć się o obie odpowiedzi, jeśli uznasz je za użyteczne, i zaakceptować to, które pomogło ci * najbardziej * w znalezieniu rozwiązania, które zadziałało dla ciebie. –