Étant donné un entier en entrée n >= 10
, affichez la moyenne de toutes les rotations dédupliquées de l'entier.
Par exemple, pour la saisie 123
, les rotations sont 123
(aucune rotation), 231
(une rotation) et 312
(deux rotations). La moyenne de ceux-ci est (123 + 231 + 312) / 3
ou222
.
Comme autre exemple, prenez 4928
. Les rotations sont 4928
, 9284
, 2849
et 8492
. Prendre la moyenne de ces quatre nombres est égal 6388.25
.
Pour un autre exemple, pour les entrées 445445
, les rotations sont dédupliquées 445445
, 454454
et 544544
, de sorte que la sortie est 481481
.
Pour l'entrée 777
, il n'y a qu'une seule rotation dédupliquée, donc la sortie l'est 777
.
Règles
- Le cas échéant, vous pouvez supposer que l'entrée / sortie s'adaptera au type Integer natif de votre langue.
- L'entrée et la sortie peuvent être fournies par n'importe quelle méthode pratique .
- Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
code-golf
math
number-theory
AdmBorkBork
la source
la source
Réponses:
Python 3 ,
3836 octetsPrend les chiffres comme arguments séparés. Merci à @Rod d'avoir suggéré Python 3, économisant 2 octets.
Essayez-le en ligne!
la source
APL (Dyalog) , 9 octets
Une fonction monadique prenant comme argument un vecteur de chiffres.
Essayez-le en ligne!
Je prends la moyenne des chiffres
+/÷≢
, puis je la répète par la longueur de l'entrée≢⍴
, et enfin convertis à partir de la base 10.Conceptuellement, je prends la somme des rotations (sans porter):
Ceci est simplement
4+2+9+8
répété 4 fois. Puis conversion de la base10
(qui fait le transport pour moi) et division par la longueur. Bien que je divise par la longueur plus tôt, car elle est équivalente et économise des octets.la source
Java 10,
163137767271 71 octets-36 octets grâce à @Nevay .
-61 octets grâce à @ OlivierGrégoire en créant un portage de réponse @Dennis 'Python 3 .
-1 octets en prenant l'entrée comme une liste de chiffres au lieu d'une chaîne.
Explication:
Essayez-le en ligne.
la source
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)
au lieu degetAsDouble()
.(int)
pour 5 octets, si nécessaire.Math.pow
en occupez déjà. Cela vous épargnera 3 octets.(int)
et*.1
il sera par exemple en sortie6388.888...
au lieu de6388.25
pour l'entrée4928
. Et si je jette le tout ou simplement le.pow
vers un à laint
place, il sortira6388
.Husk , 5 octets
Essayez-le en ligne!
Explication
Husk , 7 octets
Essayez-le en ligne!
Explication
la source
5
solution d'octetsṙ
ouŀ
, et le premier caractère (à gauche) ne l'est pasA
R ,
847364 octetsEssayez-le en ligne!
Saisie sous forme de liste de chiffres.
Merci à MickyT pour avoir rasé 11 octets! 8 octets rasés par la preuve de Dennis que la déduplication n'est pas nécessaire.
la source
array(D,K+1:0)
est plus court quematrix(D,K+1,K)
d'un octet.05AB1E , 9 octets
Essayez-le en ligne!
la source
v
sansy
, intéressant.gFÀD})¨Osg/
était où je pensais..æ = pop a compute permutations by function, usage: .æ<FUNC>}
commande? Moi non plus, mais cela me semble approprié.Stax , 6 octets
Exécuter et déboguer
Ce programme prend en entrée une chaîne délimitée par des guillemets et exprime la moyenne sous forme de fraction réduite. par exemple
777/1
il n'est pas nécessaire de dédoublonner les rotations. Cela ne change jamais le résultat.Déballé, non golfé et commenté, il ressemble à ceci.
Exécutez celui-ci
la source
Perl 6 , 15 octets
Essayez-le en ligne!
La moyenne est la moyenne des chiffres appliquée à chaque position décimale, donc la moyenne des chiffres multipliée par 111 ...
1 x $_
produit une chaîne de 1 qui est forcée aux chaînes par la multiplication.Prend une liste de chiffres en entrée. Une séquence nécessiterait un .cache avant la somme, et une entrée de nombre ou de chaîne aurait besoin d'un .comb.
la source
Wolfram Language (Mathematica) , 22 octets
Essayez-le en ligne!
la source
JavaScript (Node.js) , 43 octets
Essayez-le en ligne!
la source
Gelée ,
65 octetsEssayez-le en ligne!
Comment ça fonctionne
la source
Japt , 8 octets
Prend l'entrée comme un tableau de chaînes à un chiffre.
Essayez-le
Explication
la source
APL (Dyalog Unicode) ,
2114 octets SBCSEssayez-le en ligne!
Fonction de préfixe tacite. Prend l'entrée sous forme de chaîne.
Merci à Adám pour une sauvegarde éclairante de 7 octets .
Comment?
la source
Python 2,
8377 octetsEDIT: -6 octets grâce à @ovs
la source
Fusain , 11 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
la source
J , 10 octets
Ceci est un portage de la grande solution APL de H.PWiz à J.
Prend une liste de chiffres comme argument.
Explication:
+/%#
la moyenne des chiffres (divisez%
la somme des chiffres+/
par leur nombre#
)#$
crée une liste de copies de la moyenne en fonction du nombre de chiffres10#.
convertir la base de formulaire 10Essayez-le en ligne!
la source
Perl 5
-lpF
,2422 octetsEssayez-le en ligne!
Le faire sous forme de liste de chiffres n'est que d'un octet plus court et ressemble à de la triche:
Essayez-le en ligne!
la source
usrt
? : P/usrt
répertoire? Quoi qu'il en soit, fixe. MerciRubis , 60 octets
Essayez-le en ligne!
la source
Pari / GP , 34 octets
Prend la saisie sous forme de liste de chiffres.
Essayez-le en ligne!
la source
Rubis , 33 octets
Essayez-le en ligne!
Un port de la réponse Python 3 de Dennis
Voici ma tentative boiteuse (74 octets)
Essayez-le en ligne!
la source
C ++,
218208 octets-10 octets grâce à Zacharý
Et, pour tester:
la source
#include
et<
, et vous pouvez supprimer les{}
deux autour++c;
ets+=v;
. Vous pourrez peut-être déplacer leint s=0
au début avec vos autres variables.n=0
de la seconde boucle for, car elle aurait dû atteindre d'0
ici là.m/=10;m+=std::pow(10.f,c-1)*t;
=>m=m/10+std::pow(10.f,c-1)*t
. Et ne pas utiliser à laint
place duauto
travail?int s=0;
avec vos autres variables, et avez-vous besoin des accolades autour dus+=v;
?n>0
=>n
pourrait fonctionner.Pyth, 12 octets
Probablement améliorable.
Essayez-le ici!
la source
o
. Si vous faites cela et que vous effectuez des E / S sous forme de listes de chiffres, vous pouvez les réduire à 8 octets .Q
.J, 23 octets
Prend l'entrée sous forme de chaîne
Explication
la source
Matlab, 65 octets
Je vais y travailler, je suis sûr que cela peut être mieux fait.
la source
Clojure, 139 octets
Fonctionnalités de langage assez peu optimales pour convertir des séquences de caractères en nombres entiers.
la source
dc, 37 octets
Il s'agit d'un programme complet, lisant l'entrée et imprimant la sortie:
Il fonctionne en séparant le nombre en ses chiffres et en multipliant la moyenne des chiffres par le chiffre de longueur approprié (qui est construit au
d
fur et à mesure).la source