Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cabaran Mingguan

Cabaran Mingguan

WBOY
WBOYasal
2024-08-27 06:05:32843semak imbas

Weekly Challenge

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

Tugasan 1: Nombor Unik

Tugasan

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.

penyelesaian saya

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')

Contoh

$ ./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

Tugasan 2: Nilai Kiraan Digit

Tugasan

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.

penyelesaian saya

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn