Skip to content

Instantly share code, notes, and snippets.

@uu59
Created October 13, 2011 09:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save uu59/1283818 to your computer and use it in GitHub Desktop.
Save uu59/1283818 to your computer and use it in GitHub Desktop.
# -- coding: utf-8
=begin
http://ameblo.jp/shibuya/entry-11045885401.html
・下位5%をD評価とする
・D評価1回でイエローカード、2回目でレッドカードとなり、2回目で部署異動または退職勧奨のいずれか
このルールで何回目の査定で従業員が0になるか(D評価をつけるべき人がいなくなるか)を計算するスクリプト
=end
# http://ja.wikipedia.org/wiki/%E3%82%B5%E3%82%A4%E3%83%90%E3%83%BC%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88
members = (1..796).to_a
d_count = {}
d_count.default = 2
loop.with_index do |_,n|
n += 1
puts "査定第#{n}回開始 残従業員数#{members.length}"
members.sort_by{rand}.take((members.length / 20.0).ceil).each{|n|
if (d_count[n] -= 1) == 0
if rand(2) == 0
members.delete(n) # fired
d_count.delete(n)
else
d_count[n] = 2 # 人事異動でD評価もリセット、残留
end
end
}
if members.length == 0
puts "="*80
puts "#{n}回目の査定において、D評価をつけるべき人がいなくなりました。"
break
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment