Inspirado por esto . Hay un número, dado como entero, cadena o conjunto de dígitos (a elección). Encuentre la base en la que la representación del número tendrá más "4" y devuelva esa base.
Resultado numérico 624 5 444 10 68 16
restricciones:
- La base devuelta no debe ser mayor que la entrada.
- los números menores o iguales a abs (4) no deben considerarse entradas válidas, por lo que los retornos indefinidos son aceptables

[1,15,3,64,43]por ejemplo, para algún número en la base80. Solo está generando el número base, por lo que técnicamente podría probar cada base desde2hastan.1,2y3, que tienen el mismo número de "4" s (0) en cada base? Además, muchos números tienen el mismo número de "4" en muchas bases (por ejemplo,4en cualquier base> 5,44en cualquier base> 45,14en la base 9 o en cualquier base> 15, etc.). ¿Debería ser la respuesta correcta la base más pequeña con el mayor número de "4"?Respuestas:
APL (
3119)Ahora prueba todas las bases posibles.
Explicación:
⍳K←⎕: lea la entrada del usuario, almacene en K. Haga una lista del 1 al K, que son las bases para probar.{...}¨: para cada uno de estos, ejecute la siguiente funciónK⊤⍨K⍴⍵: codifica K en esa base dando una lista de dígitos (como números) por base. Use los dígitos K (una gran sobreestimación, pero no importa porque los no utilizados serán todos cero de todos modos).4=: ver cuál de estos es igual a 4+/: suma estos, ahora sabemos cuántas patas por base⊃⍒: proporcione los índices de la lista si se ordenaron hacia abajo, de modo que el índice del más grande se encuentre al frente. Tome el primer elemento de esta lista.fuente
⍨GolfScript, 30 caracteres
Funciona para cualquier base: pruebe el código en línea .
Comentario: esta solución se basó en la versión original de la pregunta. Por lo tanto, puede devolver una base más grande que la entrada, por ejemplo, para la entrada 4 devuelve correctamente la base 5, que ya no es válida según las nuevas reglas.
fuente
GolfScript (23 caracteres)
o
o
Tenga en cuenta que esto toma la entrada de stdin: para una comparación justa con la versión de Howard GolfScript reste un carácter.
Howard señala que las reglas han cambiado, y no es muy lógico que ahora excluyan
4como una posible entrada cuando tiene una salida válida (cualquier número entero mayor que 4). Para cubrir ese caso también se requieren 2 caracteres adicionales, que se pueden agregar de muchas maneras:o
siendo un par de los obvios.
fuente
Python 2.x, 77 caracteres
Funciona hasta la base 98 y números de 98 dígitos como máximo.
fuente
J, 38 caracteres
Uso:
fuente
VBA, 121
uso:
?k(num)=k(A1)fuente
For w=5To aMathematica 59
Código
Démosle un nombre a la función anterior.
Explicación
Count[IntegerDigits[n,k],4]: Cuenta el número de cuatro patas en la representación base k de n .Sortlas bases de menos a más 4s.Algunos números especiales
Ahora apliquemos whichBase a los siguientes números especiales.
Si convierte cada número a la base correspondiente, verá lo que tiene de especial.
fuente
nallí. Además,MaximalByrealmente ayuda, lo reduce a 49 bytes:MaximalBy[Range[a=#],a~IntegerDigits~#~Count~4&]&(solo ignore los mensajes que intentan usar base-1)Japt
-h, 10 bytes444en base10es el[4,4,4]que contiene el número y el dígito43 veces, pero444en base100es el[4,44]que también contiene el dígito43 veces, pero solo como un número una vez. Dado el resultado esperado en el desafío para el444caso de prueba, supongo que debemos contar el número 4:Intentalo
Pero si nos estamos contando los dígitos 4 a continuación:
Intentalo
fuente
C - (114 caracteres)
En todo es gloria de golf:
Y de alguna manera no golfista:
Solo por diversión, aquí está la salida de los números
[0,127](estas son las bases más grandes debajo del número de entrada en sí).fuente
R -
148137caracteres(por lo tanto, lejos del resto de la competencia pero aún así)
Básicamente, transforme la entrada de la base 10 a todas las bases de 4 a n (usando la
%%división de módulo y entero%/%) y elija el índice de la primera que tenga más 4s.fuente
Traducción J de la solución APL de @marinus:
Solo por interés, aquí hay algunos valores:
Produce la base más pequeña que da una transformación más cuádruple. Para los últimos valores de la tabla, las representaciones se ven como "4n" (por ejemplo, 31 en la base 7 es "43").
fuente
Jalea , 6 bytes
Pruébalo en línea!
Emite "todas" las bases hasta N, lo que da la mayor cantidad de 4. Si desea una base máxima o mínima, agregue
Ṁ(max) oṂ(min) respectivamente.Cómo funciona
fuente
05AB1E ,
109 bytes-1 byte gracias a @Cowabunghole .
Si varias bases tienen la misma cantidad de 4s, generará la más pequeña (es decir,
16dará como resultado6, pero12también habría sido una salida posible).Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
Qƶàconk>? es decir, encontrar el índice basado en 0 del máximo e incrementarlo?C # con Linq 273
o
Es bastante seguro que el número de variables se puede reducir y los if se pueden convertir a? S. Oh bien...
fuente
C # (
482~ 423 bytes)Primer intento de una solución 'golfizada'. Utilicé básicamente el mismo algoritmo que el VBA anterior. Probablemente podría guardar algunos bytes alineando la función de conversión o acortando el nombre. Como dije, este es un primer intento, así que por favor sé gentil.
Con espacios en blanco:
fuente
namespacese requiera. Todos los nombres deben ser un solo carácter, incluidosProgramycBase. Y sí, deberías estar en líneacBase. Asimismo, se combinan declaración e inicialización, es decir,int c=0,m=0.intparámetros y devuelvaintparámetros, sin siquiera unMainmétodo, y llame al personaje a contar su puntaje.Burlesque - 28 bytes
Pruébalo en línea.
fuente
k , 18 bytes
Pruébalo en línea!
fuente
Perl 6 , 44 bytes
Pruébalo en línea!
Buen viejo polymod .
fuente
Casco , 9 bytes
Pruébalo en línea!
fuente