Un número demoníaco es un número entero positivo cuya representación decimal consta de solo 6. La lista de números demoníacos comienza con 6, 66, 666, 6666.
Dado un entero positivo, genera el número demoníaco más cercano. Si hay dos, produzca el más grande.
Casos de prueba:
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
Este es el código de golf . La respuesta más corta en bytes gana.
code-golf
number
arithmetic
Monja permeable
fuente
fuente
Respuestas:
Python 2, 28 bytes
fuente
x=>'6'.repeat((''+-~(x*3/11)).length)
3.6666... = 11/3
..JavaScript (ES6),
3129 bytesMostrar fragmento de código
"Por eso, me deleito en las debilidades [...] Porque cuando soy débil, entonces soy fuerte".
fuente
Brachylog , 8 bytes
Pruébalo en línea!
Explicación
fuente
Java 7,
969366 bytesPuerto de @orlp increíble Python 2 respuesta .
Pruébalo aquí
Supongo que mi conteo de 66 bytes también es un demonio. ;)
(No es la respuesta más corta de Java por cierto, vea la respuesta de @JollyJoker para eso en su lugar.
fuente
"6"
debería haber sido""
.Jalea , 9 bytes
Un enlace monádico.
Pruébalo en línea! - Casi no tiene sentido en este enlace (ver más abajo)!
¿Cómo?
En el verdadero estilo de golfista, esto es realmente ineficiente: ¡llega al tiempo de espera de 60 en TIO para el caso de prueba 365 ! A nivel local, esto termina en 37 s.
Un parche para hacer que el mismo algoritmo se ejecute dentro del límite de 60 para 365 y 366 en TIO es evitar la vectorización implícita de
Ḍ
withẆa6Ḍ€ạÐṂ⁸Ṫ
( intente eso ), sin embargo, esto ahora seg-falla para una entrada de 999 ( Triangle (999) es solo 499,500 pero cada uno es una lista de enteros, lo que hace un total de Tetrahedral (999) = 166,666,500 enteros, no eficientes en memoria, al menos en Python).fuente
Jalea , 10 bytes
Pruébalo en línea!
fuente
‘×3:11Ṿ”6ṁ
para salida de cadena,‘×3:11D6ṁḌ
para entero.C, 118 bytes
Probar en línea
fuente
JavaScript (ES6), 41 bytes
Casos de prueba
Mostrar fragmento de código
fuente
Mathematica, 36 Bytes
Función pura:
Explicación:
Iterative crea una lista de longitud igual a la entrada usando
NestList
siguiendo el patrón6+10x(previous_value)
comenzando desde el valor de6
.Luego encuentre el valor en esta lista más cercano a la entrada.
Por último, tome el valor máximo de la lista de valores más cercanos.
Si bien la longitud de la lista es super ineficiente ya que Mathica puede trabajar con números de longitud de precisión arbitraria, este programa solo está limitado por la memoria física.
fuente
Plantillas consideradas dañinas , 118 bytes
Pruébalo en línea!
Sin golf:
fuente
05AB1E ,
109 bytes- 1 byte gracias a Riley
Pruébalo en línea!
El código anterior puede tener problemas de rendimiento, aquí hay una versión un poco más eficiente con 10 bytes: alternativa TIO
Explicación
fuente
Mathematica, 76 bytes
fuente
Neim ,
1210 bytes (no competidor)-1 byte gracias a steenbergh
Explicación:
Desafortunadamente,
𝕔
devolverá el valor más bajo en una lista si dos números tienen la misma diferencia, por lo que tuvimos que agregar 2 bytes para dar cuenta de eso.No competido como
>
,<
yℝ
se agregaron después de que se hizo esta pregunta (y𝐥
se corrigió para trabajar con números, no solo con listas)Nota: No funcionará para números con una longitud igual a 19 o más, ya que se vuelven demasiado grandes para que los largos de Java puedan manejarlos. (pero este es un valor bastante grande, y debería estar bien)
Intentalo
fuente
Γ6Θℝ)
conΓΘ𝐈Γ6)𝐣)
?Java 8, 37 bytes
Siguiendo el ejemplo de Kevin Cruijssen y simplemente devolviendo un String.
Haz el truco * 3/11 para obtener la longitud correcta, luego reemplaza todo con seises.
fuente
-~
que debería haber visto diez veces en esta página si hubiera prestado atención ...QBIC ,
3727 bytesEn lugar de usar Maths ™, esto ahora usa la manipulación de cadenas para encontrar los descansos en los Dominios Demoníacos (36, 366, ...). Inspirado por la respuesta JS de @ eush77.
Explicación
fuente
cc , 46 bytes
Pruébalo en línea!
fuente
C #, 142 bytes
Utiliza el hecho de que necesitamos saltar al siguiente número deamónico en cada 36666 ... En una forma más legible:
fuente
braingasm , 15 bytes
Usando la aritmética de la solución Python de orlp :
fuente
No vi esta pregunta en el feed, y solo tropecé con ella por accidente. Aquí está mi respuesta de todos modos:
JavaScript (ES6), 34 bytes
Agregue 1 byte para una respuesta numérica. Originalmente basado en esta respuesta ES7 sin golf (37 bytes, ya numérica):
Molesto, OP quiere que 36 esté más cerca de 66 que de 6. Explicación: 11/3 = 3.666 ..., así que dividiendo entre esto, se escalan los rangos 7..36, 37..366 etc. a los rangos 1..9.9, 10 ..99.9 etc. Esto se puede resolver puramente numéricamente tomando 2/3 de uno menos que la siguiente potencia más alta de 10, aunque es más golfoso truncar, convertir a cadena y luego cambiar todos los caracteres al dígito 6. (Aunque todavía no tan elegante como esa respuesta recursiva realmente inteligente).
fuente
CJam, 25 bytes
No es tan lento como la presentación de Jonathan Alan's Jelly, pero requiere memoria O (n²) , donde n es el número de entrada. Sí.
Esto es equivalente al siguiente Python:
Solución alternativa, 12 bytes.
Esta es una traducción del algoritmo de orlp a CJam.
Explicación:
fuente
PHP, 49 bytes
recortar el personaje 6
Pruébalo en línea!
En lugar de
trim($x=$argn+$i,6)>""
usar una solución Regex!preg_match("#^6+$#",$x=$argn+$i)
+11 Bytes o una longitud de cadena igual a la6
comparación de conteostrlen($x=$argn+$i)-strspn($x,6)
+10 Bytesfuente
LOLCODE 1.4, 471 bytes
Guau. Aquí está eso Ungolfed y explicado:
Aún guau. Aquí hay algunos pseudojavascrython para ti.
¿Aún no lo entiendes? Este programa básicamente solo (excluyendo las entradas 1-3) compara la entrada con 3.6 * 10 ^ n, siendo n la longitud de la entrada. Si es menor que ese número, imprime el número de 6s uno menos que la longitud. Si es mayor o igual que ese número, el número de seises es la longitud actual.
Me encantaría un poco de ayuda al golf!
fuente
Haxe, 70 bytes
La entrada debe pasarse como tipo
Float
pesar de ser un número entero, de lo contrario, Haxe se quejará de intentar dividir un número entero (sí, haxe se negará a compilar si divide un número entero por algo)Igual que todas las otras respuestas. Multiplique por 3, divida por 11, imprima 1
6
por cada dígito.fuente
Brainfuck, 315 bytes
Ejecútalo aquí . Seleccione un tamaño de celda que pueda manejar valores de 3 * (n + 1), por lo que para que todos los casos de prueba funcionen, seleccione 16. Memoria dinámica (infinita) debe estar activada para que esto funcione. Esto permite que la cinta se expanda hacia la izquierda. Para ingresar un número entero, escriba la entrada como
\366
para n = 366.Sin golf:
Utiliza el mismo algoritmo que esta solución . Los algoritmos utilizados para cada paso individual se toman de esta página . Todos los algoritmos utilizados no se ajustan, por lo que el programa no se romperá para entradas más grandes.
fuente
n=n*3
se puede jugar golf a algo así[->+++<]
? ¿Y el algoritmo divmod para dividir por 10?05AB1E , 7 bytes
Pruébalo en línea!
fuente
Japt , 9 bytes
Intentalo
fuente
C #, 102 bytes
Un poco decepcionado por la duración de esto, podría hacer exactamente lo mismo que la respuesta más corta en Java, pero realmente no lo entendí porque soy un desarrollador .NET perezoso y estúpido :)
fuente