유전법칙

Lv. 2

Solution

export function inheritance(queries: [number, number][]): ('RR' | 'Rr' | 'rr')[] {
  const query = (gen: number, i: number): 'RR' | 'Rr' | 'rr' => {
    if (gen === 1) {
      return 'Rr';
    }
    const groupSize = 4 ** (gen - 2);
    const groupIndex = Math.floor(i / groupSize);
    if (groupIndex === 0) {
      return 'RR';
    }
    if (groupIndex === 3) {
      return 'rr';
    }
    return query(gen - 1, i % groupSize);
  };
 
  return queries.map(([n, p]) => query(n, p - 1));
}