チャレンジ
2つの正の整数nとkを引数として取り、各k番目の人をカウントアウトした後、nから残っている最後の人の数を返す関数を記述します。
これはコードとゴルフのチャレンジなので、最短のコードが優先されます。
問題
n人(1からnまでの番号が付けられている)が円の中に立っており、一人が残るまで各k -thがカウントされます(対応するウィキペディアの記事を参照)。この最後の人の番号を決定します。
たとえば、k = 3の場合、 2人はスキップされ、3人目はカウントされます。すなわち、n = 7の場合、番号は3 6 2 7 5 1(詳細は1 2 3 4 5 6 7 1 2 4 5 7 1 4 5 1 4 1 4)の順序でカウントアウトされるため、答えは4です。
例
J(7,1) = 7 // people are counted out in order 1 2 3 4 5 6 [7]
J(7,2) = 7 // people are counted out in order 2 4 6 1 5 3 [7]
J(7,3) = 4 // see above
J(7,11) = 1
J(77,8) = 1
J(123,12) = 21