小数点の検索(プログラマ)


リンクテキスト

問題を理解する


一桁と書かれた紙片が散らばっている.ばらばらの紙切れを貼って、いくつかの小数点を作ることができることを見たいです.
各紙片の数字の文字シリアル番号を指定すると、紙片で作成できるいくつかの数を返すための解法関数を完了します.
せいげんじょうけん
numbersは、長さが1または7未満の文字列です.
numbersは0から9まで数字で構成されています.
「013」とは、0から3の数字の紙切れが散らばっていることを意味します.

私の理解


文字列を優先リストに変換して、組み合わせを検索し、小数点以下であるかどうかを判断します.

Python

from itertools import permutations
def check(num):
    if num <=1:
        return False

    for i in range(2,int(num**(1/2))+1):
        if num % i ==0:
            
            return False
    return True

def solution(numbers):
    if len(numbers) ==1:
        if check(int(numbers)):
            return 1
        return 0
    items = [x for x in numbers]
    ans =[]
    ans.extend(items)
    for i in range(2,len(numbers)+1):
        ans.extend(list(map(''.join, permutations(items,i))))
    ans = [x for x in ans if x !='0']
    ans = [int(x) if x[0] != "0"  else int(x[1:]) for x in ans]
    ans = list(set(ans))
    ans.sort()
    
    count =0

    for ele in ans:
        if check(ele):
            print(ele)
            count +=1
    return count
checkは小数を識別する方法を提供する(%%で自分のルートを試すことができる).
ここで重要なのは,配列の使い方とans判断をしっかりと行うことである.