July 14, 2007

新人报到!

大家好,我叫B...不是不是,我姓叶,叫 B哥葉。我是氷の鋭 同班同学,他教我学 Python 几个月了,前天我终于第一次在仅有师父提示的情况下自己写出了一个程序,耶!
原题是这样的:

一个六位数,分别用2,3,4,5,6乘它,得到的五个新数仍是由原数中的六个数字组成,只是位置不同,则此六位数是多少?

我把这题给做出来了!

def pcb(i):
  if a(i)==a(i*2):
return pcb_3(i)

def pcb_3(i):
  if a(i)==a(i*3):
    return pcb_4(i)

def pcb_4(i):
  if a(i)==a(i*4):
    return pcb_5(i)

def pcb_5(i):
  if a(i)==a(i*5):
    return pcb_6(i)

def pcb_6(i):
  if a(i)==a(i*6):
    return i

def a(i):
  c=b(i)
  c.sort()
  return c

def b(i):
  return list(str(i))

# 这个原来我写的是错的,后来师父改滴——其实改滴也不好!
for i in range(100000,1000000):
  if i and pcb(i):
    print i
    break

师父在学校那台破电脑上输代码滴时候抱怨说我的程序可以用程序写唠。这有什么关系,反正我的代码的速度超过师父的啦!

def list_equ (ls):
  for cond in map(lambda x: ls[0] == x, ls):
    if not cond:
      return False
    return True

def sort (ls):
  ls.sort()
  return ls

def test_num (num):
  return list_equ(map(lambda x: reduce( \
    lambda i,j: i+j, sort(list(str(x * num)))), range(2,7)))

def give_rst ():
  return filter(test_num, range(100000,1000000))

for i in range(100000,100000):
  if (test_num(i)):
      print i

但是,最后师父使出了杀手锏,把这题用数学方法解出来唠,他个DB。。。
以后一定要超过他!

No comments: