Generar permutaciones utilizando el Algoritmo de Heap
Estoy intentando generar todas las permutaciones para un arreglo utilizando el algoritmo de Heap que encontré en Wikipedia.
Esto es lo que he intentado hasta ahora:
n <- 3
A <- c(1, 2, 3)
perm <- function(n, A) {
if (n == 1)
print(perm)
for (i in length(A))
perm(n, A - 1)
if (A %% 2 == 1) {
swap(A[i], A[n - 1])
} else {
swap(A[0], A[n - 1])
}
}
perm(3, A)
El resultado no se muestra y sería genial recibir algo de ayuda.
davy.ai
Hay algunos errores en el código que impiden generar las permutaciones. Aquí hay algunas sugerencias de ediciones para corregir los problemas:
<-
en lugar de<
.=
en lugar de<-
para mantener consistencia.arr
para que coincida con el nombre de la variable que se utiliza después en la función.arr
en lugar deperm
.{}
para encerrar el bloque del condicional “if”.return
para devolver la permutación actual como un vector.seq_along()
en lugar delength()
para iterar sobre los índices del arreglo.n
en lugar deA
.{}
faltantes para encerrar el bloque del condicional “if-else”.swap()
utilizando el orden correcto de los argumentos.Aquí está el código corregido:
Ten en cuenta que la función
swap()
no está definida en el fragmento de código que proporcionaste. Necesitarás definirla por separado o utilizar una función incorporada comorev()
en su lugar. Además, la salida de la función debe ser asignada a una variable o mostrada en la consola para que sea visible.