Skip to content

Instantly share code, notes, and snippets.

View shinokada's full-sized avatar

Shinichi Okada shinokada

View GitHub Profile
# file content
#
# 17
# 10
# 16
# 3
# 7
File.readlines(file_name).map(&:chomp).map(&:to_i)
# read number to array [17, 10, 16, 3, 7]
$: << File.join(File.dirname(__FILE__), '..', 'lib')
require 'pry' if ENV['APP_ENV'] == 'debug' # add `binding.pry` wherever you need to debug
require 'fish'
def read_file_to_arr(file_name)
# ['17, 10, 16 3, 7']
# ["4", "bar", "abracadabra", "bear", "bar", "baraxbara"]
File.readlines(file_name).map(&:chomp)
end
# Assign array values to different variables
a = [99, 97, 89, 99, 97]
v1, v2, *v3 = a.join(',').split(',')
# => ["99", "97", "89", "99", "97"]
v1
# => "99"
v2
# => "97"
v3
# => ["89", "99", "97"]
def insertionsort(num)
for j in 1..(num.length - 1) do
key = num[j]
i = j - 1
while i >= 0 and num[i] > key
num[i+1] = num[i]
i = i - 1
end
num[i+1] = key
end
# return max hash key-value pair
def largest_hash_key(hash)
hash.max_by{|k,v| v}
end
hash = {"ZZ" => 0, "CA"=>2, "MI"=>1, "NY"=>1}
p largest_hash_key(hash) # return ["CA", 2]
# return largest hash key pair
p hash.max
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",