Кирил обнови решението на 29.10.2012 00:11 (преди около 12 години)
+class Song
+ attr_accessor :name, :artist, :album
+
+ def initialize(hash)
+ @name = hash[:name].chomp
+ @artist = hash[:artist].chomp
+ @album = hash[:album].chomp
+ end
+end
+
+class Collection
+ include Enumerable
+
+ def initialize(songs)
+ @songs = songs
+ end
+
+ def each
+ @songs.each { |song| yield song }
+ end
+
+ def self.parse(text)
+ songs = text.lines.each_slice(4).to_a.map do |song|
+ Song.new({ name: song[0], artist: song[1], album: song[2] })
+ end
+ self.new songs
+ end
+
+ def names
+ @songs.map { |song| song.name }.uniq
+ end
+
+ def artists
+ @songs.map { |song| song.artist }.uniq
+ end
+
+ def albums
+ @songs.map { |song| song.album }.uniq
+ end
+end
+
Идентация.
Упс, бъзиках неща из vim-а си и съм изтървал това. Ще го оправя на 2 спейса.