Setiap minggu Mohammad S. Anwar menghantar Cabaran Mingguan, peluang untuk kita semua mencari penyelesaian kepada dua tugas mingguan. Penyelesaian saya ditulis dalam Python terlebih dahulu, dan kemudian ditukar kepada Perl. Ini cara yang bagus untuk kita semua mempraktikkan beberapa pengekodan.
Cabaran, Penyelesaian saya
Anda diberi tatasusunan integer, @ints, di mana setiap elemen muncul lebih daripada sekali kecuali satu elemen.
Tulis skrip untuk mencari satu elemen yang muncul tepat sekali.
Kedua-dua cabaran minggu ini melibatkan kekerapan integer. Python mempunyai fungsi Counter (daripada modul koleksi) yang secara automatik menukar senarai perkara kepada dict frekuensi. Untuk penyelesaian Perl, saya melakukan ini dengan tangan.
Setelah saya mengisi dict freq, saya kemudian mencari semua integer yang hanya muncul sekali menggunakan pemahaman senarai. Ini disimpan dalam pembolehubah once_only. Jika terdapat satu nilai dalam senarai, saya mengembalikannya. Jika tidak, saya akan menimbulkan mesej ralat yang sesuai.
def unique_number(ints: list) -> int: freq = Counter(ints) only_once = [i for i in freq if freq[i] == 1] if len(only_once) == 1: return only_once[0] if len(only_once) == 0: raise ValueError('No values only appear once') raise ValueError('More than one value appears once')
$ ./ch-1.py 3 3 1 1 $ ./ch-1.py 3 2 4 2 4 3 $ ./ch-1.py 1 1 $ ./ch-1.py 4 3 1 1 1 4 3
Anda diberi pelbagai integer positif, @ints.
Tulis skrip untuk mengembalikan benar jika bagi setiap indeks i dalam julat 0 <= i < saiz tatasusunan, digit i berlaku tepat pada kali $ints[$i] dalam tatasusunan yang diberikan sebaliknya mengembalikan palsu.
Seperti tugasan terakhir, saya mencipta dict (cincang dalam Perl) dipanggil freq untuk menyimpan kekerapan setiap integer. Saya kemudian bercakap melalui senarai untuk menyemak sama ada syarat memenuhi setiap nilai.
def digit_count_value(ints: list) -> bool: freq = Counter(ints) for idx, value in enumerate(ints): if freq[idx] != value: return False return True </p> <h3> Contoh </h3> <pre class="brush:php;toolbar:false">$ ./ch-2.py 1 2 1 0 true $ ./ch-2.py 0 3 0 false
Atas ialah kandungan terperinci Cabaran Mingguan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!