De AZSPCS :
Supongamos que tienes una baraja que contiene n cartas. Cada tarjeta contiene un número del 1 al n, y cada número aparece exactamente en una tarjeta. Observa el número en la tarjeta superior, digamos que es k, y luego invierte el orden de las tarjetas k superiores. Continúa este procedimiento, leyendo el número superior y luego invirtiendo el número correspondiente de tarjetas, hasta que la tarjeta superior sea 1.
Escriba el programa más rápido para calcular el número de reversiones para un mazo dado. Tenga en cuenta que si participa en el concurso no puede publicar su código (y, por lo tanto, no lo publicaré aún).
code-challenge
fastest-code
Alexandru
fuente
fuente
Respuestas:
JavaScript
Pasas el mazo, así:
fuente
Scala: (Esto no es un golf, ¿verdad?)
Aplicación completa con caso de prueba y cronómetro, incluido el barajado de la cubierta:
recuento: 1000 tamaño: 100 duración: 1614 ms máquina: Single Pentium M 2Ghz
fuente
Python, 84 caracteres
Golfing de todos modos ... Estoy usando los números del 0 al n-1. Suponiendo que la matriz se almacena en una variable x, me lleva 84 caracteres de Python.
Sin embargo, el rendimiento es bastante malo debido al abuso de memoria.
fuente
C
deck
es un puntero a una matriz entera que representa los mazos.n
Es el número de las cartas. Obviamente, la seguridad de la memoria es tarea de la persona que llama.Probablemente se está acercando al algoritmo más rápido en computadoras recientes y en un lenguaje de alto nivel. Solo con trucos de nivel asm podría hacerse más rápido, pero no mucho incluso con ellos.
fuente
Perl 5 , 58 + 2 (-ap) = 60 bytes
Pruébalo en línea!
fuente