首頁  >  文章  >  後端開發  >  每週挑戰

每週挑戰

WBOY
WBOY原創
2024-08-27 06:05:32756瀏覽

Weekly Challenge

穆罕默德·S·安瓦爾(Mohammad S. Anwar)每週都會發出“每週挑戰”,這是我們所有人為每週兩項任務提出解決方案的機會。我的解決方案先用Python編寫,然後轉換為Perl。這對我們所有人來說都是練習編碼的好方法。

挑戰,我的解決方案

任務 1:唯一編號

任務

給定一個整數數組 @ints,其中除一個元素外,每個元素都出現多次。

寫一個腳本來找出只出現一次的一個元素。

我的解決方案

本週的兩個挑戰都涉及整數的頻率。 Python 有 Counter 函數(來自集合模組),可以自動將事物清單轉換為頻率字典。對於 Perl 解決方案,我手動執行此操作。

一旦我填入了 freq 字典,我就會使用列表理解來找到僅出現一次的所有整數。這存儲在變數once_only中。如果列表中有一個值,我將返回它。否則我會提出適當的錯誤訊息。

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

任務 2:數字計數值

任務

給你一個正整數數組,@ints。

編寫一個腳本,如果對於範圍0

我的解決方案

與上一個任務一樣,我建立了名為 freq 的字典(Perl 中的雜湊)來儲存每個整數的頻率。然後,我仔細檢查清單以檢查每個值是否符合條件。

def digit_count_value(ints: list) -> bool:
    freq = Counter(ints)

    for idx, value in enumerate(ints):
        if freq[idx] != value:
            return False

    return True

範例

$ ./ch-2.py 1 2 1 0
true

$ ./ch-2.py 0 3 0
false

以上是每週挑戰的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn