Votre tâche consiste à prendre un nombre positif en entrée, n , et à sortir la longueur de la représentation de chiffres de rep la plus longue de n dans n'importe quelle base. Par exemple, 7 peut être représenté par l'un des éléments suivants
111_2
21_3
13_4
12_5
11_6
10_7
7_8
Les rep-chiffres sont 111_2
et 11_6
, 111_2
est plus long, donc notre réponse est 3.
Il s'agit d'une question de code-golf, donc les réponses seront notées en octets, avec moins d'octets étant mieux.
Cas de test
1 -> 1
2 -> 1
3 -> 2
4 -> 2
5 -> 2
6 -> 2
7 -> 3
8 -> 2
9 -> 2
10 -> 2
11 -> 2
26 -> 3
63 -> 6
1023-> 10
Exemple d'implémentation
Voici une implémentation dans Haskell qui peut être utilisée pour générer plus de cas de test.
f 0 y=[]
f x y=f(div x y)y++[mod x y]
s x=all(==x!!0)x
g x=maximum$map(length.f x)$filter(s.f x)[2..x+1]
code-golf
base-conversion
Post Rock Garf Hunter
la source
la source
base > 1
?222
en base 3.Réponses:
Gelée , 9 octets
Un lien monadique acceptant et renvoyant des numéros
Essayez-le en ligne!ou consultez une suite de tests (entrées 1 à 32 inclus).
Comment?
... ou j'aurais peut-être dû faire:
Pour le
Lo1
z.la source
ZL
c'est plus court queL€Ṁ
...JavaScript (ES6), 62 octets
la source
Haskell ,
868179 octets2 octets économisés grâce à Laikoni
Essayez-le en ligne!
Puisque cela s'est un peu atténué, voici mon approche. C'est une version golfée de l'exemple de code que j'ai créé pour la question. Je pense que cela peut certainement être plus court. Je pensais juste que je le mettrais là-bas.
la source
length.head.filter(all=<<(==).head).(<$>[2..]).(!)
.Husk ,
1311 octets-2 octets grâce à zgarb
Essayez-le en ligne!
la source
mm
peut êtreM
, etṠoΛ=←
peut êtreȯ¬tu
. Il n'y a pas encore de fonction intégrée pour vérifier que tous les éléments d'une liste sont égaux ...ΓoΛ=
fonctionne également en quatre octetsM
devrait être dans les documents, car nous l'avons depuis un certain temps. Je devrais arranger ça. Mais c'est essentiellement le double deṀ
.Mathematica, 71 octets
Essayez-le en ligne!
la source
05AB1E , 8 octets
Essayez-le en ligne!
-1 grâce à kalsowerus .
la source
L>вʒË}нg
pour 8 octetsBrachylog , 12 octets
Essayez-le en ligne!
la source
Python 3 ,
9287 octets5 octets grâce à Halvard Hummel.
Essayez-le en ligne!
la source
Mathematica, 58 octets
Lance une erreur (car la base-1 n'est pas une base valide), mais il est sûr de l'ignorer.
Bien sûr, il est correct de prendre la longueur du premier repdigit (
FirstCase
), car les nombres dans les bases inférieures ne peuvent pas être plus courts que dans les bases supérieures.la source
CJam (17 octets)
Suite de tests en ligne . Il s'agit d'un bloc (fonction) anonyme qui prend un entier sur la pile et laisse un entier sur la pile.
Fonctionne avec la force brute, en utilisant
3
comme base de secours pour gérer les cas spéciaux (entrée1
ou2
).la source
Perl 6 , 49 octets
Essayez-le en ligne!
Explication
La méthode polymod est une généralisation de Python
divmod
: elle effectue des divisions entières répétées en utilisant une liste donnée de diviseurs, et renvoie les restes intermédiaires.Il peut être utilisé pour décomposer une quantité en plusieurs unités:
Lors du passage d'une séquence paresseuse en tant que liste de diviseurs,
polymod
s'arrête lorsque le quotient atteint zéro. Ainsi, en lui donnant une répétition infinie du même nombre, décompose l'entrée en chiffres de cette base:Je l'utilise ici car il autorise des bases arbitrairement élevées, contrairement à la
.base
méthode basée sur les chaînes qui ne prend en charge que la base 36.la source
[]
contourpolymod
en changeant$_
pour@_
TI-BASIC, 37 octets
Demande N, renvoie la sortie dans Ans.
Explication
À titre de vue d'ensemble, pour chaque base B possible en séquence, il calcule d'abord le nombre de chiffres de N lorsqu'il est représenté dans la base B, puis vérifie si N est divisible par la valeur représentée par ce même nombre de 1 chiffres dans la base B.
la source
Pyth , 13 octets
Essayez-le en ligne!
la source
Java 8, 111 octets
Le nombre d'octets de 111 est également un chiffre de répétition. ;)
Explication:
Essayez-le ici.
la source
Java 8, 79 octets
Un lambda de
Integer
àInteger
.Lambda non golfé
Vérifie les radices dans l'ordre croissant de 2 jusqu'à ce qu'une base de chiffres de rep soit trouvée. S'appuie sur le fait que le plus petit de ces radix correspondra à une représentation avec le plus de chiffres.
m
est une copie de l'entrée,b
est le radix, etl
est le nombre de chiffres vérifiés (et finalement la longueur de la radix-b
représentation).la source
Burlesque, 24 octets
(voir la bonne solution ci-dessous)
Voir en action .
Au moins, si mon intuition est juste qu'une représentation à deux chiffres sera toujours la plus longue? Sinon euh ...
la source