Özel Sıralama
Coddy'nin GDScript Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 51 / 78.
sort() bir diziyi artan sırada sıralar ve dizinin kendisini değiştirir. Sayılar küçükten büyüğe sıralanır, dizeler ise min() ile aynı sırayı izler; önce büyük harfler gelir. reverse() daha sonra azalan sırayı verir:
var scores := [40, 95, 12, 70]
scores.sort()
print(scores) # [12, 40, 70, 95]
scores.reverse()
print(scores) # [95, 70, 40, 12]Diğer sıralama düzenleri için sort_custom() işlevini bir karşılaştırma işleviyle çağırın. Bu işlev iki öğe, a ve b alır ve a, b'den önce gelmeliyse true döndürür. İşlevi parantez kullanmadan adıyla iletin:
func by_length(a: String, b: String) -> bool:
return a.length() < b.length()
func _ready():
var words := ["banana", "fig", "kiwi"]
words.sort_custom(by_length)
print(words) # ["fig", "kiwi", "banana"]Karşılaştırma, öğelerin içine bakabilir. Bu, en çok "hp" değerine sahip sözlüğü ilk sıraya koyar:
func by_hp(a: Dictionary, b: Dictionary) -> bool:
return a["hp"] > b["hp"]Sıralama kararlı değildir: eşit olarak karşılaştırılan öğeler herhangi bir sırada yer alabilir. Eşitliklerin önemli olduğu durumlarda, ilk alan eşitse ikinci bir alanı karşılaştırın:
func by_score_then_name(a: Dictionary, b: Dictionary) -> bool:
if a["score"] != b["score"]:
return a["score"] > b["score"]
return a["player"] < b["player"]sort_custom(), Array üzerinde bulunur, ancak split() tarafından döndürülen PackedStringArray üzerinde bulunmaz; bu yüzden önce Array(...) ile dönüştürün. Ayrıca karşılaştırmanın satır içinde yazıldığı biçimle de karşılaşacaksınız; örneğin sort_custom(func(a, b): return a > b). Bu biçim, İleri Düzey Fonksiyonlar bölümünde ele alınan bir lambda'dır.
Görev
KolayProgram iki satır okur: boşluklarla ayrılmış tam sayılar ve boşluklarla ayrılmış sözcükler. Verilen kod bunları numbers (bir int dizisi) ve words (bir string dizisi) içinde saklar.
- En üst düzeyde bir karşılaştırma işlevi
by_length(a: String, b: String) -> boolyaz. Daha kısa sözcük önce gelir; aynı uzunluktaki sözcükler alfabetik sıradadır. - Dört satır yazdır: sayıları artan sırada, sayıları azalan sırada, sözcükleri alfabetik sırada (
sort()ile) vesort_custom(by_length)ile sıralanmış sözcükleri.
5 3 8 1 2 ve elephant cat dolphin bee girdileri için çıktı şöyledir:
Ascending: [1, 2, 3, 5, 8]
Descending: [8, 5, 3, 2, 1]
Alphabetical: ["bee", "cat", "dolphin", "elephant"]
By length: ["bee", "cat", "dolphin", "elephant"]Kendin dene
extends Node
# Karşılaştırma fonksiyonu by_length()'i buraya yazın
func _ready():
var numbers: Array[int] = []
for text in OS.read_string_from_stdin().split(" ", false):
numbers.append(int(text))
var words := Array(OS.read_string_from_stdin().split(" ", false))
# Dizileri sıralayın ve dört satırı yazdırın
pass
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1String’leri Derinlemesine İnceleme
String MetotlarıString’lerde AramaDeğiştirme ve KırpmaBölme ve BirleştirmeTekrar: Kullanıcı Adı Kontrolü4Sözlükler Bölüm 2
İç İçe SözlüklerSözlük DizileriSözlükleri BirleştirmeSözlükleri KopyalamaTekrar - Frekans Sayacı10İleri Düzey Fonksiyonlar
Birden Fazla Değer DöndürmeLambda Fonksiyonları Bölüm 1Lambda Fonksiyonları Bölüm 2Tekrar - Lambda ile SıralamaÖzyinelemeli Fonksiyonlar Bölüm 1Özyinelemeli Fonksiyonlar Bölüm 2Tekrar - İç İçe Dizilerin Toplamı13Envanter Yönetim Sistemi
Projeye Genel BakışÜrün Ekle2İleri Düzey Karar Verme
Değişkenlerle EşleştirmeEşleştirme KoşullarıDizi KalıplarıSözlük KalıplarıÜyelik KontrolleriÖzet - Komut Ayrıştırıcı5Rehber Uygulaması
Menüyü GörüntüleKişi Ekle8Öğrenci Kayıt Yöneticisi
Proje Genel BakışıÖğrenci Ekle11Üst Düzey Fonksiyonlar
map Metodufilter Metodureduce Metoduany ve allTekrar - E-posta DoğrulayıcıTekrar - Sayı İşleyici3Çok Boyutlu Diziler
2B Dizilere Giriş2B Dizi Elemanlarına Erişim2B Dizilerle İç İçe DöngülerTekrar - 2B DizilerDüzensiz DizilerYaygın 2B Dizi ÖrüntüleriTekrar - Oyun Tahtası6Sözlüklerle Kümeler
Küme Nedir?Küme Olarak SözlükEkleme ve SilmeBirleşim ve KesişimKüme FarkıTekrar: Yinelenenleri Silme9Gelişmiş Veri Toplama
Değerleri ToplamaEn Küçük ve En Büyük Değeri BulmaÖzel SıralamaÖzet - Sözlük SıralayıcıKendi başına pratik yap: Online GDScript derleyicisi