python作业,遇到难题了。请帮忙。

软件和网站开发以及相关技术探讨
回复
drongh
帖子: 1038
注册时间: 2007-01-10 9:32

python作业,遇到难题了。请帮忙。

#1

帖子 drongh » 2014-06-06 16:55

24,26两题怎么解。尤其是26题,看不懂,那个Y是怎么来的。这个题是《python入门经典》上第二章的练习题。

这书的题很搞。
附件
problem.png
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: python作业,遇到难题了。请帮忙。

#2

帖子 astolia » 2014-06-08 11:58

24太长了不看。26不就一小学奥数题么

ABCD + EFGB = EFCBH,ABCDEFGH都是0~9的数字且各不相同,求ABCDEFGH各是什么
dcthink
帖子: 3
注册时间: 2014-06-13 16:39
系统: Ubuntu/Win7

Re: python作业,遇到难题了。请帮忙。

#3

帖子 dcthink » 2014-06-13 16:42

刚学习Python,24解答,请轻拍

代码: 全选

#!env python
# Filename: palindrome.py

'''This try to find the suit mileage 
for car that can be palindrome'''

# 翻转列表
def reverse(s):
    return s[::-1]

# 检查是否回文列表
def ispalindrome(miles):
    return reverse(miles) == miles

# 生成6位回文列表
def gen6bits():
    for s in [[i,j,k] for i in range(0,10) for j in range(0,10) for k in range(0,10)]:
        yield s + reverse(s)

# 借位减一
def minusone(l1,size):
    ltt = l1[:]
    for i in range(size-1,-1,-1):
        if ltt[i] != 0:
            ltt[i] -= 1
            break
        else:
            ltt[i] = 9
    return ltt

if __name__ == '__main__':
    print("Car mileage measure")
    # all 6 numbers finally is a palindrome
    # So 1st get the final number to return back check

    # To generate a 6bits paralindromes, just need to play
    # all 3bits value and mirror it
    for s in gen6bits():
        # 6bits palindrome - 1
        
        bits = s[:]
        m1 = minusone(bits,6)
        m1a = m1[1:-1]
        if not ispalindrome(m1a):
            #middle 4 can be a palindrome
            continue

        m2 = minusone(m1,6)
        m2a = m2[1:]
        if not (ispalindrome(m2a)):
            continue

        m3 = minusone(m2,6)
        print("     m3",m3)
        m3a = m3[2:]
        m3b = m3[1:]
        if not ispalindrome(m3a) or ispalindrome(m3b):
            continue

        print("last",s)
       
dcthink
帖子: 3
注册时间: 2014-06-13 16:39
系统: Ubuntu/Win7

Re: python作业,遇到难题了。请帮忙。

#4

帖子 dcthink » 2014-06-13 20:04

参考各路大神,语法还不熟

代码: 全选

#!env python
# Filename: mismath.py

'''   SEND
    + MORE
    -------
     MONEY
     '''

# all bits is 'D E M N O R S Y'
# so for brute force, we need generate 8 bits from 10 digits

#def gens(bits):
#    global s
#    for i in range(0,bits):
#        s.append(0)
#    return s

s = []
sets = list(range(0,10));

def pmath(s):
    print('   {0}{1}{2}{3}\n + {4}{5}{6}{7}\n ---------\n  {8}{9}{10}{11}{12}'.format(s[6],s[1],s[3],s[0],s[2],s[4],s[5],s[1],s[2],s[4],s[3],s[1],s[7]))
    print

def gens(bits):
    global s
    s = []
    for i in range(0,bits):
        s.append(0)
    return 0

def genseq(bits):
    '''default 8 bits sequence:
    D E M N O R S Y
    0 1 2 3 4 5 6 7
    (S+M-O)*1000+(E+O-N)*100+(N+R-E)*10+(D+E-Y) == M*10000
    '''
    global s
    global sets
    if (bits == 0):
        if  (s[6]+s[2]-s[4])*1000\
           +(s[1]+s[4]-s[3])*100\
           +(s[3]+s[5]-s[1])*10\
           +(s[0]+s[1]-s[7]) \
           == s[2]*10000:
            pmath(s)
        return 0

    for i in range(0,len(sets)):
        #print(s,'<',i,'>',sets)
        bs = sets[0]
        s[bits-1] = bs
        sets.remove(bs)
        genseq(bits-1)
        sets.append(bs)

gens(8)
genseq(8)

drongh
帖子: 1038
注册时间: 2007-01-10 9:32

Re: python作业,遇到难题了。请帮忙。

#5

帖子 drongh » 2014-06-15 13:48

和和,谢谢。
我刚学编程。
刚学习Pyth
回复