Cabaran Mingguan

WBOY
Lepaskan: 2024-08-27 06:05:32
asal
857 orang telah melayarinya

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')
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

Atas ialah kandungan terperinci Cabaran Mingguan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan