Dada una lista de enteros positivos que contiene al menos 3 entradas distintas, genera una permutación de esa lista que no está ordenada en orden ascendente o descendente.
Ejemplos
1,2,3 -> 2,1,3 or 3,1,2 or 1,3,2 or 2,3,1
1,2,3,3 -> 2,1,3,3 or 3,1,2,3 or 1,3,2,3 etc..
¡Gracias @Arnauld y @NoOneIsHere por el título!
[2,[1,3]]
.Respuestas:
JavaScript (ES6),
3934 bytesOrdene la matriz en orden ascendente, haga estallar el último elemento y úselo como el primer elemento de una nueva matriz. Luego desestructurar los elementos restantes de la matriz original en la nueva matriz (en JS, ambos
sort
ypop
modificar la matriz original).Pruébalo
fuente
a.sort()
?sort
método de JS ordena lexicográficamente.Brachylog , 2 bytes
Pruébalo en línea!
o
Pruébalo en línea!
Luego ordena la lista
fuente
Jalea , 3 bytes
Pruébalo en línea!
fuente
Ṣṙ-
también funciona (solo tenía ganas de decir eso; probablemente sabías: P)Ṣṙ1
solo tres bytes? En UTF-8, son 7 bytes.Ohm , 2 bytes
Pruébalo en línea!
Ordenar y rotar a la derecha.
fuente
Japt , 3 bytes
Pruébalo
Ordena (
n
) la matriz y la rota (é
) un elemento a la derecha.fuente
Python 3 , 31 bytes
Pruébalo en línea!
-1 byte gracias a xnor
fuente
min
al final ahorra un byte.APL, 9 bytes
Pruébalo en línea!
¿Cómo?
⍵[⍋⍵]
- ordenar la lista1⌽
- rotar por 1fuente
TI-Basic (TI-84 Plus CE), 31 bytes
Solicita entrada en el formato
{1,2,3,4}
.TI-Basic es un lenguaje tokenizado , todos los tokens utilizados aquí son de un byte.
Explicación:
fuente
Pyth ,
754 bytesPruébalo en línea!
-1 byte gracias a FryAmTheEggman
fuente
05AB1E , 2 bytes
Pruébalo en línea!
fuente
05AB1E , 2 bytes
Pruébalo en línea!
fuente
Retina , 21 bytes
Pruébalo en línea! Ordenar y rotar como de costumbre. Al menos no hay conversión unaria esta vez.
fuente
Java 8,
6837 bytes-31 bytes gracias a @Nevay (olvidé que Java 8 tenía un
List#sort(Comparator)
método ...)Modifica la entrada
ArrayList
, en lugar de devolver una nueva.Explicación:
Pruébalo aquí
fuente
l->{l.sort(null);java.util.Collections.rotate(l,1);}
para guardar 16 bytes.l->{l.sort(null);l.add(l.remove(0));}
para guardar 31 bytes (requiere el uso de una lista de tamaño no fijo).add
yremove
deben implementarse; nada se dice sobre la lista de tamaño fijo ... Kevin Cruijssen, dado que hay alternativas mucho mejores en los comentarios anteriores, esperaré una edición antes de + 1ing.Haskell,
3637 bytesUtilice los patrones de vista para que coincidan en el encabezado de una versión ordenada de la lista de entrada, luego agregue el primer elemento de la lista al final de la lista restante.Los patrones de vista no valen la pena. Ordena la lista, quita la cabeza y agrégala hasta el final. En este caso, resulta que la solución ingenua tipificada de forma compacta es la mejor.
fuente
-XViewPatterns
. Contarlos de la manera estándarf(a:b)=b++[a];f.sort
es más corto.Perl 6 ,
4319 bytesIntentalo
Intentalo
Tenga en cuenta que
[1..*,0]
daría como resultado((2,3),1)
, por.flat
lo que hay que convertirlo en(2,3,1)
fuente
Mathematica, 18 bytes
Pruébalo en línea!
fuente
RotateLeft@*Sort
Ly , 7 bytes
Pruébalo en línea!
¡Uf, arruinar el tipo es tan caro!
Explicación:
fuente
R,
333229 bytesToma información de stdin. Ordena la lista y luego mueve el primer elemento hasta el final, asegurando que ya no esté ordenado. Guardado tres bytes debido a Giuseppe.
Otra implementación, el mismo número de bytes:
fuente
c(sort(x<-scan())[-1],min(x))
es de 29 bytes usando esencialmente la misma idea que la tuya.Ohm , 2 bytes
Pruébalo en línea!
Creo que esto es lo suficientemente diferente de la publicación totalmente humana para publicar una nueva respuesta; Espero que no te importe : P EDITAR : MALDITA NINJA'D ME
fuente
Python, 31 bytes
Otra solución más de Python.
Lamentablemente, este tiene la misma longitud que la respuesta de HyperNeutrino .
fuente
Gaia , 3 bytes
Pruébalo en línea!
Igual que otras respuestas: ordenar
ȯ
y rotar a la izquierda una vez1«
.fuente
Retina , 10 bytes
Pruébalo en línea!
Esto deja la lista con el segundo elemento más alto primero y el elemento más alto último que nunca se ordena correctamente
fuente
Ruby, 18 bytes
Enviado en el móvil. Por favor no me mates por problemas.
fuente
Pyth, 5 bytes
Explicación
SQ
- ordenar lista de entrada.>SQ1
- rotar la lista de entrada cíclicamente por 1fuente
Protón , 19 bytes
Pruébalo en línea!
-2 bytes indirectamente gracias a xnor
Todavía no estoy trabajando en TIO; esperando un tirónfuente
Python 3 , 28 bytes
Pruébalo en línea!
a.sort()
se ordenaa
en su lugar y vuelveNone
.None
puede usarse como un índice de segmentación y es lo mismo que omitir ese índice.fuente
Python 3 , 31 bytes
Pruébalo en línea! o Verificar todos los casos de prueba.
Inspirado por la respuesta JS de Shaggy .
fuente
RProgN 2 , 2 bytes
Pruébalo en línea!
fuente
PHP, 44 bytes
requiere PHP 5.4 o posterior para la sintaxis de matriz corta.
ordenar argumentos, reemplazar el argumento 0 con el último argumento eliminado, imprimir.
Ejecutar
-nr
o probarlo en línea .El argumento 0 es el nombre del archivo de script,
"-"
si llama a PHP con-r
."-"
se compara con los otros argumentos como una cadena, y desde entoncesord("-")==45
, es más pequeño que cualquier número. Los números mismos, aunque son cadenas, se comparan como números:"12" > "2"
.php -nr '<code>' 3 4 2 5 1
ysort($a=&$argv)
conducen a$a=["-","1","2","3","4","5"]
→[array_pop($a)]+$a
es[0=>"5"]+[0=>"-",1=>"1",2=>"2",3=>"3",4=>"4"]
, loque resulta en
[0=>"5",1=>"1",2=>"2",3=>"3",4=>"4"]
.fuente
+
operador no agrega , se fusiona (sin reordenar los índices; pero eso no importa aquí). El punto importante es que$a
señala$argv
y$argv[0]
contiene el nombre del archivo del script, los argumentos comienzan en el índice 1. Extendí la descripción. Gracias por la preguntaJulia, 23 bytes
Ligeramente más corto que, pero equivalente a
f(x)=circshift(sort(x),1)
. Desearía poder hacer un método basado enselect
eso que fuera más compacto, pero no puedofuente