从日期算起一个数学方程式


19

在我的经济学课上,我和我的朋友们想出了一些方法来重新排列日期(以MM / DD / YY格式)中的数字,以创建有效的数学方程式。在大多数情况下,除级联外,我们还可以使用加,减,乘,除,括号和幂运算。

您的程序应该执行类似的操作。该程序应导入当前日期并插入运算符以根据以下规则打印表达式。

  • 必须按顺序使用数字。不允许重新排列数字。
  • 结果表达式必须在数学上准确。
  • 允许加,减,乘,除,取幂和使用括号。数字的串联也是如此。但是,并非所有操作都是必需的。您不能使用减号使数字为负(例如-1+1+11=102010年11月11日)。
  • 该程序必须在标准计算机上运行60秒。

例如,此挑战写于2015年11月10日。程序会将其解释为11/10/15。样本输出为(1+1)/10=1/5


奖金

对于程序支持的以下每个选项,您可以将代码中的字节数乘以0.9。

  • 该程序将打印所有可能形成的表达式,并用换行符分隔。如果以附加符号的升序列出表达式,则再乘以0.95。
  • 该程序还适用于MM / DD / YYYY日期,除了可能的日期外,还可以打印年份的前两位数字。如果该奖金与第一笔奖金相结合,则必须打印出该年份的前两位数字的所有可能性。
  • 该方案还打印当有多个等式用于方程(例如,11月11日,2011,1=1=1=1=1=1将被印刷的,除了可能性,例如1*1=1=1=1=11*1*1=1=1=1,和1*1*1*1=1=1。所有这样的情况下必须打印为所要达到的第一奖励。
  • 该程序支持转换为2到16之间的基数。请注意,如果基数不是10,则表达式中的所有数字都必须以相同的基数 (Base b)编写,并且必须在表达式之后编写(并相应地b替换)。

这是代码高尔夫球,因此适用标准规则。以字节为单位的最短代码获胜。


1
允许什么操作?
anOKsquirrel

1
@FryAmTheEggman是否存在足够的相似性以将其称为重复项?我不这么认为,因为此挑战不只使用一位数字,也不在意特定的RHS(仅相等)。
Arcturus

17
DD / MM / YYYY> MM / DD / YYYY。
orlp

3
我认为您想在写表达式的问题中使用方程式(表达式只是方程式的一侧,然后您的问题就没有意义了)。
圣保罗Ebermann

1
在任何给定日期都可以证明这一点吗?
扎克·盖茨

Answers:


6

Python 3中,424个 420 369 363字节

import time as t
r=range
x=len
d=list(t.strftime('%m%d%y'))
o=([[x,x+'(',x+')']for x in ['']+"+ - == * / **".split()])
n=[]
for l in o:
    n=l+n
o=n
for p in r(x(o)**(x(d)-1)):
    e=''
    for i in r(x(d)-1):
        e+=str(d[i])+o[(p//(x(o)**i))%x(o)]
    e+=str(d[-1])
    try:
        if eval(e)and e.find('=')!=-1:
            print(e.replace('==','=').replace('**','^'))
            break
    except:pass

暴力破解数字中所有可能的运算组合,并在找到数字时停止。

编辑:由于@NoOneIsHere,节省了4个字节

编辑2:由于@ValueInk,节省了51(!)个字节


1
您好,欢迎来到PPCG!您可以内嵌except:pass,并删除中的空格[ (p//(len(o)**i))%len(o)]
NoOneIsHere

如果您要从导入分区__future__,那么升级到Python 3会更适合您的情况吗?另外,我不明白为什么要o在建立具有加薪条件的操作员列表时反转。
价值墨水

@ValueInk是的,我可能可以将其更改为python 3并节省很多字节。当我开始挑战时,我并没有全神贯注于打高尔夫球,因此绝对可以将其缩短。另外,由于该程序会强行强制使用所有组合,直到找到一个组合,因此速度是一个问题,而且我发现,如果使用o的倒数,则它往往会运行得更快。我可能会再打一点,以使其成为一个真正的竞争者。
西奥,

o=([[x,x+'(',x+')']for x in",+,-,==,*,/,**".split(',')])2个字节
乔纳森·艾伦

1
@乔纳森·艾伦·休(JonathanAllan Huh)。感谢您指出这些。有空的时候(也许明天),我会重做代码
Theo
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.