python 练习 5
#!/usr/bin/python
# -*- coding: utf-8 -*-
from collections import deque
def z69():
'''猜牌术(1)
魔术师,最上面一张是黑a,第2次从上到下数2张放在最
底下,然后翻开是黑k,然后再从上到下数3张放
在最底下,是黑q,第k次数k张,依次翻开,得
到黑a~1;问原始的牌序'''
ss=13
d = deque(range(1,ss+1))
f=[1]*ss
for i in range(ss):
d.rotate(-(i%len(d)))
f[d[0]-1]=i+1
d.popleft()
print f
def z70():
'''猜牌术(2) 魔术师
最上面一张是黑a,然后从上到下数2张放在最底
下,然后翻开是黑k,然后再从上到下数2张放在
最底下,是黑q,依次翻开,得到黑a~1,红a~1
;问原始的牌序 '''
def pai(x):
if x>13:
ch='r'
x-=13
else:
ch='b'
return ch+str(x)
ss=26
d = deque(range(1,ss+1))
f=[1]*ss
f[0]=pai(1)
d.popleft()
for i in range(2,ss+1):
d.rotate(-(2%len(d)))
f[d[0]-1]=pai(i)
d.popleft()
print f
def z71():
#11个人组成一个环,报数,每数到7,那个人就出来,问7次后剩下哪4个人
ss=11
nn=4
kk=7
d = deque(range(1,ss+1))
for i in range(kk):
d.rotate(-((nn-1)%len(d)))
print d.popleft()
print d
def z72():
#4个3和3个5可以组成几个不同的数分别是多少
e=[]
for i in range(5):
for j in range(4):
e+=[i*3+j*5]
print set(e)
def ntom(x,size,mod):
t=[0]*(size)
j=0
while x and j<size:
x,t[j]=divmod(x,mod)
j+=1
return t
def z73():
#五个互相不相同的数和为23,其中若干个加起来可以表示1~23内的全部自然数,问他们是多少
def h73(xx):
t=[]
n=5
for nn in range(1,2**n):
y=sum(map(lambda x,y:x*y,xx,ntom(nn,n,2)))
t.append(y)
return len(set(t))
ss=23
for i in range(ss):
for j in range(i+1,ss):
for m in range(j+1,ss):
for n in range(m+1,ss):
kk=ss-i-j-m-n
if kk>n:
kt=[i,j,m,n,kk]
if h73(kt)==ss:
print kt
def z74():
#重量四十的砝码被摔成四块,每块都是整数,并且用这四块可以测量1~40任意一个重量,问他们重多少
def h74(xx):
t=[]
n=4
for nn in range(1,3**n):
y=sum(map(lambda x,y:x*y,xx,ntom(nn,n,3)))
t.append(y)
return len(set(t))
ss=40
for i in range(ss):
for j in range(i+1,ss):
for m in range(j+1,ss):
kk=ss-i-j-m
if kk>m:
kt=[i,j,m,kk]
if h74(kt)==ss:
print kt
def z75():
'''10个人围成一个环,分东西。他们一开始有{10,2,8,22,16,4,10,6,14,20}
个东西,所有的人如果是奇数个就再要一个,然后所有的人同时将自己的一半给他右边的人,
问几次后大家的东西的个数一样 '''
d=deque([ 10, 2, 8, 22, 16, 4, 10, 6, 14, 20])
print d
while [d[0]]*10!=d:
d=map(lambda x:x%2 and (x+1)/2 or x/2,d)
d2=deque(d)
d2.rotate(1)
d=map(lambda x,y:x+y,d,d2)
print d def z76():
#6个数中选择若干个数,其中他们的和最接近10,问怎么选{3.1,1.7,2.0,5.3,0.9,7.2}
m2=[3.1,1.7,2.0,5.3,0.9,7.2]
m2=[x*10 for x in m2]
n=6
t=[]
for nn in range(1,2**n):
tt=ntom(nn,n,2)
y=abs(sum(map(lambda x,y:x*y,m2,tt))-100)
t+=[[y,tt]]
t=filter(lambda x,y=min(t)[0]:x[0]<y+0.01,t)
for i in t:
m=filter(lambda x:x,map(lambda x,y:x and y or 0,i[1],m2))
print m
def z77():
#分水问题:某人有12升水,想平分他为2个6升,但是只有8升和5升的容器,为最少要倒几次才可以,怎么分
def nexts(a,b,c,d):
tt=[]
ke1=reduce(lambda x,y:x+y,map(lambda x:str(x),a))
for i in range(0,3):
if a[i]!=0:
for j in range(0,3):
if i!=j and a[j]<b[j]:
m=[]+a
t=b[j]-a[j]
if m[i]>=t:
m[i]-=t
m[j]=b[j]
else:
m[j]+=m[i]
m[i]=0
if m not in c:
tt+=[m]
ke=reduce(lambda x,y:x+y,map(lambda x:str(x),m))
d[ke]=ke1
return tt
a=[12,0,0]
b=[12,8,5]
dd=[a,b]
ee={}
t=nexts (a,b,dd,ee)
dd+=t
while 1:
m=[]
for i in t:
m+=nexts(i,b,dd,ee)
dd+=t
t=m
if [6,6,0] in t :break
e=ee[""]
print [6,6,0]
while e!='':
print map(lambda x:int(x),list(e))
e=ee[e]
print [12,0,0]
# raw_input('--> ')
if __name__ == '__main__':
s=""
for i in range(69,78):
s+='z'+str(i)+'()\n'
exec(s)
python 练习 5的更多相关文章
- Python中的多进程与多线程(一)
一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- Python 小而美的函数
python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) ...
- JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议
软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...
- 可爱的豆子——使用Beans思想让Python代码更易维护
title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...
- 使用Python保存屏幕截图(不使用PIL)
起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...
- Python编码记录
字节流和字符串 当使用Python定义一个字符串时,实际会存储一个字节串: "abc"--[97][98][99] python2.x默认会把所有的字符串当做ASCII码来对待,但 ...
- Apache执行Python脚本
由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...
- python开发编译器
引言 最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便.乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用. ...
- 关于解决python线上问题的几种有效技术
工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ...
随机推荐
- 使用jquery构建Metro style 返回顶部
个人一直对metro风格的东西情有独钟,偶然间在腾讯网看到一款小插件,蓝色Metro风格的,所以决定把它放到我的博客中,这样做应该不会有版权问题吧orz.. Complete code 后言 我把他原 ...
- HTML DOM简介
HTML DOM简介 1.当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model),HTML DOM模型被创建为对象的树.如下所示: 2.通过可编程的对象模型,Ja ...
- C#实例
输出 Console.WriteLine("Hello, World!"); //输出Hello, World! 输出输入的内容 string strName; //声明一个str ...
- CodeForces 471C MUH and House of Cards
MUH and House of Cards Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & % ...
- 插入中文错误ERROR 1406 (22001): Data too long for column 'name' at row 1
1.在导入数据前执行以下命令即可:set SESSION sql_mode=''; 通过设置sql_mode变量更改模式.linux下安装完mysql后,默认的sql-mode值是空,在这种情形下my ...
- 折半查找&clock函数
#include <stdio.h>#include <time.h> #define CLOCKS_PER_SEC ((clock_t)1000) int binsearch ...
- [SAP ABAP开发技术总结]增强Enhancement
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- find command in linux terminal
Say you want to search for files with keyword as "keyword". find / -name keyword 2> /de ...
- jQuery 预习视频
1.事件补充 <input type="button" onclick="CheckAll('#edit_mode','#tb1');" value=&q ...
- FLASH CC 2015 CANVAS (四)制作响应式设计(自适应)的项目
注意 此贴 为个人边“开荒”边写,所以不保证就是最佳做法,也难免有错误(如果发现我会更新文章)! 正式教程会在后续开始更新 相信你在看了(第二节)(第三节)之后已经能够满足绝大多数的互动需求了.那么也 ...