Questions tagged «python»

这个挑战与Python语言有关。请注意,通常不建议要求答案使用特定语言的挑战。

19
反复囚徒困境
挑战状态:公开 评论,打开公关,或者如果我想念你的机器人,对我大喊大叫。 囚徒困境...有三种选择。疯了吧? 这是我们的收益矩阵。玩家A在左侧,B在顶部 A,B| C | N | D ---|---|---|--- C |3,3|4,1|0,5 N |1,4|2,2|3,2 D |5,0|2,3|1,1 收益矩阵经过精心设计,因此对于两个玩家来说始终是最好的合作方式,但是您可以(通常)选择“中立”或“背叛”来获得收益。 这是一些(竞争性)示例机器人。 # turns out if you don't actually have to implement __init__(). TIL! class AllC: def round(self, _): return "C" class AllN: def round(self, _): return "N" class AllD: def round(self, _): …

2
这些列表是否相等?
如您所知,python有列表。您可能不知道这些列表可以包含自己。 a = [] a.append(a) Python 2 Python 3 这些很酷,您可以使用它们做很多有趣的事情,但是您无法将它们进行比较。 a = [] a.append(a) b = [] b.append(b) a == b Python 2 Python 3 任务 您的工作是用Python(或可以直接处理python对象的任何语言)编写一个函数,该函数将包含两个可能包含自身的列表并进行比较。 如果两个列表具有相同的长度,并且不存在数字序列,则两个列表是相等的,因此按此序列对两个列表进行索引会导致在此相等定义下两个对象不相等。为了简单起见,列表中包含的所有非列表对象都是python整数,应将其与python的内置相等性进行比较。 您的程序不应依赖python的递归深度来确定列表是否无限深。那是: def isInfinite(a,b): try: a==b return False except RunTimeError: return True 这不是确定两个列表是否为自引用的有效方法。 测试用例 假设您定义一个函数 equal a = [] a.append(a) b = [] …

5
是否有更多的硬物或软物
与假设分析书的开头相切。 输入是一个由空格组成的矩形,如字符串,字符串列表等,其对象由#内部组成: ######## # # ######## ### #### ### #### ### 对象将始终是非相交,非接触的矩形。软对象的定义是#中间没有用填充的对象,而只是边界,而硬对象则是填充的对象。具有宽度或高度的对象<=2被认为是坚硬的。所有对象都是硬的或软的。 如果输入,输出中有更多的硬对象"Hard",如果较软,则输出"Soft",如果相等则输出"Equal"。 这是代码高尔夫球,因此以字节为单位的最短代码胜出! 测试用例 这些情况不是全部输入,而是每个对象应表征的内容。实际输入将类似于问题顶部的ascii艺术。 硬 # #### ## ## ########## ########## ########## 柔软的 ### # # ### ################### # # # # # # ################### #### # # # # # # # # # # # # …
19 code-golf  ascii-art  counting  code-golf  number  grid  decision-problem  chess  code-golf  grid  graph-theory  chess  code-golf  math  geometry  code-golf  arithmetic  roman-numerals  fastest-code  code-golf  math  geometry  code-golf  string  cryptography  code-golf  number  sequence  decision-problem  code-golf  string  parsing  c  code-golf  sorting  integer  code-golf  number  sequence  rational-numbers  graphical-output  atomic-code-golf  assembly  box-256  code-golf  geometry  tips  python  code-golf  number  sequence  arithmetic  number-theory  code-golf  ascii-art  kolmogorov-complexity  geometry  code-golf  graphical-output  code-golf  math  code-golf  grid  cellular-automata  game-of-life  code-golf  string  subsequence  code-golf  arithmetic  rational-numbers  code-golf  tips  dc  code-golf  ascii-art  kolmogorov-complexity  date  code-golf  string  primes  code-golf  string  natural-language  conversion  code-golf  sequence  code-golf  number-theory  primes  base-conversion  code-golf  math  primes  base-conversion  code-golf  ascii-art  fractal  code-golf  matrix  code-golf  math  tips  geometry  python  string  code-challenge  keyboard  code-golf  graphical-output  code-golf  string  code-golf  number  sequence  cops-and-robbers  number  sequence  cops-and-robbers 

3
有没有一种较短的方法来分配Python中的两个变量之一?
这是在python中打高尔夫球的提示问题。 在用Python完成的多次高尔夫球比赛中,将固定值分配给布尔值选择的两个变量之一。所选变量被给定值覆盖,另一个不变。 17个字符: if b:y=z else:x=z 分配条件值很容易,但是分配给条件变量似乎很麻烦。我想知道是否缺少更短的方法。 如果x,y是列表L,这将很容易,但是假设上下文需要引用足够多的变量以致于编写L[0]且L[1]过于禁止。转换时间太长: 20个字符: L=[x,y];L[b]=z;x,y=L 我知道最快的方法是使用Python 2 exec,这很奇怪: 16个字符,Python 2: exec"xy"[b]+"=z" 元组选择似乎更长: 18、19、18、18个字符: x,y=b*(x,z)or(z,y) x,y=[z,x,y,z][b::2] y,x=[y,z,x][b:b+2] y,x,*_=[y,z,x][b:] # Python 3 是否有一些较短的方法或节省字符的优化?您可以假设bis 0或1,不仅是Falsey或Truthy,还可以对数据类型和值进行假设(如果有帮助的话)。
19 code-golf  tips  python 

24
囚徒困境v.3-Petri困境
一位疯狂的科学家刚刚创造出一种新细菌!他决定将其命名为Noblus Gentlemanus,观察其行为后。但是,他的细菌已经用完了食物,并宣战了,因为它们能够收获其他细菌的尸体以获取足够的食物来复制自身。该细菌有许多不同的亚种,在玩他们最喜欢的囚徒困境时有不同的策略。每个不同亚种都有5种细菌。在《囚徒困境》中,两个玩家中的每一个都同时选择缺憾或合作。如果一个玩家选择合作,而另一个选择默认,则默认者获得2分,而合作者则损失3分。如果双方选择合作,双方将获得1分。如果两个玩家都选择默认值,则两个玩家都将失去1分。 作为贵族绅士,这种细菌决定通过玩200轮漫长的囚徒困境游戏来打赢这场战争。每个决斗的失败者都会自杀,从而使胜利者得以自我克隆。如果打成平手,两种细菌都将保持存活,但两者均无法克隆。此外,一场比赛中的所有细菌都会将其点数的10%携带到下一场比赛中。克隆携带克隆它的细菌的各个点。同样,每轮细菌有十分之一的机会突变为另一种亚种,获得0分(如果我收到对此随机性的投诉,可以将其删除)。在细菌打出的决斗数量等于细菌的亚种数量乘以十之后,疯狂的科学家不小心掉落了细菌所在的培养皿,所有细菌都获得了新的食物来源,结束了决斗。这与普通的迭代囚徒困境竞赛不同,因为它涉及带有结转分数的1v1决斗,而不是简单地尝试总体上获得最高分数。这在给定策略的有效性方面有很大的不同。 每个细菌将在回合开始时以以下格式输入:(回合编号,当前点,敌人点,您之前的举动[以字符串形式,以字符“ c”表示合作,以字符“ d”表示缺陷) ],敌人先前的举动[格式相同])。 这里将输入四个样本策略。我实际上认为Defector可能会获胜,尽管它非常简单。 针锋相对 def titfortatfunc(counter, mypoints, enpoints, mylist, enlist): if counter==0 or enlist[counter-1] == "c": return "c" else: return "d" 随机选择 from random import choice def randompickfunc(counter, mypoints, enpoints, mylist, enlist): if counter == 199: return "d" else: return choice(["d", "c"]) 合作者 def cooperatorfunc(counter, …

3
有没有更短的方法在python中获取用户输入?
这不是挑战。我想知道是否有可能将用户输入到少于19个字节的python(2或3)中的两个独立变量中。这些是我能得到的最短的信息: a,b=input(),input() a=input();b=input() (newline replaced with semicolon for readability) i=input;a,b=i(),i() 有没有更短的方法可以做到这一点?
17 code-golf  tips  python 

10
升序矩阵
“升序矩阵”是整数(包括0)的无限矩阵,其中任何元素是最小的可用元素,之前尚未在相应的行和列上使用: | 1 2 3 4 5 6 ... --+---------------- 1 | 0 1 2 3 4 5 ... 2 | 1 0 3 2 5 4 ... 3 | 2 3 0 1 6 7 ... 4 | 3 2 1 0 7 6 ... 5 | 4 5 …
17 code-golf  math  matrix  programming-puzzle  code-golf  music  code-challenge  programming-puzzle  code-golf  fastest-code  code-golf  number  game  code-golf  combinatorics  code-golf  math  sequence  restricted-complexity  code-golf  number  random  code-golf  array-manipulation  code-golf  math  matrix  code-golf  number  sequence  counting  code-golf  math  number  sequence  popularity-contest  number  sequence  code-golf  music  code-golf  number  code-golf  ascii-art  arithmetic  code-golf  code-golf  number  code-golf  code-challenge  array-manipulation  code-golf  grammars  code-challenge  polyglot  code-golf  game  math  python  programming-puzzle  code-challenge  king-of-the-hill  code-challenge  fastest-code  primes  number-theory  number-theory  primes  fastest-code  factoring  popularity-contest  compile-time  code-golf  math 

2
单行中最多违反PEP8的次数
您的任务是编写一个文件,其中包含许多违反pep8的行为。 规则: 我们使用pep8 1.5.7版和默认设置。 不允许使用其他命令行选项或使用自定义rc文件调用pep8。 最大行长为120个字符。您可以违反E501,但是计算分数的行必须小于或等于120个字符。 您的模块可以在前面或后面有其他行,但是只有一行会影响您的分数。 您的文件可以包含SyntaxErrors或任何类型的垃圾,无需导入或运行。 评分示例: 以下模块thing.py的得分为2,因为它包含带有2个pep8违规的行(第1行)。 spam='potato' 要检查分数: ~$ mktmpenv (tmp-ae3045bd2f629a8c)~/.virtualenvs/tmp-ae3045bd2f629a8c$ pip install pep8==1.5.7 (tmp-ae3045bd2f629a8c)~/.virtualenvs/tmp-ae3045bd2f629a8c$ echo -n "spam='potato'" > thing.py (tmp-ae3045bd2f629a8c)~/.virtualenvs/tmp-ae3045bd2f629a8c$ pep8 thing.py thing.py:1:5: E225 missing whitespace around operator thing.py:1:14: W292 no newline at end of file

3
使用Python导入打高尔夫球
什么时候在Python中使用内联单次使用导入有益? 例如: __import__("x").doSomething() 以上是否比以下短? import x x.doSomething() 要么 from x import* doSomething()
16 code-golf  tips  python 

10
崩溃(即导致解释器停止工作并强制关闭)Python [关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 3年前关闭。 我想看看谁能使Python最具创意的代码崩溃。这意味着在程序运行时,例如Windows将接管并弹出“ IDLE已停止工作”之类的消息,或者Linux将在程序崩溃时执行Linux所做的任何事情。 规则: 这必须在python 2.7或更高版本中进行(因此,不会利用旧的bug(在将来的Python版本中已修复)。 “崩溃”的定义是“使IDLE或Python意外退出”。这并不意味着“使IDLE或Python停止并进行追溯”。这也意味着exit,sys.quit,abort等无效答案。例如,这将不被接受: import sys try: print c # Crashes Here, as c is not defined. except NameError, SyntaxError: print "Oh No!" sys.exit() 不接受使Python停止响应。 该代码必须说明其崩溃的作用。指向错误报告的链接很好。 10天获胜后获得最高评价的答案!开始!! 编辑: 我可以明确地说,目标不是使Python只是停止执行带有追溯的程序。目的是使Python完全崩溃或停止工作。这意味着,如果成功完成了此任务,Windows会给出此提示(我不会在此处使Word崩溃,这只是一个示例,说明对于其他程序应该发生的情况): 或这个:


7
振荡平等
我们的对象在两个整数点之间[l, r]以每时间单位一个单位的速度从lon 开始振荡t=0。您可以假设l < r。例如,如果一个对象在上振荡[3, 6],则我们有: t=0 -> 3 t=1 -> 4 t=2 -> 5 t=3 -> 6 t=4 -> 5 t=6 -> 4 t=7 -> 3 t=8 -> 4 等等,但是物体不断振荡,所以我们还有t=0.5 -> 3.5和t=3.7 -> 5.3。 由于两个物体之间振荡[l1, r1],[l2, r2],确定是否存在过一段时间t,使得这两个对象共享相同的位置。您可以采用l1, r1, l2, r2任何方便的格式,并输出任何真实/错误值。 真实的输入: [[3, 6], [3, 6]] [[3, 6], [4, 8]] …
15 code-golf  array-manipulation  decision-problem  code-golf  math  number-theory  palindrome  integer-partitions  code-golf  math  decision-problem  geometry  code-golf  string  random  code-golf  ascii-art  code-golf  kolmogorov-complexity  primes  code-golf  kolmogorov-complexity  code-golf  graphical-output  code-golf  number-theory  primes  integer  factoring  code-golf  sequence  array-manipulation  integer  code-golf  array-manipulation  matrix  code-golf  sequence  binary  code-golf  game  cellular-automata  game-of-life  binary-matrix  code-golf  string  ascii-art  code-golf  random  generation  logic  code-golf  string  code-golf  code-golf  sequence  array-manipulation  random  apl  code-golf  code-golf  sequence  primes  code-golf  math  sequence  integer  code-golf  number  arithmetic  array-manipulation  decision-problem  code-golf  ascii-art  number  code-golf  restricted-source  quine  code-golf  chess  board-game  code-golf  math  sequence  code-golf  number  sequence  kolmogorov-complexity  code-golf  number  sequence  arithmetic  code-golf  math  number  alphabet  code-golf  ascii-art  classification  statistics  apl  code-golf  array-manipulation  matrix  code-golf  string  kolmogorov-complexity  code-golf  sequence  binary  base-conversion  binary-matrix  code-golf  string  classification  code-golf  tips  python  code-golf  combinatorics  binary  subsequence  restricted-time  code-golf  number  number-theory  code-golf  math  number  complex-numbers  code-golf  string  code-golf  string  code-golf  string  random  game  king-of-the-hill  python  code-golf  number  sequence  code-golf  number  sequence  code-golf  code-golf  math  number  array-manipulation  code-golf  array-manipulation  decision-problem  code-golf  string  code-golf  sequence  integer 

12
天皇官邸
在中国古代,社会等级不是由出生或财富决定的,而是由一个人在科举考试中表现出色的能力决定的。天堂的神圣统治者翡翠皇帝号召所有臣民接受检查以确定他们的身价,然后由谁下达神圣的使命来统治中国。 官僚规则: Divine官僚机构由以0开头的非负整数值等级组成。官僚机构的每个成员(bot)都属于一个等级。每个等级可以容纳任意多个成员,但除非以上所有等级都为空,否则不能为空 游戏开始时,所有成员的等级均为0 每一次官僚机构的每个成员都必须参加考试。考试包括正确猜测列表的布尔值。列表的长度是该成员上方的等级编号。 试题由以上级别的随机成员准备。最高级别的成员直接从JadeEmperor(请参见下文)获得问题。 考试分数至少达到50%的会员有资格晋升。考试分数低于50%的成员有资格降级。 只有在以下等级中有晋升资格的成员代替其职位时,才有资格降级的成员的排名才降低一级。 只要没有排名空缺,所有有资格晋升的会员的等级都会提高一。 如果不是所有符合条件的成员都可以降级或晋升,则优先级将降到最低(降级)。最高(促销)分数。领带随机断裂。 成员等级每回合最多只能改变1。 游戏规则: 每个机器人在游戏开始时都会被随机分配一个ID,该ID在整个过程中不会改变。在JadeEmperor具有ID -1,其他所有的连续非负的ID,从0开始。 所有机器人同时竞争 游戏运行100圈,机器人的得分为其在那段时间内的平均排名。 总得分是通过运行1000场比赛并取平均结果而获得。 每个Bot是一个Python 3类,实现以下四个功能: ask(self,n,ID),它通过返回list长度为n的布尔值a进行检查。ID是必须猜测该列表的机器人的ID。ask()可以在一个机器人的单个回合中被多次调用,但一点也不被调用。 answer(self,n,ID),这是通过返回list长度为n的布尔值a来回答考试的尝试。ID是ask()生成检查的机器人的ID 。answer()每个机器人每轮准确调用一次。 update(self,rankList,ownExam,otherExams)一旦控制器执行了所有降级和降级,就会调用。它的参数是:整数列表,按所有漫游器的ID列出所有等级;一个由两个列表组成的元组,首先是考试问题,然后是漫游器给出的答案(以防万一它忘记了);然后是元组列表,类似地由考试答案对组成,这次是机器人执行的所有考试。 __init__(self, ID, n) 传递该机器人自己的ID和竞争机器人的数量。 允许类实现其他私有功能 明确允许定义其他变量,并使用它们存储有关过去考试的数据。 禁止编程元效果,这意味着任何直接访问其他机器人代码,控制器代码的尝试均会导致异常或类似情况。这是考试策略的竞赛,而不是代码黑客的竞赛。 明确允许尝试互相帮助的机器人,只要它们不通过元效应来做到,而是纯粹通过传递的信息来实现 update() 仅在其他语言可以轻松转换为Python 3的情况下才允许使用其他语言。 库numpy将作为导入np。版本是1.6.5,这意味着它使用了旧的随机库。如果您有numpy 1.7,则可以使用旧功能numpy.random.mtrand进行测试。请记住要剥离mtrand以便提交。 如果机器人在运行时导致异常,则该机器人不合格。任何代码过于混乱以至于无法确定何时在调用ask()或时answer()都不会生成长度为n的列表的bot 也会被抢先取消资格。强制我进行深度复制输出的机器人的得分为-1。 类名必须唯一 每个人可以使用多个漫游器,但是仅采用最新版本的迭代更新漫游器。 由于关于机器人相似性似乎有些困惑: 您无权发布其他漫游器的副本。这是真正适用于此挑战的唯一 标准漏洞。 您可以与其他机器人(包括其他人的机器人)共享代码。 您不得提交从另一只由一个微不足道的变化的策略(如种子为出题的变化)不同的机器人,除非你能证明这种抄送机器人的数量是成功所需的最小制定他们的策略(通常是两个机器人进行合作)。 示例机器人: 的JadeEmperor始终是比赛的一部分,但不竞争; 他是最高级别的机器人考试的生成器。他的考试是随机的,但不是统一的考试,目的是让智能机器人有进步的方法。 class JadeEmperor: …

1
让我们写一个Minifier
背景 通常,在向Web浏览器提供JavaScript时使用缩小符。通常用于减少必须发送的字节数。显而易见,节省带宽很有用。有些人使用混淆器(故意使代码难以阅读),我不是在谈论那些。 我们将缩小Python 2 我在讨论是否使用JavaScript或Python来获得最小化的体验,而我决定使用Python的原因有两个:空白很重要,我认为这会增加一个有趣的动态问题。此外,使用Python 2.7将提供另一种动态效果,例如()在打印过程中删除多余的内容(即print("Hello world")vs. print"Hello world")。就我个人而言,我更愿意将其开放给任何语言,但是对于某些语言,此过程没有多大意义。而且,您决定缩小的语言将直接影响您的分数(甚至可以缩小该语言)。 眼镜 您的目标是仅以不会改变其功能的方式修改代码。当然,您可以更改变量名称(在缩小程序内部),只要它不影响输出(保持作用域)即可。尽管我为您提供了一个特定的程序,但是请不要针对测试用例进行优化,因为所有标准漏洞都被禁止。 分数:程序缩小后的长度。 输入:任何Python 2.7程序(不包含错误) 输出:缩小版本。 尽管您的代码应该能够容纳所有有效的Python 2.7输入,但是有必要对脚本进行测试以证明其有效性。 单击此处查看示例程序。 使问题更加平易近人 随意使用或修改在我的解决方案中找到的任何代码(列在下面)。我这样做是为了让您开始使用报价基本报价处理。但是,您可以将其扩展为缩进等。 缩小Python的示例方法 所有空白都可以用尽可能少的空间替换(我承认,在Python中,您可以使用tabs做一些棘手的事情,但是我将由您自己决定是否实现它)。 例 下列: def print_a_range(a): for i in range(a): print(i) 可能: def print_a_range(a): for i in range(a): print(i) 从技术上讲,如果循环内只有一行,则可以进一步压缩它: def print_a_range(a): for i in range(a):print(i) #Note, you can also …

1
Python建议:内省函数调用的可移植性
在Python中,您可以dir在任何对象上使用该函数来获取其实例函数名称的列表: >>> dir('abc') ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__','__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', …
14 code-golf  tips  python 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.