Uma representação de precisão dupla de um decimal só pode garantir uma precisão de 15 casas decimais, portanto, pi é aproximado como:
3.141592653589793
Você pode ver que o dígito 3está nas posições 1, 10, 16, o dígito 1está nas posições, 2, 4etc.
Desafio
Sua tarefa é criar um programa ou função que crie um número duplo aleatório entre 0 e 1 e mapeie os valores desse número no valor de pi. Você faz isso colocando os diferentes dígitos nos números aleatórios na posição que o dígito possui em pi. Se o dígito não for encontrado em pi, você o ignorará e todos os dígitos em pi que não estejam no número aleatório serão representados por um x. Cada valor pode ser usado apenas uma vez, começando pela esquerda.
Alguns exemplos provavelmente tornarão isso mais claro. Nos exemplos a seguir, o primeiro número é pi, o segundo é o número aleatório e o último é a saída desejada.
3.141592653589793
0.111111111111111
x.1x1xxxxxxxxxxxx
3.141592653589793
0.531000000000000
3.1xx5xxxxxxxxxxx
3.141592653589793
0.123456789123456
3.141592653x8x7xx
3.141592653589793
0.967552381459391
3.14159265358979x
Regras:
- A função não deve receber nenhuma entrada (uma possível exceção é explicada no ponto 3 do marcador)
- A saída deve consistir apenas na sequência de saída, com uma nova linha opcional (um único espaço à direita também é aceito)
- Se o seu programa não possui um valor Pi incorporado, e / ou um RNG, você pode codificar Pi e pegar o número aleatório como entrada. Você não pode codificar o número aleatório ou usar o Pi como entrada.
- Tanto o valor codificado para Pi quanto os 15 dígitos aleatórios (você pode pular,
0.pois sabe que ficará entre 0 e 1), serão incluídos na contagem de bytes. - Se o seu idioma não tiver a precisão necessária, você poderá usar menos precisão nas seguintes restrições
- Os dígitos do Pi devem ser precisos até a precisão que você possui
- Você não pode produzir mais valores do que os que estão garantidos, ou seja, não pode produzir 15 dígitos se a precisão permitir apenas 8 casas decimais precisas.
- O valor codificado do Pi contará como 16 bytes (você não precisa do ponto decimal), mesmo se o seu programa suportar apenas 8 dígitos.
- O valor de entrada para o número aleatório contará como 15 bytes (você não precisa
0.. Isso ocorre porque idiomas com baixa precisão não devem ter uma vantagem injusta. - O programa deve suportar precisão de 5 casas decimais (pelo menos).
- Editar: para validar a resposta: O número aleatório deve ser impresso de alguma forma, mas esta operação não precisa ser incluída na contagem de bytes. Por exemplo, se for possível inserir um
print rno final do script, essa parte não aumentará a pontuação. - Você não pode subtrair os bytes se fizer parte de outra operação necessária. Ou seja, se o código for
print pi, r, você poderá subtrair apenas, r. - Se você precisar inserir partes em vários lugares do código, inclua as duas versões (aquela que imprime o número aleatório e a que não imprime com um comentário como:
_pe_oNoé necessária para imprimir o número aleatório._pFaz xxx e_oNofaz yyy._pe_oNonão será incluído na contagem de bytes.
O código mais curto em bytes vence.
Entre os melhores
O snippet de pilha na parte inferior desta postagem gera o catálogo a partir das respostas a) como uma lista da solução mais curta por idioma eb) como uma tabela geral de líderes.
Para garantir que sua resposta seja exibida, inicie-a com um título, usando o seguinte modelo de remarcação:
## Language Name, N bytes
onde Nestá o tamanho do seu envio. Se você melhorar sua pontuação, poderá manter as pontuações antigas no título, identificando-as. Por exemplo:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Se você quiser incluir vários números no cabeçalho (por exemplo, porque sua pontuação é a soma de dois arquivos ou você deseja listar as penalidades do sinalizador de intérpretes separadamente), verifique se a pontuação real é o último número no cabeçalho:
## Perl, 43 + 2 (-p flag) = 45 bytes
Você também pode transformar o nome do idioma em um link que será exibido no snippet:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
0 < random < 1ou 0 <= random <= 1?
