Skip to content

Instantly share code, notes, and snippets.

View shinokada's full-sized avatar

Shinichi Okada shinokada

View GitHub Profile
grid = {0=>0, 1=>0, 2=>0, 3=>0, 4=>0, 5=>1, 6=>0, 7=>0, 8=>0, 9=>0, 10=>0, 11=>0, 12=>0, 13=>0, 14=>2, 15=>1, 16=>2, 17=>0, 18=>0, 19=>0, 20=>0, 21=>0, 22=>0, 23=>3, 24=>3, 25=>4, 26=>3, 27=>2, 28=>0, 29=>0, 30=>0, 31=>0, 32=>0, 33=>1, 34=>5, 35=>5, 36=>4, 37=>2, 38=>1, 39=>0, 40=>0, 41=>0, 42=>0, 43=>1, 44=>2, 45=>4, 46=>3, 47=>1, 48=>0, 49=>0, 50=>0, 51=>0, 52=>0, 53=>0, 54=>1, 55=>1, 56=>2, 57=>0, 58=>0, 59=>0, 60=>0, 61=>0, 62=>0, 63=>0, 64=>0, 65=>0, 66=>0, 67=>0, 68=>0, 69=>0, 70=>0, 71=>0, 72=>0, 73=>0, 74=>0, 75=>0, 76=>0, 77=>0, 78=>0, 79=>0, 80=>0, 81=>0, 82=>0, 83=>0, 84=>0, 85=>0, 86=>0, 87=>0, 88=>0, 89=>0, 90=>0, 91=>0, 92=>0, 93=>0, 94=>0, 95=>0, 96=>0, 97=>0, 98=>0, 99=>0}
gridcount = grid.values.inject(Hash.new(0)){|m,n| m[n] += 1;m }
p gridcount # return {0=>77, 1=>8, 2=>6, 3=>4, 4=>3, 5=>2}
arr = [1, 1, 1, 2, 3]
freq = arr.inject(Hash.new(0)) { |h,v| h[v] += 1; h }
#=> {1=>3, 2=>1, 3=>1}
arr.max_by { |v| freq[v] }
#=> 1
# method 1
hash = [[:first_name, 'Shane'], [:last_name, 'Harvie']].inject({}) do |result, element|
result[element.first] = element.last
result
end
hash # => {:first_name=>"Shane", :last_name=>"Harvie"}
# method 2
# method 1
class Array
def cumulative_sum
sum = 0
self.map{|x| sum += x}
end
end
p [1,2,3,4].cumulative_sum
ROMAN_MAP = { 1 => "I",
4 => "IV",
5 => "V",
9 => "IX",
10 => "X",
40 => "XL",
50 => "L",
90 => "XC",
100 => "C",
400 => "CD",
a = [[1, 2, 'apple'], [2, 6, 'banana'], [3, 10, 'egg']]
for no, num, item in a
p "Shopping list #{no}: #{num} #{item}"
end
@data = [
["M" , 1000],
["CM" , 900],
["D" , 500],
["CD" , 400],
["C" , 100],
["XC" , 90],
["L" , 50],
["XL" , 40],
["X" , 10],
# strange splat
[*0..9] # [1,2,3,4,5,6,7,8,9]
# http://endofline.wordpress.com/2011/01/21/the-strange-ruby-splat/
# splat creates an array
first, *list = [1,2,3,4] # first= 1, list= [2,3,4]
*list, last = [1,2,3,4] # list= [1,2,3], last= 4
first, *center, last = [1,2,3,4] # first= 1, center= [2,3], last=4
a = *"Hello" #=> ["Hello"]
[1,2,3,4].inject(:+) # 10
[1,2,3,4].inject:+ # 10
#!/usr/bin/ruby
# http://zetcode.com/lang/rubytutorial/io/
$stdout = File.open "output.log", "a" # redirect a standard output to a log file.
puts "Ruby"
puts "Java"
$stdout.close
$stdout = STDOUT # Use predefined standard constant STDOUT to recreate the normal standard output
puts "Python"