Pengurutan Kustom
Termasuk bagian Logika dan Alur dalam perjalanan GDScript di Coddy. Pelajaran 51 dari 78.
sort() mengurutkan array secara menaik dan mengubah array itu sendiri. Angka diurutkan dari yang terkecil hingga terbesar, dan string mengikuti urutan yang sama seperti min(), dengan huruf kapital lebih dahulu. Lalu, reverse() menghasilkan urutan menurun:
var scores := [40, 95, 12, 70]
scores.sort()
print(scores) # [12, 40, 70, 95]
scores.reverse()
print(scores) # [95, 70, 40, 12]Untuk urutan lainnya, panggil sort_custom() dengan fungsi pembanding. Fungsi ini menerima dua elemen, a dan b, lalu mengembalikan true ketika a harus berada sebelum b. Berikan fungsi berdasarkan namanya, tanpa tanda kurung:
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"]Perbandingan dapat memeriksa isi elemen. Contoh ini menempatkan dictionary dengan "hp" terbanyak di urutan pertama:
func by_hp(a: Dictionary, b: Dictionary) -> bool:
return a["hp"] > b["hp"]Pengurutan tidak stabil: elemen yang hasil perbandingannya sama bisa berakhir dalam urutan apa pun. Jika urutan elemen yang nilainya sama penting, bandingkan field kedua saat field pertama sama:
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() tersedia pada Array, tetapi tidak pada PackedStringArray yang dikembalikan oleh split(), jadi ubah terlebih dahulu dengan Array(...). Kamu juga akan menjumpai perbandingan yang ditulis secara inline, seperti pada sort_custom(func(a, b): return a > b). Bentuk itu adalah lambda, yang dibahas dalam bab Fungsi Lanjutan.
Tantangan
MudahProgram membaca dua baris: bilangan bulat yang dipisahkan oleh spasi, dan kata-kata yang dipisahkan oleh spasi. Kode yang diberikan menyimpannya dalam numbers (array berisi int) dan words (array berisi string).
- Tulis fungsi pembanding
by_length(a: String, b: String) -> booldi tingkat teratas. Kata yang lebih pendek berada lebih dahulu, dan kata-kata dengan panjang yang sama diurutkan secara alfabetis. - Cetak empat baris: angka dalam urutan menaik, angka dalam urutan menurun, kata-kata dalam urutan alfabetis (dengan
sort()), dan kata-kata yang diurutkan dengansort_custom(by_length).
Untuk input 5 3 8 1 2 dan elephant cat dolphin bee, output-nya adalah:
Ascending: [1, 2, 3, 5, 8]
Descending: [8, 5, 3, 2, 1]
Alphabetical: ["bee", "cat", "dolphin", "elephant"]
By length: ["bee", "cat", "dolphin", "elephant"]Coba sendiri
extends Node
# Tulis fungsi pembanding by_length() di sini
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))
# Urutkan kedua array dan cetak empat baris
pass
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami String
Method untuk StringMencari dalam StringMengganti dan Menghapus SpasiMemisahkan dan MenggabungkanUlasan: Memeriksa Nama Pengguna4Dictionary Bagian 2
Dictionary BersarangArray berisi DictionaryMenggabungkan DictionaryMenyalin DictionaryRangkuman: Penghitung Frekuensi10Fungsi Lanjutan
Mengembalikan Beberapa NilaiFungsi Lambda Bagian 1Fungsi Lambda Bagian 2Ringkasan: Mengurutkan dengan LambdaFungsi Rekursif Bagian 1Fungsi Rekursif Bagian 2Ringkasan: Menjumlahkan array Bersarang13Sistem Manajemen Inventaris
Ikhtisar ProyekTambahkan Barang2Pengambilan Keputusan Lanjutan
Pencocokan dengan VariabelGuard pada MatchPola arrayPola dictionaryPemeriksaan KeanggotaanUlasan: Parser Perintah5Aplikasi Buku Kontak
Tampilkan MenuTambah Kontak8Pengelola Data Siswa
Gambaran Umum ProyekTambah Siswa11Fungsi Tingkat Tinggi
Method mapMethod filterMethod reduceany dan allUlasan: Validator EmailUlasan: Pemroses Angka3Array Multidimensi
Dasar-Dasar Array 2DMengakses Elemen Array 2DNested Loop dengan Array 2DRangkuman: Array 2DArray Tidak BeraturanPola Umum Array 2DRangkuman: Papan Permainan6Set dengan Dictionary
Apa Itu Set?Dictionary sebagai SetMenambahkan dan MenghapusUnion dan IntersectionSelisih SetRangkuman: Menghapus Duplikat9Agregasi Data Lanjutan
Menjumlahkan NilaiMencari Nilai Minimum dan MaksimumPengurutan KustomUlasan: Pengurut dictionaryLatihan sendiri: Compiler GDScript online