Bir indeks listesi ve sıfır veya daha fazla tamsayı listesi verildiğinde, ilk girişin anahtar önceliği ile birlikte artan sırada sıralanan tamsayıların listesini çıkarın.
Misal
Girilen tuşlar [1, 0, 2]
ve girilen listeler olsun [[5, 3, 4], [6, 2, 1], [5, 2, 1]]
. Bu listelerin artan öğelerine göre ikinci öğelerine, ardından ilk öğeye, ardından üçüncü öğeye göre sıralanması gerekir:
- İlk olarak, index'teki değerlere göre sıralarız
1
:[[6, 2, 1], [5, 2, 1], [5, 3, 4]]
- Ardından, dizindeki değerleri kullanarak ilk sıralamadaki bağları koparırız
0
:[[5, 2, 1], [6, 2, 1], [5, 3, 4]]
- Son olarak, indeksteki vlularla kalan bağları koparırız
2
(bu aslında hiçbir şeyi değiştirmez, çünkü kalan bağ yoktur).
ayrıntılar
- Sıralama sabittir: eğer iki öğe verilen sıralama tuşlarına göre eşitse, çıktıda aynı göreli sırada kalmaları gerekir. Örneğin,
A
veB
belirli bir sıralama anahtarları altında eşittir ve giriş olarak[..., A, ..., B, ...]
,A
önce yerleştirilmelidirB
çıktı. - Sıralama anahtarı, giriş listelerinden birinde hiçbir zaman var olmayan bir öğeye başvurmaz.
- Hiçbir sıralama anahtarı tekrarlanmayacaktır. Böylece,
[1, 2, 1]
sıralama anahtarlarının geçerli bir listesi değildir. - Sıralama anahtarları tarafından başvurulan öğeler, sıralama düzenini dikkate almaz. Çıktı sırasını yalnızca ilk göreli sıra ve sıralama tuşları tarafından başvurulan öğelerin değerleri belirler.
- Sıralama anahtarlarının sıfır veya tek dizinli olup olmadığını seçebilirsiniz.
- Sıralama tuşlarında negatif değer olmayacaktır. Tek endekslemeyi kullanmayı seçerseniz, sıralama tuşlarında da sıfır olmaz.
- Tam sayı değerleri, dilinizin yerel olarak temsil edilebilir aralığını aşmayacaktır. Seçtiğiniz dil yerel olarak rasgele kesinlikli tamsayıları (Python gibi) yapabiliyorsa, bellek sınırlamalarına tabi olarak girişte herhangi bir tamsayı değeri bulunabilir.
Referans Uygulaması (Python 2)
#!/usr/bin/env python
keys = input()
lists = input()
print sorted(lists, key=lambda l:[l[x] for x in keys])
Test Durumları
Biçim: keys lists -> output
. Tüm sıralama anahtarları sıfır dizinlidir.
[1, 0, 2] [[5, 3, 4], [6, 2, 1], [5, 2, 1]] -> [[5, 2, 1], [6, 2, 1], [5, 3, 4]]
[1, 2] [[5, 3, 4], [6, 2, 1], [5, 2, 1]] -> [[6, 2, 1], [5, 2, 1], [5, 3, 4]]
[0, 1] [[1, 2], [2, 1]] -> [[1, 2], [2, 1]]
[1, 0] [[1, 2], [2, 1]] -> [[2, 1], [1, 2]]
[0] [[4], [10, 11, -88], [-2, 7]] -> [[-2, 7], [4], [10, 11, -88]]
[2] [[-1, -5, 8, -1, -4, -10, -5, 4, 4, 6, -8, 4, 2], [-7, 6, 2, -8, -7, 7, -3, 3, 0, -6, 1], [-9, 8, -5, -1, -7, -8, -5, -6, 5, -6, 6]] -> [[-9, 8, -5, -1, -7, -8, -5, -6, 5, -6, 6], [-7, 6, 2, -8, -7, 7, -3, 3, 0, -6, 1], [-1, -5, 8, -1, -4, -10, -5, 4, 4, 6, -8, 4, 2]]
[2, 1] [[9, 2, -2, -10, -6], [3, -4, -2]] -> [[3, -4, -2], [9, 2, -2, -10, -6]]
[2, 4, 8] [[5, -3, 4, -6, -1, -2, -2, -4, 5], [-2, -3, 6, -4, -1, -4, -4, -5, 8, 9, 9, -3, 3, -9, -3], [2, 0, 10, -10, -1, 2, -1, 5, -1, 10, -5], [-7, -8, -6, 7, 3, 8, 6, -7, -2, 0, -6, -4, 4, -3, 2, -3]] -> [[-7, -8, -6, 7, 3, 8, 6, -7, -2, 0, -6, -4, 4, -3, 2, -3], [5, -3, 4, -6, -1, -2, -2, -4, 5], [-2, -3, 6, -4, -1, -4, -4, -5, 8, 9, 9, -3, 3, -9, -3], [2, 0, 10, -10, -1, 2, -1, 5, -1, 10, -5]]
[1, 2, 3, 4, 5] [[-7, 3, -8, 3, 5, -1, 6, -6, 9, 8], [-9, -1, -7, -9, -10, -2, -8, -10, -10, -3], [5, 3, -6, -5, -4, -4, -8, 2], [9, -4, 1, -1, -3, -2], [-6, -10, 4, -10, 6, 6, -1, 3, 0, 0], [1, -2, -7, -6, -7, -7, -1, 0, -4, 3, 3], [7, -1, -7, 2, -2, 9, 7, 5, -6, -8], [1, -5, -3, -10, -7, 9, -8, -5, -1], [-9, 4, -1, -1, 2, 4]] -> [[-6, -10, 4, -10, 6, 6, -1, 3, 0, 0], [1, -5, -3, -10, -7, 9, -8, -5, -1], [9, -4, 1, -1, -3, -2], [1, -2, -7, -6, -7, -7, -1, 0, -4, 3, 3], [-9, -1, -7, -9, -10, -2, -8, -10, -10, -3], [7, -1, -7, 2, -2, 9, 7, 5, -6, -8], [-7, 3, -8, 3, 5, -1, 6, -6, 9, 8], [5, 3, -6, -5, -4, -4, -8, 2], [-9, 4, -1, -1, 2, 4]]
[8, 7, 3, 2, 4, 9, 1] [[8, -5, 1, -6, -1, -4, 6, 10, 10, 6, 9, 5], [4, -8, 6, -10, -2, -3, 2, -6, 9, 5, 4, 10, 2, 3], [10, -1, 3, 0, -4, 1, -5, -4, -1, -7, 9, -9, -1, -5, 7, 8, 9, 6, -3], [0, -9, -7, -2, 2, -5, 7, 4, 6, -4, 1, 8, -7, 10], [5, 6, -9, 0, -1, 5, 4, 7, 5, 10, 2, 5, 7, -9]] -> [[10, -1, 3, 0, -4, 1, -5, -4, -1, -7, 9, -9, -1, -5, 7, 8, 9, 6, -3], [5, 6, -9, 0, -1, 5, 4, 7, 5, 10, 2, 5, 7, -9], [0, -9, -7, -2, 2, -5, 7, 4, 6, -4, 1, 8, -7, 10], [4, -8, 6, -10, -2, -3, 2, -6, 9, 5, 4, 10, 2, 3], [8, -5, 1, -6, -1, -4, 6, 10, 10, 6, 9, 5]]