鱼C论坛

 找回密码
 立即注册
123
返回列表 发新帖
楼主: 新手·ing

[技术交流] Python:每日一题 27(答题领鱼币)

[复制链接]
发表于 2019-1-5 09:29:34 | 显示全部楼层
kankan
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-5 23:18:40 From FishC Mobile | 显示全部楼层
想看!!?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-3-15 11:03:12 | 显示全部楼层
  1. import itertools


  2. list1 = [1, 2, 3, 4, 6, 7, 8, 9]
  3. count = 1
  4. for i in itertools.permutations(list1, 4):
  5.     list2 = [0] * 9
  6.     list2[4] = 5

  7.     if len(set([10-x for x in i]) & set(i)) == 0:
  8.         for j in range(4):
  9.             list2[j] = i[j]
  10.             list2[8-j] = 10 - i[j]
  11.         if sum(list2[0:3]) == 15 and sum(list2[0:7:3]) == 15:
  12.             print('NO.', count)
  13.             for num in range(3):
  14.                 print(list2[num*3:num*3+3])
  15.             print()
  16.             count += 1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-1 20:08:51 | 显示全部楼层
为啥是15啊~想不通 而且504种是包括 {1,2,3}和{1,2,8}这种有重复数字的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-30 11:17:51 | 显示全部楼层
def fun27():
    L = []
    L2 = []
    L3 = []
    for i1 in range(1,10):
        for i2 in range(1,10):
            for i3 in range(1,10):
                if i3!=i2 and i2!=i1 and i3!=i1:
                    L.append(i1)
                    L.append(i2)
                    L.append(i3)
    for k in range(len(L)//3):
        L2.append(L[3*k:3*(k+1)])
    for t in range(len(L2)):
        L2[t]
        for t1 in range(len(L2)):
            L2[t1]
            for t2 in range(len(L2)):
                L2[t2]
                if (((L2[t][0]+L2[t1][1]+L2[t2][2])==15) and ((L2[t][2]+L2[t1][1]+L2[t2][0])==15)) and (sum(L2[t])==15) and (sum(L2[t1])==15) and (sum(L2[t2])==15)and ((L2[t][0]+L2[t1][0]+L2[t2][0])==15)and ((L2[t][1]+L2[t1][1]+L2[t2][1])==15) and ((L2[t][2]+L2[t1][2]+L2[t2][2])==15):
                    L3.append(L2[t])
                    L3.append(L2[t1])
                    L3.append(L2[t2])
                    print(L3)
                    L3 = []
结果如下:
[[1, 9, 5], [9, 5, 1], [5, 1, 9]]
[[2, 7, 6], [9, 5, 1], [4, 3, 8]]
[[2, 8, 5], [8, 5, 2], [5, 2, 8]]
[[2, 9, 4], [7, 5, 3], [6, 1, 8]]
[[3, 5, 7], [9, 5, 1], [3, 5, 7]]
[[3, 7, 5], [7, 5, 3], [5, 3, 7]]
[[3, 8, 4], [6, 5, 4], [6, 2, 7]]
[[4, 3, 8], [9, 5, 1], [2, 7, 6]]
[[4, 5, 6], [7, 5, 3], [4, 5, 6]]
[[4, 6, 5], [6, 5, 4], [5, 4, 6]]
[[4, 8, 3], [4, 5, 6], [7, 2, 6]]
[[4, 9, 2], [3, 5, 7], [8, 1, 6]]
[[5, 1, 9], [9, 5, 1], [1, 9, 5]]
[[5, 2, 8], [8, 5, 2], [2, 8, 5]]
[[5, 3, 7], [7, 5, 3], [3, 7, 5]]
[[5, 4, 6], [6, 5, 4], [4, 6, 5]]
[[5, 6, 4], [4, 5, 6], [6, 4, 5]]
[[5, 7, 3], [3, 5, 7], [7, 3, 5]]
[[5, 8, 2], [2, 5, 8], [8, 2, 5]]
[[5, 9, 1], [1, 5, 9], [9, 1, 5]]
[[6, 1, 8], [7, 5, 3], [2, 9, 4]]
[[6, 2, 7], [6, 5, 4], [3, 8, 4]]
[[6, 4, 5], [4, 5, 6], [5, 6, 4]]
[[6, 5, 4], [3, 5, 7], [6, 5, 4]]
[[6, 7, 2], [1, 5, 9], [8, 3, 4]]
[[7, 2, 6], [4, 5, 6], [4, 8, 3]]
[[7, 3, 5], [3, 5, 7], [5, 7, 3]]
[[7, 5, 3], [1, 5, 9], [7, 5, 3]]
[[8, 1, 6], [3, 5, 7], [4, 9, 2]]
[[8, 2, 5], [2, 5, 8], [5, 8, 2]]
[[8, 3, 4], [1, 5, 9], [6, 7, 2]]
[[9, 1, 5], [1, 5, 9], [5, 9, 1]]
我想问一下,格子里面的数,在三个数组中不能重复出现?
我这个程序的执行效率比较慢
                                       
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-26 10:17:47 | 显示全部楼层
  1. """
  2.   1 2 3
  3.   \ | /
  4. 4'- + -4
  5.   / | \
  6. 3' 2' 1'

  7. 由题意得 1, 2, 3, 4 四条路和相等
  8. => 1 + 1' = 2 + 2' = 3 + 3' = 4 + 4'
  9.   从 1 ~ 9 中取四对数,使其和相等,只能首尾配对
  10.   (1, 9), (2, 8), (3, 7), (4, 6)
  11. => 中间为 5
  12. => 每条路的和为 15
  13. => 九宫图“四条边”每边和也为 15

  14. 从上述四对数中在配对前提下取 3 个数作边,仅能凑 4 组
  15.   (1, 6, 8)
  16.   (2, 4, 9), (2, 6, 7)
  17.   (3, 4, 8)
  18. => 2, 4, 6, 8 均出现两次,故为四角
  19.   2 与 4, 6 搭配,故 2 与 4, 6 相邻,8 为 2 的对角
  20.   剩下的数按上述新的四对补齐即可

  21. 严格来说,九宫图只有一种解,其他解均由此解或旋转,或镜像得到
  22. 题目给出 1 解,旋转可再得 3 解,镜像后又有 4 解 => 共 8 解
  23. """

  24. def printGridView(nums):
  25.     global cnt
  26.     cnt += 1
  27.     print(f"No.{cnt}:")
  28.     for i in range(3):
  29.         for j in range(2):
  30.             print(nums[i][j], end=" | ")
  31.         print(nums[i][2], "\n-   -   -")
  32.     print('=' * 10)


  33. def mirror(nums):
  34.     for i in range(3):
  35.         nums[i][0], nums[i][2] = nums[i][2], nums[i][0]


  36. def clockWise(nums):
  37.     res = [[0]*3 for _ in range(3)]
  38.     for i in range(3):
  39.         for j in range(3):
  40.             res[j][2-i] = nums[i][j]
  41.     return res


  42. def solve(nums):
  43.     for i in range(2):
  44.         for j in range(4):
  45.             nums = clockWise(nums)
  46.             printGridView(nums)
  47.         mirror(nums)


  48. if __name__ == "__main__":
  49.     nums = [[8, 1, 6],
  50.             [3, 5, 7],
  51.             [4, 9, 2]]
  52.     cnt = 0
  53.     solve(nums)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-21 15:54:07 | 显示全部楼层
我感觉太难了,看看答案学习一下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-21 20:21:44 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-16 09:58:19 | 显示全部楼层
d
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-31 09:35:03 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-8 14:12:51 | 显示全部楼层
666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-11 21:58:14 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-30 09:28:45 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-3 00:42:00 | 显示全部楼层
list_num=[1,2,3,4,5,6,7,8,9]
times=0
list_sum=[]
#横向相加等于15
for a in list_num:
    for b in list_num:
        for c in list_num:
            if a+b+c==15:
                times+=1
                list_3=[]
                list_3.append(a)
                list_3.append(b)
                list_3.append(c)
                list_sum.append(list_3)
                print(a,b,c,times)
print(list_sum)
#纵向第一列相加等于15
list_sum2=[]
for a in list_sum:
    for b in list_sum:
        for c in list_sum:
            list_upright1=[]
            if a[0]+b[0]+c[0]==15:
                list_upright1.append(a)
                list_upright1.append(b)
                list_upright1.append(c)
                list_sum2.append(list_upright1)
print(list_sum2)
#减去重复含有重复数字的数列
count2=0
count3=0
list_sum3=[]
for a in list_sum2:
    count2+=1
    print(a,count2)
    str1=''
    for b in a:
        for c in b:
            if str(c) not in str1:
                str1=str1+str(c)
            else:
                break
    if len(str1)==9:
        count3+=1
        list_sum3.append(a)
print(list_sum3,count3)
#第二列相加等于15 第三列也自然等于15了
list_sum4=[]
count3=0
for a in list_sum3:
    if a[0][2]+a[1][2]+a[2][2]==15:
        list_sum4.append(a)
        count3+=1
    else:
        pass
print(list_sum4,count3)
#斜向相加等于15
list_sum5=[]
count4=0
for a in list_sum4:
    if a[0][0]+a[1][1]+a[2][2]==15:
        list_sum5.append(a)
        count4 += 1
    else:
        pass
print(list_sum5,count4)
list_sum6=[]
count5=0
for a in list_sum5:
    if a[0][2]+a[1][1]+a[2][0]==15:
        list_sum6.append(a)
        count5 += 1
    else:
        pass
print(list_sum6,count5)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-18 15:56:35 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 01:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表