Un nombre démoniaque est un entier positif dont la représentation décimale est constituée de 6. La liste des nombres démoniaques commence par 6, 66, 666, 6666.
Étant donné un entier positif, indiquez le nombre démoniaque le plus proche. S'il y en a deux, affichez le plus gros.
Testcases:
n output
1 6
2 6
3 6
6 6
35 6
36 66
37 66
100 66
365 66
366 666
666 666
999 666
C'est du code-golf . La réponse la plus courte en octets l'emporte.
code-golf
number
arithmetic
Fuite, nonne
la source
la source
Réponses:
Python 2, 28 octets
la source
x=>'6'.repeat((''+-~(x*3/11)).length)
3.6666... = 11/3
..JavaScript (ES6),
3129 octetsAfficher l'extrait de code
"C'est pourquoi, je me délecte de faiblesses […] Car quand je suis faible, alors je suis fort."
la source
Brachylog , 8 octets
Essayez-le en ligne!
Explication
la source
Java 7,
969366 octetsPort de @orlp incroyable réponse Python 2 .
Essayez ici.
Je suppose que mon compte de 66 octets est également un démon. ;)
(Ce n'est pas la réponse la plus courte en Java, voir la réponse de @JollyJoker pour cela à la place.
la source
"6"
aurait dû être""
.Gelée , 9 octets
Un lien monadique.
Essayez-le en ligne! - Presque pas de point dans ce lien (voir ci-dessous)!
Comment?
Dans le style des vrais golfeurs, cela est vraiment inefficace - il arrive à la fin des années 60 chez TIO pour le scénario de test 365 ! Localement cela se termine en 37s.
Un patch pour faire le même parcours de l' algorithme dans les années 60 limite pour 365 et 366 sur TIO est d'éviter la vectorisation implicite
Ḍ
avecẆa6Ḍ€ạÐṂ⁸Ṫ
( essayer ), mais cela va maintenant seg-faute pour une entrée de 999 ( Triangle (999) est seulement 499,500 mais chacun est une liste d’entiers, ce qui donne un total de Tetrahedral (999) = 166 666 500 entiers, ce qui optimise la mémoire, du moins en Python).la source
Gelée , 10 octets
Essayez-le en ligne!
la source
‘×3:11Ṿ”6ṁ
pour la sortie de chaîne,‘×3:11D6ṁḌ
pour un entier.C, 118 octets
Essayez en ligne
la source
JavaScript (ES6), 41 octets
Cas de test
Afficher l'extrait de code
la source
Mathematica, 36 octets
Fonction pure:
Explication:
Itératif créer une liste de longueur égale à l'entrée en
NestList
suivant le modèle à6+10x(previous_value)
partir de la valeur6
.Trouvez ensuite la valeur dans cette liste la plus proche de l’entrée.
Enfin, prenez la valeur maximale dans la liste des valeurs les plus proches.
Tandis que la longueur de la liste est super inefficace car mathematica peut travailler avec des nombres de longueur de précision arbitraire, ce programme n’est limité que par la mémoire physique.
la source
Modèles considérés comme nuisibles , 118 octets
Essayez-le en ligne!
Ungolfed:
la source
05AB1E ,
10 à9 octets- 1 octet grâce à Riley
Essayez-le en ligne!
Le code ci-dessus peut avoir des problèmes de performances, voici une version un peu plus efficace avec 10 octets: Alternative TIO
Explication
la source
Mathematica, 76 octets
la source
Neim ,
12 à10 octets (non en concurrence)-1 octet grâce à steenbergh
Explication:
Malheureusement,
𝕔
nous renverrons la valeur la plus basse dans une liste si deux nombres ont la même différence. Nous avons donc dû ajouter 2 octets pour en tenir compte.Non en concurrence comme
>
,<
etℝ
ont été ajoutés après cette question a été posée (et𝐥
été corrigé pour fonctionner avec des nombres, pas seulement des listes)Remarque: ne fonctionnera pas pour les nombres de longueur égale ou supérieure à 19, car ils deviennent trop volumineux pour les longs traitements de Java. (mais c'est une valeur assez importante, et ça devrait aller)
L'essayer
la source
Γ6Θℝ)
parΓΘ𝐈Γ6)𝐣)
?Java 8, 37 octets
En passant par l'exemple de Kevin Cruijssen et juste retourner une chaîne.
Faites l’astuce * 3/11 pour obtenir la bonne longueur, puis remplacez-les tous par des six.
la source
-~
je devais ajouter celui que j'aurais dû voir dix fois sur cette page si j'avais prêté attention ...QBIC ,
3727 octetsAu lieu d'utiliser Maths ™, il utilise maintenant la manipulation de chaînes pour trouver les ruptures dans les domaines démoniaques (36, 366, ...). Inspiré par la réponse JS de @ eush77.
Explication
la source
dc , 46 octets
Essayez-le en ligne!
la source
C #, 142 octets
Il utilise le fait que nous devons passer au prochain numéro deamonique tous les 36666 ... sous une forme plus lisible:
la source
braingasm , 15 octets
Utilisation de l'arithmétique de la solution Python d' Orlp :
la source
Je n'ai pas vu cette question dans le fil, et je suis tombé dessus par hasard. Voici ma réponse quand même:
JavaScript (ES6), 34 octets
Ajoutez 1 octet pour une réponse numérique. Initialement basé sur cette réponse ESG non golfée (37 octets, déjà numérique):
De façon ennuyeuse, OP veut que 36 soit plus proche de 66 que de 6. Explication: 11/3 = 3.666 ..., divisant ainsi par ceci les échelles des gammes 7..36, 37..366, etc. aux gammes 1..9.9, 10 ..99.9 etc. Cela peut être résolu purement numériquement en prenant 2/3 de moins que la puissance immédiatement supérieure de 10, bien qu'il soit plus difficile de tronquer, de convertir en chaîne, puis de changer tous les caractères en chiffre 6. ( pas aussi ludique que cette réponse récursive vraiment intelligente.)
la source
CJam, 25 octets
Pas aussi lent que la soumission de Jonathan Alan Jelly, mais nécessite de la mémoire O (n²) , où n est le nombre entré. Ouais.
Ceci est équivalent au Python suivant:
Solution alternative, 12 octets
Ceci est une traduction de l'algorithme de orlp dans CJam.
Explication:
la source
PHP, 49 octets
couper le personnage 6
Essayez-le en ligne!
Au lieu de,
trim($x=$argn+$i,6)>""
vous pouvez utiliser une solution Regex!preg_match("#^6+$#",$x=$argn+$i)
+11 octets ou une longueur de chaîne égale à la6
comparaison de comptagestrlen($x=$argn+$i)-strspn($x,6)
+10 octets.la source
LOLCODE 1.4, 471 octets
Sensationnel. Voici que Ungolfed and Explained:
Encore wow. Voici quelques pseudojavascrython pour vous.
Tu ne comprends toujours pas? Ce programme fondamentalement juste (en excluant les entrées 1-3) compare l’entrée à 3.6 * 10 ^ n, n étant la longueur de l’entrée. S'il est inférieur à ce nombre, le nombre de 6 est inférieur à la longueur. S'il est supérieur ou égal à ce nombre, le nombre de six est la longueur actuelle.
J'adorerais une aide au golf!
la source
Haxe, 70 octets
L'entrée doit être passée en tant que type
Float
alors qu'elle est un entier, sinon Haxe se plaindra d'essayer de diviser un entier (oui, haxe refusera de compiler si vous divisez un entier par quelque chose).Identique à toutes les autres réponses. Multipliez par 3, divisez par 11, imprimez 1
6
pour chaque chiffre.la source
Brainfuck, 315 octets
Exécutez-le ici . Sélectionnez une taille de cellule pouvant gérer des valeurs de 3 * (n + 1). Par conséquent, pour que tous les scénarios de test fonctionnent, sélectionnez 16. La mémoire dynamique (infinie) doit être activée pour que cela fonctionne. Cela permet à la bande de s’étendre vers la gauche. Pour saisir un entier, tapez l'entrée comme suit:
\366
pour n = 366.Ungolfed:
Utilise le même algorithme que cette solution . Les algorithmes utilisés pour chaque étape sont extraits de cette page . Tous les algorithmes utilisés ne sont pas wrappés, afin que le programme ne casse pas pour des entrées plus volumineuses.
la source
n=n*3
peut être joué au golf à quelque chose comme[->+++<]
? Et l' algorithme divmod à diviser par 10?05AB1E , 7 octets
Essayez-le en ligne!
la source
Japt , 9 octets
L'essayer
la source
C #, 102 octets
Un peu déçu par la longueur de ce document, je pouvais faire exactement la même chose que la réponse plus courte en Java, mais je ne le comprenais pas vraiment car je suis un développeur .NET stupide et stupide :)
la source