Sebagai ilmuwan komputer, Anda mungkin sudah terbiasa dengan daftar operasi dasar pop dan push . Ini adalah operasi sederhana yang mengubah daftar elemen. Namun, pernahkah Anda mendengar tentang kegagalan operasi ? (seperti di flip- flop )? Sederhana saja. Dengan diberi nomor n , balikkan elemen n pertama dari daftar. Ini sebuah contoh:
>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> a.flop(4)
[4, 3, 2, 1, 5, 6, 7, 8, 9, 10]
Yang keren tentang operasi gagal, adalah Anda dapat menggunakannya melakukan beberapa hal keren ke daftar, seperti menyortirnya . Kita akan melakukan sesuatu yang mirip dengan jepit:
Diberikan daftar bilangan bulat, "Tetangga itu". Dengan kata lain, sortir sehingga setiap elemen duplikat muncul secara berurutan.
Ini bisa dilakukan dengan jepit! Misalnya, ambil daftar berikut:
>>> a = [3, 2, 1, 4, 3, 3, 2]
>>> a.flop(4)
[4, 1, 2, 3, 3, 3, 2]
>>> a.flop(3)
[2, 1, 4, 3, 3, 3, 2]
>>> a.flop(6)
[3, 3, 3, 4, 1, 2, 2]
Ini membawa kita ke definisi tantangan hari ini:
Diberikan daftar bilangan bulat, hasilkan setiap set jepit yang akan menghasilkan daftar bertetangga.
Menggunakan daftar terakhir sebagai contoh, Anda harus menampilkan:
4
3
6
karena membalik daftar dengan 4, kemudian oleh 3, maka dengan 6 akan menghasilkan daftar tetangga. Ingatlah bahwa Anda tidak perlu mencetak daftar flor yang sesingkat mungkin yang bertetangga dengan daftar. Jika Anda telah mencetak:
4
4
4
3
1
1
6
2
2
sebagai gantinya, ini masih akan menjadi output yang valid. Namun, Anda mungkin tidak akan pernah menampilkan angka yang lebih besar dari panjang daftar. Ini karena untuk daftar a = [1, 2, 3]
, panggilan a.flop(4)
tidak masuk akal.
Berikut ini beberapa contohnya:
#Input:
[2, 6, 0, 3, 1, 5, 5, 0, 5, 1]
#Output
[3, 7, 8, 6, 9]
#Input
[1, 2]
#Output
<any list of integers under 3, including an empty list>
#Input
[2, 6, 0, 2, 1, 4, 5, 1, 3, 2, 1, 5, 6, 4, 4, 1, 4, 6, 6, 0]
#Output
[3, 19, 17, 7, 2, 4, 11, 15, 2, 7, 13, 4, 14, 2]
#Input
[1, 1, 1, 1, 2, 2, 2, -1, 4]
#Output
[]
#Input
[4, 4, 8, 8, 15, 16, 16, 23, 23, 42, 42, 15]
#Output
[12, 7]
Ingatlah bahwa dalam masing-masing contoh ini, output yang diberikan hanyalah salah satu output yang valid. Seperti yang saya katakan sebelumnya, setiap set jepit yang bertetangga dengan daftar yang diberikan adalah output yang valid . Anda dapat menggunakan skrip python ini untuk memverifikasi apakah daftar jepit yang diberikan benar dalam daftar.
Anda dapat mengambil input dan output dalam format apa pun yang masuk akal. Misalnya, argumen fungsi / nilai pengembalian, STDIN / STDOUT, membaca / menulis file dll. Semuanya valid. Seperti biasa, ini adalah kode-golf , jadi buatlah program sesingkat mungkin, dan bersenang-senanglah! :)