Pengantar:
Setelah saya memposting dua tantangan terkait pelangi: Codegolf Rainbow: Fun with Integer-Arrays 1 dan Codegolf Rainbow: Draw in Black-and-White 2 , komentar berikut dibuat oleh @ChrisM di ASCII ( Draw in Black-and-White ) tantangan :
Mungkin Anda tahu ini dan itu dengan desain (saya tahu bahwa pelangi juga bukan rhombus atau ascii, dan posisi pesanan yang lebih tinggi menjadi lebih rumit), tetapi bukankah warnanya terbalik dalam pelangi ke-2?
Dan dia memang benar. Ketika Anda melihat pelangi ganda, yang kedua sebenarnya merupakan cerminan yang pertama, sehingga warnanya terbalik. Dengan tiga pelangi, ini adalah pelangi ganda yang sebenarnya, dengan pelangi ketiga merupakan cerminan dari salah satu dari dua pelangi lainnya. Dan dengan empat, ada dua pelangi, dan dua refleksi dari mereka.
Jadi, mari kita membuat tantangan terkait ketiga menggunakan fakta itu.
Tantangan:
Input: Sebuah bilangan bulat positif n
yang >=2
, dan daftar bilangan bulat ukuran >= n+1
.
Output: Daftar yang sama dipesan sebagai berikut:
- Pertama-tama pisahkan daftar input dalam sub-daftar ukuran
n
(di mana sub-daftar trailing bisa berapapun dalam kisaran[1,n]
). - Kemudian kami melakukan hal berikut berdasarkan jumlah sub-daftar
m
:- Urutkan
m - m//2
jumlah sub-daftar pertama dari terendah ke tertinggi (di mana//
adalah bilangan bulat). (Yaitu dengan 6 sub-daftar, tiga yang pertama akan disortir dari yang terendah ke yang tertinggi; dengan 5 sub-daftar yang ketiga akan disortir dari yang terendah ke yang tertinggi.) - Urutkan
m//2
jumlah sub-daftar terakhir dari tertinggi ke terendah (di mana//
integer-bagi). (Yaitu dengan 6 sub-daftar, tiga terakhir akan disortir dari tertinggi ke terendah; dengan 5 sub-daftar, dua terakhir akan diurutkan dari tertinggi ke terendah.)
- Urutkan
- Gabungkan semua sub-daftar bersama untuk membentuk satu daftar lagi
Contoh:
Input: n=7
dan [3,2,1,-4,5,6,17,2,0,3,5,4,66,-7,7,6,-5,2,10]
Langkah 1: [[3,2,1,-4,5,6,17],[2,0,3,5,4,66,-7],[7,6,-5,2,10]]
Langkah 2: [[-4,1,2,3,5,6,17],[-7,0,2,3,4,5,66],[10,7,6,2,-5]]
Langkah 3 / Output:[-4,1,2,3,5,6,17,-7,0,2,3,4,5,66,10,7,6,2,-5]
Input: n=4
dan [7,4,-8,9,3,19,0,-23,-13,13]
Langkah 1: [[7,4,-8,9],[3,19,0,-23],[-13,13]]
Langkah 2: [[-8,4,7,9],[-23,0,3,19],[13,-13]]
Langkah 3 / Output:[-8,4,7,9,-23,0,3,19,13,-13]
Aturan tantangan:
- Input integer
n
dijamin lebih besar dari 1. - Ukuran bilangan bulat daftar dijamin lebih besar dari
n
. - Sub-daftar tambahan dapat lebih kecil dari
n
(seperti yang dapat dilihat pada contoh dan kasus uji). - Format I / O fleksibel dalam format apa pun yang wajar. Dapat berupa daftar / larik bilangan bulat atau desimal, string yang dibatasi koma / spasi / baris baru, aliran bilangan bulat, dll. (Output mungkin bukan daftar daftar 2D seperti langkah 2. Langkah 3 untuk meratakan kembali ke dalam satu daftar diperlukan untuk tantangan ini.)
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa pun'. - Aturan standar berlaku untuk jawaban Anda, jadi Anda diperbolehkan menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program penuh. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda.
- Juga, menambahkan penjelasan untuk jawaban Anda sangat dianjurkan.
Kasus uji:
Inputs: n=7 and [3,2,1,-4,5,6,17,2,0,3,5,4,66,-7,7,6,-5,2,10]
Output: [-4,1,2,3,5,6,17,-7,0,2,3,4,5,66,10,7,6,2,-5]
Inputs: n=4 and [7,4,-8,9,3,19,0,-23,-13,13]
Output: [-8,4,7,9,-23,0,3,19,13,-13]
Inputs: n=2 and [7,-3,1]
Output: [-3,7,1]
Inputs: n=3 and [1,6,99,4,2]
Output: [1,6,99,4,2]
Inputs: n=2 and [5,2,9,3,-5,-5,11,-5,4,12,9,-2,0,4,1,10,11]
Output: [2,5,3,9,-5,-5,-5,11,4,12,9,-2,4,0,10,1,11]
Inputs: n=3 and [5,2,9,3,-5,-5,11,-5,4,12,9,-2,0,4,1,10,11]
Output: [2,5,9,-5,-5,3,-5,4,11,12,9,-2,4,1,0,11,10]
sumber
Jelly , 9 byte
Cobalah online!
sumber
Python 2 , 82 byte
Cobalah online!
sumber
Japt , 10 byte
Cobalah online!
sumber
05AB1E (warisan) , 9 byte
Cobalah online!
Cobalah online! di 05AB1E (Elixir menulis ulang) - mengharapkan input berada di stack, metode I / O default.
Kevin datang dengan 11-byter-nya sendiri yang dulu saya dapatkan sampai 10. Lalu saya datang dengan sesuatu yang lain untuk 9 byte.
sumber
ô€{2äRć€R)˜
.í
. Dan golf tambahan yang bagus.JavaScript (ES6),
8281 byteDisimpan 1 byte berkat @redundancy
Mengambil input sebagai
(list)(n)
.Cobalah online!
sumber
a
satu dimensi, saya yakin Anda bisa menggantia>[]
dengana+a
untuk memeriksa kasing kosong dan menghemat 1 byte. Strategi rekursif yang sangat pintar untuk mempartisi dan menentukan kapan harus membalikkan hal semacam itu, juga!