ruby

場合の数 10個のりんごを3人に分ける

www.youtube.comを見ても全然わからなかったので、プログラムの力を使って強引に解いてみた。 count = 0 (1..10).each do |i| (1..10).each do |j| (1..10).each do |k| if i + j + k == 10 count += 1 puts "#{i} #{j} #{k} count => #{count}" end end end…

rubyでクイックソート

def quick(a) return a if a.length <= 1 left = [] right = [] p = 0 p_s = [] a.each_with_index do |v,i| next if i == 0 if v > a[p] right.push(v) elsif v < a[p] left.push(v) else p_s.push(v) end end p_s.push(a[p]) quick(left) + p_s + quick(ri…

rubyで選択ソート

def s_sort(a) i = 0 j = 1 tmp = nil while i < a.length while j < a.length if a[i] > a[j] tmp = a[j] a[j] = a[i] a[i] = tmp end j +=1 end i += 1 j = i + 1 end a end def test_s_sort assert_equal([1,2,3], @o.s_sort([3,2,1])) assert_equal([1,5…

rubyで2分探索

class Search def binary(ary,v) point = ary.length / 2 while true if v < ary[point] if point == 0 point = nil break end point = point / 2 elsif v > ary[point] if point == ary.length - 1 point = nil break end point = (point + ary.length) / 2…

rubyで挿入ソート

def insert(ary) res = [] ary.each do |value| if res.length == 0 res << value else res.length.times do |j| if value <= res[j] (res.length - 1).downto(j) do |k| res[k + 1] = res[k] end res[j] = value break end end end end res end assert_equa…

rubyでバブルソート

class Sort def bubble(ary) max = ary.length - 1 tmp = nil until max == 0 (0..max).each do |i| break if i == max if ary[i] > ary[i + 1] tmp = ary[i + 1] ary[i + 1] = ary[i] ary[i] = tmp end end max -= 1 end ary end end require "test/unit" r…

10進数を2進数と16進数に自分で変換する

10進数を16進数にするコードだけ作っていたつもりだったんだけど、 テストコードを走らせたら、2進数の変換もそのまま行けたので追記。 コード class Radix def conv(num,radix) res = [] overmeasure = nil #剰余 count = 1 aliquot = nil #約数 numbers = …

素数判定

力技でアルゴリズムもクソもないけど。一応動いたので記録 def prime?(num) return false if [0,1].include?(num) return true if num == 2 max = num - 1 (2..max).each do |i| return false if num % i == 0 end true end #動作検証コード (0..100).each d…