Tantangan:
Diberikan daftar daftar kosong dari bilangan bulat, kembalikan daftar tupel dari formulir berikut: Daftar pertama tupel dimulai dengan setiap elemen dari daftar pertama diikuti oleh elemen pertama dari setiap daftar berikutnya, sehingga tuple ke-i seharusnya [ith element of first list, first element of second list, ... , first element of last list]
. Sebagai contoh:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] => [[1, 4, 7], [2, 4, 7], [3, 4, 7], ...
Kemudian lakukan tupel formulir [last element of first list, ith element of second list, first element of third list, ..., first element of last list]
, jadi dalam contoh kita ini akan menjadi:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] => ..., [3, 4, 7], [3, 5, 7], [3, 6, 7], ...
Lanjutkan dengan setiap daftar yang tersisa, sampai Anda mendapatkan [last element of first list, ..., last element of second to last list, ith element of last list]
:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] => ..., [3, 6, 7], [3, 6, 8], [3, 6, 9]]
Output penuh adalah sebagai berikut:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] =>
[[1, 4, 7], [2, 4, 7], [3, 4, 7], [3, 5, 7], [3, 6, 7], [3, 6, 8], [3, 6, 9]]
Beberapa boilerplate untuk ukuran yang baik:
- Jika Anda ingin input menjadi daftar string, atau daftar bilangan bulat positif, tidak apa-apa. Pertanyaannya adalah tentang memanipulasi daftar, bukan tentang apa yang ada dalam daftar.
- Input dan output dapat dalam format apa pun yang dapat diterima .
- Program atau fungsi lengkap diizinkan.
- Celah standar tidak diizinkan secara default.
- Pertanyaan ini adalah kode golf, jadi byte-count terendah akan menang.
Contoh:
[] => [[]] (or an error, thanks to ngn for correcting the output in this case)
[[1]] => [[1]]
[[1, 2], [3, 4], [5]] => [[1, 3, 5], [2, 3, 5], [2, 4, 5]]
[[1], [2], [5, 6], [3], [4]] => [[1, 2, 5, 3, 4], [1, 2, 6, 3, 4]]
[[1, 2, 3], [4, 5]] => [[1, 4], [2, 4], [3, 4], [3, 5]]
[[1, 2, 3], []] => unspecified behavior (can be an error)
[[3, 13, 6], [9, 2, 4], [5, 10, 8], [12, 1, 11], [7, 14]] =>
[[3, 9, 5, 12, 7], [13, 9, 5, 12, 7], [6, 9, 5, 12, 7], [6, 2, 5, 12, 7],
[6, 4, 5, 12, 7], [6, 4, 10, 12, 7], [6, 4, 8, 12, 7], [6, 4, 8, 1, 7],
[6, 4, 8, 11, 7], [6, 4, 8, 11, 14]]
[[16, 8, 4, 14, 6, 7, 10, 15], [11, 1, 12, 2, 19, 18, 9, 3], [13, 5, 17]] =>
[[16, 11, 13], [8, 11, 13], [4, 11, 13], [14, 11, 13], [6, 11, 13],
[7, 11, 13], [10, 11, 13], [15, 11, 13], [15, 1, 13], [15, 12, 13], [15, 2, 13],
[15, 19, 13], [15, 18, 13], [15, 9, 13], [15, 3, 13], [15, 3, 5], [15, 3, 17]]
Jika ada yang memiliki judul yang lebih baik, beri tahu saya.
[[]]
karena ada satu tuple kosong dengan satu entri dari masing-masing (nol) daftar. Mungkin terlalu menjengkelkan untuk memerlukan program untuk menampilkan ini dengan benar, jadi saya akan mengatakan bahwa itu tidak perlu.
[]
, sebenarnya, adalah daftar kosong dari daftar yang tidak kosong, tetapi hasilnya ambigu antara []
dan [[]]
jika itu merupakan input yang diizinkan. ("Daftar pertama tupel dimulai dengan setiap elemen dari daftar pertama ..." - tidak ada daftar pertama, jadi kita selesai -> []
)
[]
seharusnya [[]]
. Misalnya, jumlah tupel keluaran adalah sum(inner list lengths) - length of outer list + 1
yang dalam kasus kosong berikan 1
, yang merupakan panjang [[]]
tetapi bukan panjang []
. Ini sedikit masalah yang pedantic ...
[] => []
seharusnya[] => [[]]
tetapi tidak dapat menemukan kata-kata untuk menjelaskan mengapa.