Diberikan daftar bilangan bulat positif yang mengandung setidaknya 3 entri yang berbeda, mengeluarkan permutasi dari daftar itu yang tidak diurutkan dalam urutan naik atau turun.
Contohnya
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..
Terima kasih @Arnauld dan @NoOneIsHere untuk judulnya!
[2,[1,3]]
,.Jawaban:
JavaScript (ES6),
3934 byteMengurutkan array dalam urutan menaik, pop elemen terakhir dan menggunakannya sebagai elemen pertama dari array baru. Kemudian hancurkan elemen-elemen yang tersisa dari array asli ke dalam array baru (Di JS, keduanya
sort
danpop
modifikasi array asli).Menguji
sumber
a.sort()
?sort
metode JS agak leksikografis.Brachylog , 2 byte
Cobalah online!
atau
Cobalah online!
Mengurutkan kemudian memutar daftar
sumber
Jelly , 3 byte
Cobalah online!
sumber
Ṣṙ-
juga bekerja (hanya merasa seperti mengatakan itu; Anda mungkin tahu: P)Ṣṙ1
hanya tiga byte? Di UTF-8, 7 byte.Ohm , 2 byte
Cobalah online!
Sortir dan putar ke kanan.
sumber
Japt , 3 byte
Menguji
Mengurutkan (
n
) array dan memutar (é
) satu elemen ke kanan.sumber
Python 3 , 31 byte
Cobalah online!
-1 byte terima kasih kepada xnor
sumber
min
di akhir menghemat satu byte.APL, 9 byte
Cobalah online!
Bagaimana?
⍵[⍋⍵]
- urutkan daftar1⌽
- putar 1sumber
TI-Basic (TI-84 Plus CE), 31 byte
Meminta input dalam format
{1,2,3,4}
.TI-Basic adalah bahasa tokenized , semua token yang digunakan di sini adalah satu byte.
Penjelasan:
sumber
Pyth ,
754 byteCobalah online!
-1 byte terima kasih kepada FryAmTheEggman
sumber
05AB1E , 2 byte
Cobalah online!
sumber
05AB1E , 2 byte
Cobalah online!
sumber
Retina , 21 byte
Cobalah online! Sortir dan putar seperti biasa. Setidaknya tidak ada konversi unary saat ini.
sumber
Java 8,
6837 byte-31 byte berkat @Nevay (lupa Java 8 punya
List#sort(Comparator)
metode ..)Memodifikasi input-
ArrayList
, bukannya mengembalikan yang baru.Penjelasan:
Coba di sini.
sumber
l->{l.sort(null);java.util.Collections.rotate(l,1);}
untuk menghemat 16 byte.l->{l.sort(null);l.add(l.remove(0));}
untuk menyimpan 31 byte (membutuhkan penggunaan daftar yang tidak berukuran tetap).add
danremove
harus dilaksanakan; tidak ada yang dikatakan tentang daftar berukuran tetap ... Kevin Cruijssen, mengingat ada banyak alternatif yang lebih baik di komentar sebelumnya, saya akan menunggu hasil edit sebelum memberi +1.Haskell,
3637 byteGunakan pola tampilan untuk mencocokkan di kepala versi yang diurutkan dari daftar input, kemudian tambahkan item pertama dari daftar ke ekor daftar yang tersisa.Pola tampilan tidak sepadan. Sortir daftar, lepas kepala, tambahkan sampai akhir. Dalam hal ini, ternyata solusi naif yang diketik dengan kompak adalah yang terbaik.
sumber
-XViewPatterns
. Menghitung mereka dengan cara standarf(a:b)=b++[a];f.sort
lebih pendek.Perl 6 ,
4319 byteCobalah
Cobalah
Catatan yang
[1..*,0]
akan menghasilkan((2,3),1)
, jadi.flat
apakah ada untuk mengubahnya menjadi(2,3,1)
sumber
Mathematica, 18 byte
Cobalah online!
sumber
RotateLeft@*Sort
Ly , 7 byte
Cobalah online!
Ugh, merusak semacam itu sangat mahal!
Penjelasan:
sumber
R,
333229 byteMengambil input dari stdin. Mengurutkan daftar dan kemudian memindahkan elemen pertama ke akhir, memastikan bahwa itu tidak lagi diurutkan. Disimpan tiga byte karena Giuseppe.
Implementasi lain, jumlah byte yang sama:
sumber
c(sort(x<-scan())[-1],min(x))
adalah 29 byte menggunakan ide dasarnya sama dengan milikmu.Ohm , 2 byte
Cobalah online!
Saya pikir ini cukup berbeda dari posting benar-benar manusia untuk mengirim jawaban baru; Saya harap Anda tidak keberatan: P EDIT : DAMMIT YOU NINJA'D ME
sumber
Python, 31 byte
Namun solusi Python lain.
Sayangnya, yang ini memiliki panjang yang sama dengan jawaban HyperNeutrino .
sumber
Gaia , 3 byte
Cobalah online!
Sama seperti jawaban lainnya: urutkan
ȯ
dan putar ke kiri satu kali1«
.sumber
Retina , 10 byte
Cobalah online!
Ini meninggalkan daftar dengan elemen tertinggi ke-2 terlebih dahulu dan elemen tertinggi terakhir yang tidak pernah diurutkan dengan benar
sumber
Ruby, 18 byte
Dikirimkan di ponsel. Tolong jangan bunuh aku untuk masalah.
sumber
Pyth, 5 byte
Penjelasan
SQ
- urutkan daftar input.>SQ1
- Putar daftar input secara siklis sebesar 1sumber
Proton , 19 byte
Cobalah online!
-2 byte secara tidak langsung berkat xnor
Belum bekerja di TIO; menunggu tarikan.sumber
Python 3 , 28 byte
Cobalah online!
a.sort()
macama
di tempat dan kembaliNone
.None
dapat digunakan sebagai indeks pengirisan dan sama dengan menghilangkan indeks itu.sumber
Python 3 , 31 byte
Cobalah online! atau Verifikasi semua kasus uji.
Terinspirasi oleh jawaban JS Shaggy .
sumber
RProgN 2 , 2 byte
Cobalah online!
sumber
PHP, 44 byte
membutuhkan PHP 5.4 atau lebih baru untuk sintaks array pendek.
urutkan argumen, ganti argumen ke-0 dengan argumen terakhir yang dihapus, cetak.
Jalankan dengan
-nr
atau coba online .Argumen 0-th adalah nama file skrip,
"-"
jika Anda memanggil PHP dengan-r
."-"
dibandingkan dengan argumen lain sebagai string, dan karenaord("-")==45
, ia lebih kecil dari angka apa pun. Angka-angka itu sendiri, meskipun string, dibandingkan sebagai nomor:"12" > "2"
.php -nr '<code>' 3 4 2 5 1
dansort($a=&$argv)
mengarah ke$a=["-","1","2","3","4","5"]
→[array_pop($a)]+$a
is[0=>"5"]+[0=>"-",1=>"1",2=>"2",3=>"3",4=>"4"]
,yang menghasilkan
[0=>"5",1=>"1",2=>"2",3=>"3",4=>"4"]
.sumber
+
Operator tidak menambahkan, ia menyatu (tanpa menata ulang indeks; tetapi itu tidak masalah di sini). Poin penting adalah bahwa$a
menunjuk ke$argv
dan$argv[0]
berisi nama file skrip, argumen mulai dari indeks 1. Saya memperluas deskripsi. Terima kasih untuk pertanyaannya.Julia, 23 byte
Sedikit lebih pendek dari, tetapi setara dengan
f(x)=circshift(sort(x),1)
. Saya berharap saya bisa membuat metode berdasarkanselect
itu lebih, kompak tapi saya tidak bisasumber