Ruby :: Aufgabe #2

2 Lösungen Lösungen öffentlich

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

Lösungen:

1x
vote_ok
von pianoplayer (1330 Punkte) - 29.11.2013 um 21:36 Uhr
Quellcode ausblenden 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

vote_ok
von Idef1x (1320 Punkte) - 23.01.2018 um 14:46 Uhr
Quellcode ausblenden 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")
1809897

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.