Ruby :: Aufgabe #2
2 Lösungen
Zahlenfolge berechnen und fortsetzen
Anfänger - Ruby
von pocki
- 24.11.2012 um 19:50 Uhr
Es soll eine Zahlenfolge wiefolgt berechnet werden:
Die nacheinander folgenden gleichen Zahlen werden gezählt und zusammen mit der Zahl ausgegeben.
Aus der neu berechneten Zahlenfolge errechnet sich die nächste.
Beispiel:
1. Folge: 112
2. Folge: 2112 (2 Einser und 1 Zweier)
3. Folge: 122112 (1 Zweier, 2 Einser, und 1 Zweier)
usw.
Es soll nun mit dieser ersten Folge startend die 15. Folge berechnet und ausgegeben werden.
Wenn mehrstellige Zahlen vorkommen sind diese gleich auszugeben. Bsp: 12 Einser = 121
Die nacheinander folgenden gleichen Zahlen werden gezählt und zusammen mit der Zahl ausgegeben.
Aus der neu berechneten Zahlenfolge errechnet sich die nächste.
Beispiel:
1. Folge: 112
2. Folge: 2112 (2 Einser und 1 Zweier)
3. Folge: 122112 (1 Zweier, 2 Einser, und 1 Zweier)
usw.
Es soll nun mit dieser ersten Folge startend die 15. Folge berechnet und ausgegeben werden.
Wenn mehrstellige Zahlen vorkommen sind diese gleich auszugeben. Bsp: 12 Einser = 121
Lösungen:
Ruby-Code
def change(str) newstr = "" vergleich = str[0] count = 0 pos = 0 while pos < (str.size ) do if vergleich == str[pos] then count +=1 else newstr = newstr + count.to_s + vergleich count = 1 vergleich = str[pos] end pos +=1 end newstr = newstr + count.to_s + vergleich return newstr end str = "112" print "1. Folge: ", str, "\n" for i in 2..20 do str = change(str) print i, ". Folge: ", str, "\n" end
Ruby-Code
=begin By Lars I. Lines of code: 20 =end #============================================================================================ def numberSequence(line) =begin In: - starting line Out: - number sequence upto the 15. sequence =end #Section - CODE #Section - Completing the numbersequence puts "1. Sequence:\t#{line}" 2.upto(15) do |i| counter = 0 compval = line[0] line2 = "" 0.upto(line.length) do |pos| if line[pos] == compval then counter += 1 else line2 += counter.to_s + compval counter = 1 compval = line[pos] end end puts "#{i}. Sequence:\t#{line2}" line = line2 end end numberSequence("112")