(inspirado na resposta de Helka ao meu pareamento aleatório das tags "xadrez" e "Fibonacci" no bate-papo)
Fibonacci
Os números de Fibonacci são uma das seqüências mais conhecidas da matemática, onde cada número é composto adicionando os dois números anteriores. Abaixo está uma definição da sequência indexada a zero:
f(0) = 0
f(1) = 1
f(n) = f(n-1) + f(n-2)
Isso resulta na sequência 0, 1, 1, 2, 3, 5, 8, 13, 21, ...( link OEIS ). Neste desafio, focaremos apenas os valores estritamente positivos (so 1, 1, 2, 3, ...), e você pode escolher a indexação zero ou a indexação única, mas indique qual em seu envio.
Os números de Fibonacci podem ser usados para um mosaico do plano, usando quadrados de f(n)tamanho sucessivo e alinhando suas arestas. A lado a lado é feita no sentido anti-horário, colocando quadrados no padrão "direita-cima-esquerda-baixo" a partir do quadrado atual. Um exemplo desse ladrilho parcial para f(8)=21, com o quadrado inicial destacado em azul, é o seguinte:

Você pode ver f(1)=1como o quadrado inicial (destacado em azul), o f(2)=1quadrado colocado à direita dele, o f(3)=2quadrado colocado a partir daí, o f(4)=3quadrado colocado à esquerda e assim por diante. O próximo quadrado seria f(9)=21+13=34e seria colocado no fundo. Esse é o método de ladrilhos parciais que usaremos neste desafio.
As rainhas
No jogo de xadrez , a peça mais poderosa é a rainha, porque ela pode mover qualquer número de espaços na horizontal, na vertical ou na diagonal. No diagrama abaixo, os quadrados com um círculo preto mostram onde a rainha pode se mover:

Definiremos o termo cobertura como
A porcentagem de quadrados para os quais a rainha pode se mover em relação ao número total de quadrados, dada a posição específica da rainha em um tabuleiro vazio e incluindo a posição inicial da rainha.
Para o exemplo acima, a cobertura da rainha é 28/64 = 43.75%. Se a rainha estivesse no h8quadrado superior direito , a cobertura seria 22/64 = 34.375%. Se a rainha estivesse e7, a cobertura seria 24/64 = 37.5%.
O desafio
Vamos usar o ladrilho de Fibonacci demonstrado acima como nosso tabuleiro de xadrez para esse desafio. Você receberá dois números inteiros positivos como entrada ne x:
- O
nrepresenta o tamanho da peça. O exemplo lado a lado acima, com o21quadrado à esquerda, é uma placa de tamanhon = 8desdef(8) = 21(quando indexada a zero). - O
xrepresenta qual dos quadrados de Fibonacci é usado para a colocação das rainhas, para o cálculo da cobertura. As rainhas são colocadas uma de cada vez em cada quadrado naquele bloco quadrado de Fibonacci específico, e a cobertura total é o somatório da cobertura individual (única).
Por exemplo, aqui está uma imagem de n = 8(o mesmo lado a lado acima) e x = 4(correspondente ao f(4) = 3quadrado, sombreado em azul). Ao colocar uma rainha uma de cada vez em cada um dos nove quadrados azuis, as rainhas podem (combinadas) cobrir todos os quadrados sombreados em laranja. A cobertura total neste exemplo é, portanto 309/714 = 43.28%.
Obviamente, a qualquer momento n = x, a cobertura será 100%(por exemplo, com n=8e x=8, você pode ver que todos os quadrados de todo o quadro serão cobertos pelo menos uma vez). Por outro lado, com um tamanho adequadamente grande ne x=1ou x=2, a cobertura se aproximará (mas nunca alcançará) 0%(por exemplo, com n=8e x=1, a cobertura é insignificante 88/714 = 12.32%).
Dados dois desses números de entrada, você deve gerar a porcentagem de cobertura, com precisão de duas casas decimais. Especifique como o seu código lida com o arredondamento.
Regras
- A entrada e a saída podem ser fornecidas em qualquer formato conveniente , mas devem ter precisão de duas casas decimais. Especifique como o seu código lida com o arredondamento.
- Suponha que não haja outras peças no tabuleiro ou interfira nos movimentos.
- Um programa completo ou uma função são aceitáveis. Se uma função, você pode retornar a saída em vez de imprimi-la.
- Se possível, inclua um link para um ambiente de teste on-line para que outras pessoas possam experimentar seu código!
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
Exemplos
n = 8, x = 4
43.28
n = 8, x = 8
100 or 100.00
n = 8, x = 1
12.32
n = 4, x = 1
66.67
n = 4, x = 2
60 or 60.00
n = 5, x = 3
75 or 75.00
n = 5, x = 1
47.5 or 47.50

