Nous avons une séquence strictement croissante d'entiers non négatifs, comme:
12 11 10
Attendez! Cette séquence n'est pas strictement croissante, n'est-ce pas? Eh bien, les nombres sont écrits dans différentes bases. La base la moins possible est 2, la plus grande est 10.
La tâche consiste à deviner les bases de chaque nombre est écrit, de sorte que:
- la séquence est strictement croissante,
- la somme des bases est maximisée.
Par exemple, la solution pour l'échantillon sera:
6 8 10
car sous ces bases la séquence devient 8 9 10
décimale - une séquence strictement croissante, et nous ne sommes pas capables de trouver des bases pour lesquelles la séquence reste strictement croissante et dont la somme est supérieure à 6+8+10
.
En raison de la deuxième limitation, une solution 3 5 7
n'est pas satisfaisante: malgré le fait que la séquence devienne 5 6 7
sous ces bases - nous devons maximiser la somme des bases, et 3+5+7 < 6+8+10
.
Si sous aucune base 2<=b<=10
il est possible que la série augmente strictement, par exemple:
102 10000 10
Célibataire
0
devrait être sortie.
La séquence d'entrée peut être passée de la manière la plus pratique pour votre solution (entrée standard / paramètres de ligne de commande / arguments de fonction ...).
la source
1 3 5
une séquence montante? Et alors1 7 22
? (en base 10)1 3 5
et1 7 22
montent tous les deux sous la base 10. Donc, la solution pour les deux cas est10 10 10
, parce que nous devons maximiser la somme des bases tout en garantissant que la séquence augmente quand le nième nombre est interprété comme étant écrit en base égale à n -ème terme de solution.1 1 1
ou3 3 4
ne montent pas.Réponses:
Pyth,
313029 octets1 octet grâce à @Jakube.
Manifestation. Harnais de test.
L'entrée est donnée sur STDIN, séparés par des espaces. Si l'entrée séparée par la nouvelle ligne est autorisée, je peux raccourcir le programme de 2 octets.
Explication:
L'inclusion
1
dans la liste des bases possibles est sûre cari
, qui utilise leint
module intégré de Python , ne permet pas1
comme base, et donc génère toujours une erreur, qui est interceptée et filtrée.la source
CJam, 43 octets
Lit les arguments de ligne de commande et imprime un tableau.
Essayez-le en ligne dans l' interpréteur CJam .
Exemples
Comment ça fonctionne
la source
Julia,
1761561451181099997 octetsNon golfé:
Utilisé avec une entrée de tableau 1d. Si la fonction est affectée à
c
, alors vous appelleriezc([12,11,10])
et elle sortirait[6,8,10]
.Remarque: J'avais utilisé
dec(i)
à l'intérieur de la commande parseint, mais comme ili
s'agit d'un nom de variable à un seul caractère et que je n'ai pas besoin d'accéder à un composant, j'ai utilisé"$i"
pour obtenir le même résultat.la source
c
, puis lesc([12,11,10])
sorties[6,8,10]
, qui sont les bases requises.[12 11 10]
au lieu de[12,11,10]
et cela a donné l'effet indésirable.Julia,
259204183 octetsEnregistré un tas avec l'aide de Glen O.
Non golfé + explication:
la source
for i=M(A[1]):10,j=M(A[2]):10,k=M(A[3]):10 <code here>end;
, en économisant huit pour les deuxend;
s perdus et huit pour remplacer `for` par,
.s=map(parseint,x,[i,j,k])
, en économisant 18 octets par rapport à votre solution d'origine et 10 par rapport à mon amélioration suggérée précédente. Et plutôt ques==sort(unique(s))
, utilisezall(diff(s).>0)
pour enregistrer 3 autres octets.CJam (39 octets)
Il s'agit d'une fonction anonyme qui prend l'entrée sous forme de tableau d'entiers décimaux sur la pile et laisse la sortie sous forme de tableau ou d'entier
0
sur la pile. Démo en ligne .la source
19
ne peut pas être un nombre de base 9).Python 2 (147 octets)
Appelez la fonction
x
avec une liste des entrées.Exemple:
impressions
la source