首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

三羊献瑞-考验你的逻辑能力和编程能力

每个汉字代表一个数字(0-9),并且不会相同,要让这个等式成立哈。

分析如下:

1, "三" 为 1。

因为两个4位数相加(按最大考虑9999+9999)也不到达20000,用学术性的说法,加法进位都是1。

2, "羊"为 0。

"三"已经为1,那么“三羊献瑞”这个数的范围就是1000—1999;

祥瑞生辉”这个数范围就是1000-9999。但是要实现两个数相加大于10000的情况,那么“祥瑞生辉”这个数的范围只能是8999-9999之间。

两个数的最大值相加,那么"三羊生瑞气"的范围就是10000-11998,"羊"的取值是0或者1,别忘了"三"已经为1了,那么"羊"只能为0,两个字代表不同的数。

3,"祥"为 9。

"羊"为0,第三位的"瑞"+"羊"没有等于"瑞",而等于的"生",是因为第二位数("生"+"献">10)有进位1。可以得出"生"-"瑞"=1,那么"瑞"

"瑞"就是进位,那么"祥"为9

4.剩下字的范围:瑞(2-7),生(3-8),献(2-8),辉(2-8),气(2-8)

接着就可以进行编程,爆破其他数字了。当然也可以继续一步一步逻辑,假设性代入。但是确定也比较多了,编程爆破更快。

上python:

#encoding:utf-8

import random

#随机0-9的数组

def shuzu():

b1 = []

while True:

j=random.randint(2,8)

if j not in b1 :

b1.append(j)

if b1.__len__()==5:

break

return b1

def shuzu1():

while True :

b2=shuzu()

#"生"-"瑞"=1,瑞(2-7),生(3-8)

if (b2[1]-b2[2]==1 and b2[1]!=2 and b2[2]!=8):

break

print b2

return b2

while True:

#d生成随机的数组

d=shuzu1()

# 祥c 瑞d[2] 生d[1] 辉d[0]

xrsh=9000+d[2]*100+d[1]*10+d[0]

#三a 羊b 献d[4] 瑞d[2]

syxr=1000+d[4]*10+d[2]

#三a 羊b生d[1] 瑞d[2] 气d[3]

sxsrq=10000+d[1]*100+d[2]*10+d[3]

#如果等式成立,就终止循环,输出数字

if sxsrq == xrsh+syxr:

print "________________"

print " 祥瑞生辉:",xrsh

print " 三羊献瑞:",syxr

print "三羊生瑞气:",sxsrq

break

程序运行结果如下:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181219A1JN0Z00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券