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 (770 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")