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 3
está nas posições 1, 10, 16
, o dígito 1
está nas posições, 2, 4
etc.
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 r
no 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:
_p
e_oNo
é necessária para imprimir o número aleatório._p
Faz xxx e_oNo
faz yyy._p
e_oNo
nã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 N
está 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 < 1
ou 0 <= random <= 1
?