Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/04/2018, 20:07
kasnino
 
Fecha de Ingreso: enero-2015
Ubicación: Veenzuela
Mensajes: 3
Antigüedad: 9 años, 3 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