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:
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
=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")
