Algoritmo en Ruby Binarios
Publicado por kristian (1 intervención) el 23/04/2018 14:01:30
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
0