samedi 8 décembre 2007

LIFO : Pile en Ruby

LIFO : Last In First Out : le dernier arrivé est le premier à sortir. En français une "pile", en anglais une "stack". Alors oui, je suis un escroc : mon code est celui de hier pour les files, adapté à cette structure informatique classique. Mais ma foi ça marche alors pourquoi s'en priver ?

Le code :


class Lifo

def initialize an_array
@conten = an_array
end

def add val
@conten.push val
end

def add_sev an_arr
for i in an_arr
self.add i
end
end

def remove number = 1
temp = @conten[0, @conten.size-number]
@conten = temp
end

def lenght
@conten.size
end

def cell int
@conten[int]
end

def print
str = ""
for i in (0...@conten.size)
str = str + "[ " + @conten[i].to_s + " ]->"
end
str = str + " nil "
puts str
end

def include? val
@conten.include? val
end

end

Exemple :

Un exemple typique : un plaquage en rugby.

a = Lifo.new ["Victime","Chabal","Clerc","Dusautoir"]
a.print
a.add "Ibanez"
a.print
puts "Coup de sifflet !"
a.remove 3
a.print
puts "Allez l'animal, c'est fini !"
a.remove
a.print
puts "Alors, il est bon le gazon ?"

0 commentaires: