Ruby - Algoritmo en Ruby Binarios

 
Vista:
sin imagen de perfil
Val: 1
Ha disminuido su posición en 7 puestos en Ruby (en relación al último mes)
Gráfica de Ruby

Algoritmo en Ruby Binarios

Publicado por kristian (1 intervención) el 23/04/2018 14:01:30
bin

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)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Emanuel
Val: 19
Ha mantenido su posición en Ruby (en relación al último mes)
Gráfica de Ruby

Algoritmo en Ruby Binarios

Publicado por Emanuel (7 intervenciones) el 10/04/2019 21:47:58
Una solución simple y rápida es
1
2
3
4
5
6
binary.split(/1/).max.size
=begin
binary es la variable que almacena la cadena de 0 y 1
divido la cadena por los 1's que tenga, luego
solicito la cadena de 0's más larga, y capturo el tamaño de esta cadena
=end

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Emanuel
Val: 19
Ha mantenido su posición en Ruby (en relación al último mes)
Gráfica de Ruby

Algoritmo en Ruby Binarios

Publicado por Emanuel (7 intervenciones) el 14/05/2019 02:16:32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
module ToBinary
   def to_binary
       n = self
       b = [ self == 0 ? 0 : nil ]
       [b.unshift(n%2), n /= 2] while n > 0
       b.join
   end
end
 
class Integer
   include ToBinary
end
 
def solution n
   binary = n.to_binary
   unless binary.end_with? "1"
       binary.split(/1/)[0...-1].max.size
   else
       binary.split(/1/).max.size
   end
end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar