Inspiré par cela . Il y a un nombre, donné sous forme d'entier, de chaîne ou de tableau de chiffres (votre choix). Trouvez la base dans laquelle la représentation du nombre aura le plus de "4" et retournez cette base.
Résultat du numéro 624 5 444 10 68 16
restrictions:
- La base retournée ne doit pas être supérieure à l'entrée.
- les nombres inférieurs ou égaux à abs (4) ne doivent pas être considérés comme des entrées valides, donc les retours non définis sont acceptables
[1,15,3,64,43]
pour un certain nombre dans la base80
. Vous ne produisez que le numéro de base, vous pouvez donc tester techniquement chaque base de2
àn
.1
,2
et3
, qui ont le même nombre de "4" (0) dans chaque base? De plus, de nombreux nombres ont le même nombre de "4" dans de nombreuses bases (par exemple,4
dans n'importe quelle base> 5,44
dans n'importe quelle base> 45,14
dans la base 9, ou dans toute base> 15, etc.). La bonne réponse devrait-elle être la plus petite base avec le plus grand nombre de "4"?Réponses:
APL (
3119)Teste maintenant toutes les bases possibles.
Explication:
⍳K←⎕
: lire les entrées utilisateur, stocker dans K. Faire une liste de 1 à K, qui sont les bases à essayer.{
...}¨
: pour chacun d'eux, exécutez la fonction suivanteK⊤⍨K⍴⍵
: encoder K dans cette base en donnant une liste de chiffres (sous forme de nombres) par base. Utilisez K chiffres (une grosse surestimation, mais cela n'a pas d'importance parce que ceux non utilisés seront tous de toute façon zéro).4=
: voir lesquels sont égaux à 4+/
: additionnez-les, maintenant nous savons combien de quatre par base⊃⍒
: donnez les indices de la liste si elle a été triée vers le bas, donc l'indice du plus grand est au premier plan. Prenez le premier élément de cette liste.la source
⍨
GolfScript, 30 caractères
Fonctionne pour n'importe quelle base - testez le code en ligne .
Commentaire: Cette solution était basée sur la version originale de la question. Il peut donc renvoyer une base plus grande que l'entrée, par exemple pour l'entrée 4 il renvoie correctement la base 5 - qui n'est plus valable selon les nouvelles règles.
la source
GolfScript (23 caractères)
ou
ou
Notez que cela prend l'entrée de stdin: pour une comparaison équitable avec la version GolfScript d'Howard, soustrayez un caractère.
Howard souligne que les règles ont changé, et il n'est pas très logique qu'elles excluent maintenant
4
comme entrée possible lorsqu'elle a une sortie valide (tout entier supérieur à 4). Pour couvrir ce cas également, il faut 2 caractères supplémentaires, qui peuvent être ajoutés de toutes sortes de façons:ou
étant un couple des plus évidents.
la source
Python 2.x, 77 caractères
Fonctionne jusqu'à la base 98 et comprend au maximum 98 chiffres.
la source
J, 38 caractères
Usage:
la source
VBA, 121
usage:
?k(num)
=k(A1)
la source
For w=5To a
Mathematica 59
Code
Donnons un nom à la fonction ci-dessus.
Explication
Count[IntegerDigits[n,k],4]
: Compter le nombre de quatre dans la représentation k de base de n .Sort
les bases du moins au plus 4s.Quelques numéros spéciaux
Appliquons maintenant whichBase aux numéros spéciaux suivants.
Si vous convertissez chaque nombre en base correspondante, vous verrez ce qui est spécial à leur sujet.
la source
n
. En outre,MaximalBy
cela aide vraiment, le fait tomber à 49 octets:MaximalBy[Range[a=#],a~IntegerDigits~#~Count~4&]&
(ignorez simplement les messages de celui-ci essayant d'utiliser la base-1)Japt
-h
, 10 octets444
en base10
est[4,4,4]
qui contient le nombre et le chiffre4
3 fois mais444
en base100
est[4,44]
qui contient également le chiffre4
3 fois, mais seulement comme un nombre une fois. Étant donné la sortie attendue dans le défi pour le scénario de444
test, je suppose que nous sommes censés compter le nombre 4:Essayez-le
Mais si nous sommes compter le chiffre 4 alors:
Essayez-le
la source
C - (114 caractères)
Dans toute sa gloire golfique:
Et quelque peu non golfé:
Juste pour le plaisir, voici la sortie pour les nombres
[0,127]
(ce sont les plus grandes bases sous le numéro d'entrée lui-même).la source
R -
148137 caractères(donc loin du reste de la compétition mais quand même)
Transformez fondamentalement l'entrée de la base 10 en toutes les bases de 4 en n (en utilisant la
%%
division modulo et entière%/%
) et choisissez l'indice du premier ayant le plus de 4s.la source
Traduction J de la solution APL de @marinus:
Juste pour l'intérêt, voici quelques valeurs:
Il produit la plus petite base qui donne une transformée la plus fourbe. Pour les dernières valeurs du tableau, les représentations ressemblent à «4n» (par exemple 31 dans la base 7 est «43»).
la source
Gelée , 6 octets
Essayez-le en ligne!
Produit "toutes" les bases jusqu'à N, ce qui donne le plus de 4. Si vous voulez une base maximale ou minimale, ajoutez respectivement
Ṁ
(max) ouṂ
(min).Comment ça marche
la source
05AB1E ,
109 octets-1 octet grâce à @Cowabunghole .
Si plusieurs bases ont la même quantité de 4, elle produira la plus petite (c.
16
-à-d. Entraînera6
, mais12
aurait également été une sortie possible).Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
Qƶà
park>
? c'est-à-dire trouver l'index basé sur 0 du max et l'incrémenter?C # avec Linq 273
ou
Je suis sûr que le nombre de variables peut être réduit et les ifs peuvent être convertis en? S. Tant pis...
la source
C # (
482~ 423 octets)Première tentative de solution «golfée». J'ai utilisé essentiellement le même algorithme que le VBA ci-dessus. Je pourrais probablement enregistrer quelques octets en intégrant la fonction de conversion ou en raccourcissant le nom. Comme je l'ai dit, c'est une première tentative, alors soyez gentil.
Avec espace:
la source
namespace
soit nécessaire. Tous les noms doivent être composés d'un seul caractère, y comprisProgram
etcBase
. Et oui, vous devez vous alignercBase
. Combinez également la déclaration et l'initialisation, c'est-à-direint c=0,m=0
.int
paramètre et retourne unint
paramètre, sans même uneMain
méthode, et d'appeler le personnage compter votre score.Burlesque - 28 octets
Essayez-le en ligne.
la source
k , 18 octets
Essayez-le en ligne!
la source
Perl 6 , 44 octets
Essayez-le en ligne!
Bon vieux polymode .
la source
Coque , 9 octets
Essayez-le en ligne!
la source