Dado um número inteiro de entrada n >= 10
, produza a média de todas as rotações deduplicadas do número inteiro.
Por exemplo, para entrada 123
, as rotações são 123
(sem rotação), 231
(uma rotação) e 312
(duas rotações). A média desses é (123 + 231 + 312) / 3
ou 222
.
Como outro exemplo, tome 4928
. As rotações são 4928
, 9284
, 2849
, e 8492
. Tomando a média desses quatro números é igual 6388.25
.
Para um outro exemplo, para a entrada 445445
, as rotações são deduplicados 445445
, 454454
, e 544544
, portanto, a saída é 481481
.
Para entrada 777
, há apenas uma rotação deduplicada, portanto a saída é 777
.
Regras
- Se aplicável, você pode supor que a entrada / saída caiba no tipo Inteiro nativo do seu idioma.
- A entrada e saída podem ser fornecidas por qualquer método conveniente .
- 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.
- 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.
code-golf
math
number-theory
AdmBorkBork
fonte
fonte
Respostas:
Python 3 ,
3836 bytesAceita os dígitos como argumentos separados. Obrigado a @Rod por sugerir Python 3, economizando 2 bytes.
Experimente online!
fonte
APL (Dyalog) , 9 bytes
Uma função monádica tomando um vetor de dígitos como argumento.
Experimente online!
Pego a média dos dígitos
+/÷≢
, repito-a pelo comprimento da entrada≢⍴
e, finalmente, converto da base 10.Conceitualmente, estou tomando a soma das rotações (sem carregar):
Isso é
4+2+9+8
repetido apenas 4 vezes. Em seguida, convertendo da base10
(que carrega para mim) e dividindo pelo comprimento. Embora eu divida pelo comprimento anteriormente, porque é equivalente e salva bytes.fonte
Java 10,
163137767271 bytes-36 bytes graças a @Nevay .
-61 bytes graças a @ OlivierGrégoire , criando uma porta de resposta do @Dennis 'Python 3 .
-1 bytes, tomando a entrada como uma lista de dígitos em vez de String.
Explicação:
Experimente online.
fonte
n->{var s=new java.util.HashSet();var r=0d;for(int l=n.length(),x;l-->0;)if(s.add(x=new Integer(n=n.substring(1)+n.charAt(0))))r+=x;return r/s.size();}
n->java.util.stream.IntStream.range(0,n.length()).map(i->new Integer(n.substring(i)+n.substring(0,i))).distinct().average().getAsDouble()
orElse(0)
vez degetAsDouble()
.(int)
5 bytes de mote, se necessário.Math.pow
já cuida disso. Isso lhe poupará 3 bytes.(int)
e*.1
será, por exemplo, saída em6388.888...
vez de6388.25
para a entrada4928
. E se eu transmitir a coisa toda ou apenas a.pow
um emint
vez disso, ela será exibida6388
.Casca , 5 bytes
Experimente online!
Explicação
Casca , 7 bytes
Experimente online!
Explicação
fonte
5
solução de byteṙ
ouŀ
, e o primeiro caractere (à esquerda) não éA
R ,
847364 bytesExperimente online!
Insira como lista de dígitos.
Obrigado ao MickyT por remover 11 bytes! 8 bytes raspados pela prova de Dennis de que a desduplicação é desnecessária.
fonte
array(D,K+1:0)
é mais curto quematrix(D,K+1,K)
em um byte.05AB1E , 9 bytes
Experimente online!
fonte
v
semy
, interessante.gFÀD})¨Osg/
era onde eu estava pensando..æ = pop a compute permutations by function, usage: .æ<FUNC>}
comando? Eu também não, mas parece adequado para isso.Stax , 6 bytes
Execute e depure
Este programa usa uma string delimitada por aspas como entrada e expressa a média como uma fração reduzida. Por exemplo
777/1
, não é necessário duplicar as rotações. Isso nunca muda o resultado.Descompactado, não jogado e comentado, parece com isso.
Execute este
fonte
Perl 6 , 15 bytes
Experimente online!
A média é a média de dígitos aplicada a cada posição decimal, portanto, a média dos dígitos vezes 111 ....
1 x $_
produz uma sequência de 1s que é coagida pelas seqüências pela multiplicação.Leva uma lista de dígitos como entrada. Uma sequência exigiria um .cache antes da soma, e uma entrada de número ou sequência precisaria de um .comb.
fonte
Wolfram Language (Mathematica) , 22 bytes
Experimente online!
fonte
JavaScript (Node.js) , 43 bytes
Experimente online!
fonte
Gelatina ,
65 bytesExperimente online!
Como funciona
fonte
Japonês , 8 bytes
Recebe a entrada como uma matriz de cadeias de um dígito.
Tente
Explicação
fonte
APL (Dyalog Unicode) ,
2114 bytes SBCSExperimente online!
Função de prefixo tácito. Recebe a entrada como uma sequência.
Agradecemos a Adám por uma economia esclarecedora de 7 bytes .
Quão?
fonte
Python 2,
8377 bytesEDIT: -6 bytes graças a @ovs
fonte
Carvão , 11 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
fonte
J , 10 bytes
Esta é uma porta da ótima solução de APL da H.PWiz para a J.
Leva uma lista de dígitos como argumento.
Explicação:
+/%#
a média dos dígitos (divida%
a soma dos dígitos+/
pelo número#
)#$
cria uma lista de cópias da média de acordo com o número de dígitos10#.
converter base de formulário 10Experimente online!
fonte
Perl 5
-lpF
,2422 bytesExperimente online!
Fazer isso como uma lista de dígitos é apenas 1 byte mais curto e parece trapaça:
Experimente online!
fonte
usrt
? : P/usrt
diretório? De qualquer forma, fixo. ObrigadoRuby , 60 bytes
Experimente online!
fonte
Pari / GP , 34 bytes
Recebe a entrada como uma lista de dígitos.
Experimente online!
fonte
Ruby , 33 bytes
Experimente online!
Um porto de resposta Dennis's Python 3
Aqui está minha tentativa de coxo (74 bytes)
Experimente online!
fonte
C ++,
218208 bytes-10 bytes graças a Zacharý
E, para testar:
fonte
#include
e<
, e pode remover os{}
dois++c;
es+=v;
. Você pode moverint s=0
o início com suas outras variáveis.n=0
segundo loop for, como deveria ter chegado0
até lá.m/=10;m+=std::pow(10.f,c-1)*t;
=>m=m/10+std::pow(10.f,c-1)*t
. E não usaria emint
vez deauto
trabalhar?int s=0;
com suas outras variáveis e precisa das chaves ao redor dos+=v;
?n>0
=>n
pode funcionar.Pitão, 12 bytes
Provavelmente improvável.
Experimente aqui!
fonte
o
. Se você fizer isso e fizer E / S como listas de dígitos, poderá reduzi-lo para 8 bytes .Q
.J, 23 bytes
Recebe entrada como uma string
Explicação
fonte
Matlab, 65 bytes
Vou trabalhar nisso, com certeza pode ser melhor.
fonte
Clojure, 139 bytes
Recursos de linguagem bastante otimizados para converter seqüências de caracteres em números inteiros.
fonte
dc, 37 bytes
Este é um programa completo, lendo a entrada e imprimindo a saída:
Ele funciona separando o número em seus dígitos e multiplicando a média dos dígitos pelo repdigit de comprimento apropriado (que é construído à
d
medida que avançamos).fonte