Dada una lista de enteros, genera el número de permutaciones de los enteros, con permutaciones indistinguibles contadas una vez. Si hay nnúmeros enteros, y cada grupo de números indistinguibles tiene longitud n_i, esto esn! / (n_1! * n_2! * ...)
Reglas
- La entrada será alguna forma de lista como argumentos para una función o el programa con 1 a 12 enteros no negativos. 
- La salida imprimirá o devolverá el número de permutaciones como se describió anteriormente. 
- No hay lagunas estándar ni funciones integradas (que generan permutaciones, combinaciones, etc.). Se permiten los factoriales. 
Casos de prueba
Entradas:
1, 3000, 2, 2, 8
1, 1, 1
2, 4, 3, 2, 3, 4, 4, 4, 4, 4, 1, 1
Salidas:
60
1
83160

Respuestas:
Python, 48 bytes
Una implementación recursiva.
En la fórmula,
n! / (n_1! * n_2! * ...)si eliminamos el primer elemento (digamos que es1), el número de permutación para losn-1elementos restantes esEntonces, obtenemos la respuesta multiplicando por
n/n1, la fracción recíproca de elementos que iguala al primero, por el resultado recursivo para el resto de la lista. La lista vacía da el caso base de 1.fuente
/l.count(l[0])al final? Entonces no necesitas ese punto flotante asqueroso.MATL ,
141312 bytesPruébalo en línea!
Explicación
El enfoque es muy similar al de la respuesta de @ Adnan .
fuente
05AB1E ,
151413 bytesCódigo:
Explicación:
Utiliza la codificación CP-1252 .
Pruébalo en línea! .
fuente
JavaScript (ES6),
6461 bytesUtiliza la fórmula dada, excepto que calcula cada factorial de forma incremental (por ejemplo, el
r=r*++icálculo efectivon!).Editar: Originalmente acepté cualquier número finito, pero ahorré 3 bytes cuando @ user81655 señaló que solo necesitaba admitir enteros positivos (aunque en realidad acepto enteros no negativos).
fuente
r*=++i/(x-y?(y=x,c=1):++c),y=r=-1)|-r?*=embargo, no me gusta porque introduce errores de redondeo.Pyth, 11 bytes
Banco de pruebas
Utiliza la fórmula estándar
n! / (count1! * count2! * ...), excepto que los factores de los recuentos se encuentran contando cuántas veces se produce cada elemento en el prefijo que conduce a eso, y luego multiplicando todos esos números.Explicación:
fuente
Pyth -
1412 bytesTest Suite .
fuente
Ruby,
7574 bytesDesearía que el
Mathmódulo de Ruby tuviera una función factorial para que no tuviera que construir la mía.fuente
CJam, 17 bytes
Pruébalo aquí.
Explicación
fuente
Jalea, 8 bytes
Pruébalo en línea!
fuente
J, 13 bytes
Uso
Explicación
fuente