以下のコードはできるだけ少ない行に減らそうとしています。私はそれを短縮するために使用することができる他のルビーのトリックですか?私は誰もが提供できるすべての助けに感謝します。ルビーコードカット(可能な限り数行)
条クラス:
class Article
attr_accessor :id, :price, :quantity
def initialize(id, price, quantity)
@id, @price, @quantity = id, Float(price), quantity.to_i
end
end
注文クラス:
class Order
def initialize(name)
@a, i = [], 0
input = File.open(name, "r")
while(id = input.gets.chomp)
j, price = 0, input.gets.chomp
while(j<@a.length)
if(@a[j].id.eql?(id.to_i))
@a[j].quantity += 1
end
end
else
@a[i] = new Article(id,price,1)
i+=1
end
end
end
def orderCost
sum = 0
@a.each { |e| sum+=(e.price * e.quantity)}
sum = ((sum*1.07) + 2.99)
end
def displaySelectArticles
min, max = @a[0], @a[0]
@a.each do |e|
if(min.cost > e.cost)
min = e
end
if(max.cost < e.cost)
max = e
end
sum += e.cost*e.quantity and q += e.quantity
end
puts "Min: #{min.cost} | Max: #{max.cost} | Avg: #{Float(sum)/q}"
end
end
また、このコードを作成するためのより良い方法が見つかった場合は、是非お知らせください。私はこのコードをできるだけ効率的にしようとしています。 –
あなたがゴルフしていない限り、コードサイズについて心配するべきではありません。読みやすさについてもっと心配してください。 – Carcigenicate
あなたはhttp://codegolf.stackexchange.com/を知っていますか?このタイプの質問をするより良い場所かもしれません。 – kristianp