• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

neon_prannock

[Ruby] Parse integer

1 mensagem neste tópico

Vou aproveitar para postar aqui um função que criei, depois de um desafio no #p@p

A ideia era criar uma função que processa-se um número inteiro, passado numa cadeia de caracteres, sobre a regra: /espaço* [sinal] digitos* espaços*/

def numero(char)
valor = char-"0"[0]
       	valor	
end

def p_int(i_string)
s_end = i_string.length-1
n = 0
0.upto(s_end) do |p| 
	n = n + (numero(i_string[p]) * (10 ** (s_end - p)))
end
n
end

def parse_integer cadeia
s_start = 0
s_end = cadeia.length
r_start = 0
r_start = cadeia =~ /\d/
if r_start != 0
	sinal = cadeia[r_start-1,1] if cadeia[r_start-1,1] != /\s/ 
end
r_final = cadeia[r_start,s_end] =~ /\s/
numero = p_int(cadeia[r_start,r_final])
numero *= -1 if sinal == "-"
numero	
end

Sei que existe uma função '.to_i' para simplificar o trabalho, mas essa não era a ideia.  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora