Dada uma lista de números inteiros positivos que contém pelo menos 3 entradas distintas, produz uma permutação dessa lista que não é classificada em ordem crescente ou decrescente.
Exemplos
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..
Obrigado @Arnauld e @NoOneIsHere pelo título!
[2,[1,3]]
,.Respostas:
JavaScript (ES6),
3934 bytesClassifique a matriz em ordem crescente, pop o último elemento e use-o como o primeiro elemento de uma nova matriz. Em seguida, desestruture os elementos restantes da matriz original na nova matriz (em JS, ambos
sort
epop
modifique a matriz original).Teste-o
fonte
a.sort()
?sort
método de JS classifica lexicograficamente.Braquilog , 2 bytes
Experimente online!
ou
Experimente online!
Classifica e gira a lista
fonte
Gelatina , 3 bytes
Experimente online!
fonte
Ṣṙ-
também funciona (apenas senti como dizer isso, você provavelmente sabia: P)Ṣṙ1
apenas três bytes? No UTF-8, são 7 bytes.Ohm , 2 bytes
Experimente online!
Classifique e gire para a direita.
fonte
Japonês , 3 bytes
Teste-o
Classifica (
n
) a matriz e gira (é
) um elemento para a direita.fonte
Python 3 , 31 bytes
Experimente online!
-1 byte graças ao xnor
fonte
min
no final salva um byte.APL, 9 bytes
Experimente online!
Quão?
⍵[⍋⍵]
- classifique a lista1⌽
- gire 1fonte
TI-Basic (TI-84 Plus CE), 31 bytes
Solicita a entrada no formato
{1,2,3,4}
.O TI-Basic é um idioma tokenizado , todos os tokens usados aqui são de um byte.
Explicação:
fonte
Pitão ,
754 bytesExperimente online!
-1 byte graças a FryAmTheEggman
fonte
05AB1E , 2 bytes
Experimente online!
fonte
05AB1E , 2 bytes
Experimente online!
fonte
Retina , 21 bytes
Experimente online! Classifique e gire como de costume. Pelo menos não há conversão unária dessa vez.
fonte
Java 8,
6837 bytes-31 bytes graças a @Nevay (esqueci que o Java 8 tinha um
List#sort(Comparator)
método ..)Modifica a entrada
ArrayList
, em vez de retornar uma nova.Explicação:
Experimente aqui.
fonte
l->{l.sort(null);java.util.Collections.rotate(l,1);}
para salvar 16 bytes.l->{l.sort(null);l.add(l.remove(0));}
para salvar 31 bytes (requer o uso de uma lista de tamanho não fixo).add
eremove
devem ser implementadas; nada é dito sobre lista de tamanho fixo ... Kevin Cruijssen, como existem alternativas muito melhores nos comentários anteriores, esperarei uma edição antes de marcar com +1.Haskell,
3637 bytesUse os padrões de exibição para corresponder no início de uma versão classificada da lista de entrada e, em seguida, anexe o primeiro item da lista ao final da lista restante.Os padrões de exibição não valem a pena. Classifique a lista, retire a cabeça e coloque-a no final. Nesse caso, verifica-se que a solução ingênua digitada compactamente é a melhor.
fonte
-XViewPatterns
. Contar esses da maneira padrãof(a:b)=b++[a];f.sort
é mais curto.Perl 6 ,
4319 bytesTente
Tente
Observe que
[1..*,0]
isso resultaria em((2,3),1)
, então.flat
existe para transformá-lo em(2,3,1)
fonte
Mathematica, 18 bytes
Experimente online!
fonte
RotateLeft@*Sort
Ly , 7 bytes
Experimente online!
Ugh, arruinar o tipo é tão caro!
Explicação:
fonte
R,
333229 bytesRecebe entrada de stdin. Classifica a lista e move o primeiro elemento para o final, garantindo que ele não seja mais classificado. Salvo três bytes devido a Giuseppe.
Outra implementação, mesma contagem de bytes:
fonte
c(sort(x<-scan())[-1],min(x))
tem 29 bytes usando essencialmente a mesma ideia que a sua.Ohm , 2 bytes
Experimente online!
Eu acho que isso é bastante diferente do post de totallyhuman para postar uma nova resposta; Espero que você não se importe: P EDIT : DAMMIT YOU NINJA'D ME
fonte
Python, 31 bytes
Mais uma solução Python.
Infelizmente, este tem o mesmo comprimento para a resposta do HyperNeutrino .
fonte
Gaia , 3 bytes
Experimente online!
Igual a outras respostas: classifique
ȯ
e gire para a esquerda uma vez1«
.fonte
Retina , 10 bytes
Experimente online!
Isso deixa a lista com o segundo elemento mais alto primeiro e o último elemento mais alto, que nunca é classificado corretamente
fonte
Ruby, 18 bytes
Enviado no celular. Por favor, não me mate por problemas.
fonte
Pitão, 5 bytes
Explicação
SQ
- classificar lista de entrada.>SQ1
- gire a lista de entrada ciclicamente por 1fonte
Próton , 19 bytes
Experimente online!
-2 bytes indiretamente, graças ao xnor
Ainda não está trabalhando no TIO; esperando por um puxão.fonte
Python 3 , 28 bytes
Experimente online!
a.sort()
classificaa
no lugar e retornaNone
.None
pode ser usado como um índice de fatiamento e é o mesmo que omitir esse índice.fonte
Python 3 , 31 bytes
Experimente online! ou Verifique todos os casos de teste.
Inspirado pela resposta JS de Shaggy .
fonte
RProgN 2 , 2 bytes
Experimente online!
fonte
PHP, 44 bytes
requer PHP 5.4 ou posterior para sintaxe de matriz curta.
classifique argumentos, substitua o 0-th argumento pelo último argumento removido, imprima.
Corra com
-nr
ou experimente online .O argumento 0-th é o nome do arquivo de script,
"-"
se você chamar PHP com-r
."-"
é comparado aos outros argumentos como uma sequência eord("-")==45
, como é menor que qualquer número. Os próprios números, apesar de cordas, são comparados como números:"12" > "2"
.php -nr '<code>' 3 4 2 5 1
esort($a=&$argv)
levar a$a=["-","1","2","3","4","5"]
→[array_pop($a)]+$a
é[0=>"5"]+[0=>"-",1=>"1",2=>"2",3=>"3",4=>"4"]
, oque resulta em
[0=>"5",1=>"1",2=>"2",3=>"3",4=>"4"]
.fonte
+
operador não anexa, é mesclado (sem reordenar os índices; mas isso não importa aqui). O ponto importante é que$a
aponta para$argv
e$argv[0]
contém o nome do arquivo do script, os argumentos começam no índice 1. Estendi a descrição. Obrigado pela pergunta.Julia, 23 bytes
Um pouco menor que, mas equivalente a
f(x)=circshift(sort(x),1)
. Eu gostaria de poder fazer um método baseadoselect
nisso, era mais compacto, mas não possofonte