Python
 Computer >> コンピューター >  >> プログラミング >> Python

(base、number)のペアを含む配列内の一致の数を見つけるPythonプログラム


(x、y)の形式でいくつかの異なるペアが与えられたとします。ここで、xは数値の底を示し、yは数値自体を示します。リストには、同じ意味のペアがあります。指定された数のペアの一致数を確認する必要があります。指定されたペアは冗長である可能性があり、無効なベース番号の組み合わせを含む可能性もあります。

したがって、入力がnum_inputs =2、input_arr =[(10、15)、(8、17)]のような場合、出力は1になります。

変数num_inputsは入力の数を指定し、配列input_arrは数のペアをリストします。ここで、2つのペアを見ると、基数10(10進数)の15は、基数8(8進数)の17と同じです。したがって、一致するものが1つあり、出力値1を返します。

これを解決するには、次の手順に従います-

  • arr_len:=input_arrのサイズ

  • temp_dict:=整数値を含む新しいマップ

  • 0からnum_inputsの範囲のiの場合、実行

    • num_base:=input_arrのペアiの最初の数の文字列表現

    • num_val:=input_arrのペアiの2番目の数の文字列表現

    • temp_dict [整数表現(num_val、整数表現(num_base))]:=temp_dict [整数表現(num_val、整数表現(num_base))] + 1

  • cnt:=0
  • temp_dictのすべての値のリストにある値ごとに、
      を実行します。
    • cnt:=cnt + value *フロア値((value-1)/ 2)
  • return cnt

理解を深めるために、次の実装を見てみましょう-

from collections import defaultdict
def solve(num_inputs, input_arr):
   arr_len = len(input_arr)
   temp_dict = defaultdict(int)
   for i in range(num_inputs):
      num_base, num_val = str(input_arr[i][0]), str(input_arr[i][1])
      temp_dict[int(num_val, int(num_base))] += 1
   cnt = 0
   for value in temp_dict.values():
      cnt += value*(value - 1)//2
   return cnt
print(solve(2, [(10, 15), (8, 17)]))

入力

2, [(10, 15), (8, 17)]

出力

1

  1. 配列内の最大の要素を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、配列の最大要素を計算する必要があります。 ここでは、ループ全体をトラバースして最大の要素を計算し、要素を取得するブルートフォースアプローチを使用します。 以下の実装を観察できます。 例 # largest function def largest(arr,n):    #maximum element    max = arr[0]    # traverse the whole loop    for

  2. 配列の合計を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '