Desafío:
Entrada:
Una lista ordenada de enteros positivos.
Salida:
La cantidad de enteros que todavía están exactamente en el mismo índice, después de rotar los dígitos en cada número entero su cantidad de índice hacia la izquierda y ordenar la lista modificada nuevamente.
Ejemplo:
Entrada: [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788]
Salida (indexación basada en 0): 6
Salida (indexación basada en 1):5
¿Por qué?
Indexación basada en 0:
After rotating each: [8,94,73,102,592,276,8227,3338,9217,63784,89487,7887471]
Sorted again: [8,73,94,102,276,592,3338,8227,9217,63784,89487,7887471]
Input indices: 0 1 2 3 4 5 6 7 8 9 10 11
Original input-list: [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788]
Modified list: [8,73,94,102,276,592,3338,8227,9217,63784,89487,7887471]
Modified indices: 0 2 1 3 5 4 7 6 8 9 10 11
Equal indices: ^ ^ ^ ^ ^ ^
So the output is: 6
Indexación basada en 1:
After rotating each: [8,49,37,021,925,762,2278,3383,2179,37846,94878,8874717]
Sorted again: [8,(0)21,37,49,762,925,2179,2278,3383,37846,94878,8874717]
Input indices: 1 2 3 4 5 6 7 8 9 10 11 12
Original input-list: [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788]
Modified list: [8,21,37,49,762,925,2179,2278,3383,37846,94878,8874717]
Modified indices: 1 4 3 2 6 5 9 7 8 10 11 12
Equal indices: ^ ^ ^ ^ ^
So the output is: 5
Reglas de desafío:
- Se garantiza que la lista de entrada solo contiene enteros positivos.
- Se garantiza que la lista de entrada se ordenará de menor a mayor.
- Se garantiza que la lista de entrada contiene al menos dos elementos.
- Como puede ver arriba, se permite la indexación basada en 0 y en 1. Indique en su respuesta cuál de los dos ha utilizado, ya que los resultados pueden diferir en consecuencia.
- Los
0
s iniciales después de rotar se ignoran, lo que se puede ver con el ejemplo basado en 1 anterior, donde el entero se102
convierte021
después de rotar, y luego se trata como21
. - Los enteros se garantizan únicos en la lista de entrada, y se garantiza que seguirán siendo únicos después de que se completen las rotaciones.
- Tenga en cuenta que solo miramos las posiciones de los enteros rotados en correlación con las posiciones de la entrada, no con los valores de la lista de entrada. Para aclarar lo que quiero decir con esto: con la lista de entrada
[1234,3412]
y la indexación basada en 1, la lista se convierte[2341,1234]
después de rotar cada número entero en su cantidad de índice de veces, y luego cuando se ordena[1234,2341]
. Aunque tanto la lista de entrada original como la lista rotada contienen el número entero1234
en la posición inicial , ¡no son lo mismo! El rotado1234
era3412
antes. La salida indexada en 1 para esta lista de entrada es0
, por lo tanto , ya que los dos enteros han intercambiado sus posiciones. - La entrada es flexible. Puede ser una lista / secuencia / matriz de enteros / cadenas / matrices de dígitos, etc. Indique lo que ha utilizado si no toma las entradas como enteros.
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de code-golf lo desanimen a publicar respuestas con lenguajes que no sean codegolf. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Las reglas estándar se aplican a su respuesta con las reglas de E / S predeterminadas , por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código (es decir, TIO ).
- Además, se recomienda agregar una explicación para su respuesta.
Casos de prueba:
Input: [8, 49, 73, 102, 259, 762, 2782, 3383, 9217, 37846, 89487, 7471788]
0-based output: 6
1-based output: 5
Input: [1234, 3412]
0-based output: 2
1-based output: 0
Input: [2349, 2820, 17499, 21244, 29842, 31857, 46645, 56675, 61643, 61787]
0-based output: 3
1-based output: 0
Input: [4976, 11087, 18732, 22643, 52735]
0-based output: 2
1-based output: 3
Input: [4414, 5866, 7175, 8929, 14048, 16228, 16809, 19166, 24408, 25220, 29333, 44274, 47275, 47518, 53355]
0-based output: 4
1-based output: 4
Input: [11205, 16820, 63494]
0-based output: 1
1-based output: 3
Siéntase libre de generar más casos de prueba aleatorios con (o inspirarse en) este programa 05AB1E sin golf , donde la entrada es del tamaño de la lista aleatoria (NOTA: la salida de este generador podría no cumplir con la regla "Los enteros están garantizados únicos en la lista de entrada, y se garantiza que seguirán siendo únicos después de que se completen las rotaciones ", así que tenlo en cuenta al usarlo).
Respuestas:
R ,
114bytes-5 bytes gracias a Giuseppe.
Superado por digEmAll.
Pruébalo en línea!
0 indexado.
Versión sin golf:
Para girar los
b
dígitos de un número entero dej
posiciones, el código se repite los dígitos muchas veces, toma entonces los dígitos en las posicionesj+1
aj+b
. Por ejemplo, para rotar102
4 veces, mantenga los valores marcados con unx
(posiciones 5 a 7):entonces el resultado es
021
.fuente
seq(a=...)
. Espero que haya algo deMap
magia para realizar, pero mis intentos dejaron el recuento de bytes sin cambios en el mejor de los casos.Map
puede ser un poco demasiado costoso ya que elfunction
repetitivo tiene al menos 9 bytes, pero si cambia a indexación 0, podemos hacer 109 bytesseq(a=l)
puede serseq(l)
tan largo como la entrada tiene al menos 2 elementos (pregunté si esto está bien).05AB1E , 9 bytes
Pruébalo en línea!
Utiliza indexación basada en 0.
Explicación:
fuente
Japt
-x
,109 bytesBasado en 0
Intentalo
fuente
Jalea , 9 bytes
Pruébalo en línea!
Enlace monádico que toma una lista de enteros y devuelve un número entero que indica el número de enteros que permanecen en su lugar después de realizar la rotación usando la indexación 1.
Explicación
fuente
Python 2 ,
1041009793 bytesPruébalo en línea!
Indexación basada en 0.
Primero gira cada número, y luego compara el resultado con el resultado, pero ordenado.
Salvado:
fuente
input()
:)def
inmediato (son bastante inútiles en Python 2, a diferencia de Python 3).s
.R ,
908885 bytesPruébalo en línea!
Código desenrollado con explicación:
fuente
J ,
2826 bytes-2 bytes gracias a Jonás
Pruébalo en línea!
fuente
"0
(¡ Pruébalo en línea! ), Pero aparte de eso, no vi una forma de jugar más al golf.Stax ,
1110 bytesEjecutar y depurarlo
Este programa utiliza indexación basada en 0 y toma la entrada como una matriz de cadenas. Ahorré un byte aprovechando la nueva entrada clarificatinos.
fuente
Perl 5
-pa
, 80 bytesPruébalo en línea!
Toma datos como números separados por espacios en STDIN; da un resultado basado en 1.
fuente
Pyth , 15 bytes
Pruébalo en línea! Utiliza indexación basada en 0.
fuente
s
versión original del códigov
para el mismo efecto. Lo editaré de nuevoAPL + WIN,
23, 2119 bytes2 bytes guardados al ingresar los enteros como un vector anidado de caracteres
1 indexado.
Pruébalo en línea! Cortesía de Dyalog Classic.
fuente
JavaScript (Node.js) ,
1079995 bytes-8 bytes Gracias @Shaggy por aceptar una matriz de cadenas en su lugar. Más golfed 4 bytes de esto. Esta vez no activará un error de memoria.
Pruébalo en línea!
JavaScript (Node.js) ,
111107 bytes-4 bytes Gracias @Arnauld!
Pruébalo en línea!
JavaScript (Node.js) ,
113111 bytesPruébalo en línea!
0 indexado. Puede provocar un error de memoria para entradas muy grandes.
fuente
Perl 6 , 50 bytes
Pruébalo en línea!
Indexación basada en 0. También expuso un error Rakudo .
Explicación
fuente
PHP ,
159141134130 bytesPruébalo en línea!
Indexación basada en cero.
Sin golf:
fuente
.=''
?K (Kona) ,
2521bytes-4 bytes gracias a ngn!
Pruébalo en línea!
fuente
{.:y!x}'[$x;t:!#x]
->.:'(t:!#x)!'$x
Consulta T-SQL, 99 bytes
SQL no tiene un método rotativo, por lo que tuve que implementar mi propia sintaxis, ya que esta es una consulta, tenía que hacerse sin bucle.
Indexación basada en 0.
Usando una variable de tabla como entrada.
Pruébalo en línea
fuente
Icono , 141 bytes
Pruébalo en línea!
Indexación basada en 1
fuente
Perl 5 , 104 bytes
Pruébalo en línea!
Indización basada en 0 en Perl. Ungolfed y comentó:
fuente
Ruby
-ap
, 77 bytes1 indexado. La temperatura se eliminó anteriormente porque me perdí parte de la especificación.
-p
lee una línea de STDIN y sale$_
al final.-a
divide esa línea de lectura por espacios y la guarda como$F
.Pruébalo en línea!
fuente
[...].join.to_i
coneval [...]*''
eval
lo interpretará como un número de base 8, lo que podría arruinar nuestros conteos ...Wolfram Language (Mathematica) , 65 bytes
Pruébalo en línea!
Basado en 1. Tomamos la entrada como una lista de listas de dígitos, que funciona porque Mathematica ordena las listas por longitud, luego lexicográficamente, es decir, al igual que los números originales.
fuente
Bash ,
204201 bytesLo único interesante aquí (posiblemente) es el uso de
eval
. El algoritmo también es torpe porque crea una lista ordenada y luego la lee para determinar los índices / índices modificados.Solución a base de 1. Mi agradecimiento a @RobinRyder por el útil algoritmo de rotación.
Pruébalo en línea!
Código revisado después de los comentarios de Kevin; Pruébalo en línea!
fuente
;}
. Además, puede cambiar su primer ciclo afor((i=0;++i<=$#;));
.Scala ,
200160 bytesPruébalo en línea!
0 indexado. 160 caracteres después de eliminar la sangría y las nuevas líneas. Esto imprime 6:
fuente