Foros del Web » Programando para Internet » Ruby »

Ruby - Reto personal Algoritmo con Binarios

Estas en el tema de Ruby - Reto personal Algoritmo con Binarios en el foro de Ruby en Foros del Web. Acabo de iniciar con retos diarios de desarrollo en ruby, les dejo la imagen del algoritmo que empece a resolver el objetivo es conseguir la ...
  #1 (permalink)  
Antiguo 23/04/2018, 20:07
 
Fecha de Ingreso: enero-2015
Ubicación: Veenzuela
Mensajes: 3
Antigüedad: 3 años, 8 meses
Puntos: 0
Pregunta Ruby - Reto personal Algoritmo con Binarios



Acabo de iniciar con retos diarios de desarrollo en ruby, les dejo la imagen del algoritmo que empece a resolver

el objetivo es conseguir la brecha mas larga en una cadena binaria
ejemplo:

N : 1041
binario : 10000010001

brecha mas larga : 5
brecha mas corta : 3

por ahora ya he adelantado algunos pasos basicos

- Random del numero N (entero)
- Convertir a Binario
- Almacenar en un array
- Iterar parte del array para conseguir los (1) y (0)

Código:
n = rand(7.. 1000)
def convertir (no)
 
 
	guardoposicion =0
	@pos  = Array.new
        @vectbin  = Array.new
 
 
 
		puts 'el numero aleatorio es ' + no.to_s
		bin = no.to_s(2)
		puts 'el numero Binario es ' + bin
		tam = bin.length()
 
 
		puts 'Cantida de numeros binarios: ' + tam.to_s
		@vectbin = bin
 
        @vectbin.each_char.with_index do |valor, posicion|
        puts "En la posicion [ #{posicion} ] tenemos: #{valor} "
            if valor == '1'
            	guardoposicion = posicion
            	#puts 'posicion : ' + guardoposicion.to_s
            	@pos = posicion
 
 
				         @pos.to_s.each_char do |elemento|
					        	print "Nuevo vector [ ", elemento, " ]"
					        	puts
					            puts
 
			             end
 
            end
         end
 
end
 
 
convertir(n)
Estoy teniendo problemas para comparar las posiciones de los 1 (binario)
tenia pensado conseguir la brecha mas larga restando las posiciones de los (1)

ejempleo:

N : 1041
binario : 10000010001
vector posiciones de (binario 1) --> [0][6][10]
Restar (0 - 6) - 1 = 5
Restar (6 - 10) - 1 = 3



La zona horaria es GMT -6. Ahora son las 15:13.