【解決方法】Python を C コードに変換する

プログラミングQA


Python
#read the list of words from the file
file1=open("C:/Users/user/Downloads/EnglishWords4Letters.txt",'r')
#store the list of words in a python list
words_list=list(file1.read().split('\n'))
#take phone number as input from user
number=input('Enter an 8-digit number\n')
#store the keypad letters in key-letters format
letters={'2':'ABC','3':'DEF','4':'GHI','5':'JKL','6':'MNO','7':'PQRS','8':'TUV','9':'WXYZ'}
#extract the last four digits of phone number for translation
last_four=number[-4:]
#temporary list to store possible translations for given number
#list i initially a copy of original words_list provided
prev_list=words_list[:-1]
k=0
for i in last_four:
    new_list=[]
    #if number can no more get translated
    if i not in letters.keys():
        print('Translation failed')
        break
    #check for the possible combinations stepwise for each number in sequence
    for j in range(len(letters[i])):
        temp=letters[i][j].lower()
        for word in prev_list:
            if word[k]==temp:
                new_list.append(word)
    k+=1
    prev_list=new_list[:]
    #if no more translations can be obtained
    if not prev_list:
        print('Translation failed')
        break
else:
    #if there are possible translations print them all
    for i in prev_list:
        print(number[:-4]+i.upper())

私が試したこと:

私はそれを読んで変換しようとしましたが、Pythonの経験はありません.Cしか知らないので、誰か助けて変換してください.

解決策 1

これはコード変換サービスではありません。コードを翻訳するためにここにいるわけではありません。
仮にそうしたとしても、最終的にターゲット言語の「良いコード」にはなりません。それらは非常に異なるフレームワークに基づいており、ある言語で何かを機能させるものが必ずしも別の言語に直接「翻訳」されるとは限りません。
そのため、最終的には非常に貧弱なコードになり、メンテナンスが不可能ではないにしても難しく、適切にアップグレードできず、元のコードが変更された場合に大きな頭痛の種になります。 そして、「箱から出してすぐに」機能しない場合、デバッグするのは悪夢です。
代わりに、ソース コードを新しいアプリの仕様とターゲット言語/フレームワークの仕様として使用し、オリジナルを “テンプレート” として使用してゼロから記述します。 はるかに優れた結果が得られ、長期的には多くの時間を節約できます。

そして率直に? やみくもに任意の言語から C に変換し、それを自分の作業として渡すと、次の 2 つのことが起こります。
1) C コードの書き方については何も学べず、見つからないタスクに到達した場合 (そして、このタスクよりも複雑になります)、または試験に到達してコピーできない場合に、実際の問題が発生します。どこからでも …
2) あなたが何をしたか (そしておそらくあなたがそれを見つけた言語) は、チューターにとって盲目的に明らかであり、盗作のために自動的にコース不合格になる可能性があります。

もし私があなただったら、あなたの宿題の解決方法についてじっくりと考えるでしょう…

解決策 2

主要なロジックは、Python の知識がなくても簡単に理解できます。 文字列スライスについての欠けているビットは、で説明されています 3. Python の非公式な紹介 — 3.1.2. ストリングス[^] リストに関する次のセクション。

解決策 8

def countWays(nums):
    n = len(nums)
    pre = [0] * n
    for i in range(n):
        pre[i] = pre[i - 1] + nums[i]
    
    def check(l, r):
        s1 = pre[l]
        s2 = pre[r] - pre[l]
        s3 = pre[-1] - pre[r]
        if s2 <= (s1 + s3):
            return True
        return False
    
    ans, mod = 0, 10**9 + 7
    for i in range(n - 2):
        lo, hi = i + 1, n - 2
        while hi - lo > 1:
            mid = (lo + hi) // 2
            if check(i, mid):
                lo = mid
            else:
                hi = mid
        if check(i, hi):
            ans += hi - i
        elif check(i, lo):
            ans += lo - i
        ans %= mod
    return ans

コメント

タイトルとURLをコピーしました