鱼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 | 显示全部楼层
import itertools


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

    if len(set([10-x for x in i]) & set(i)) == 0:
        for j in range(4):
            list2[j] = i[j]
            list2[8-j] = 10 - i[j]
        if sum(list2[0:3]) == 15 and sum(list2[0:7:3]) == 15:
            print('NO.', count)
            for num in range(3):
                print(list2[num*3:num*3+3])
            print()
            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 3
  \ | /
4'- + -4
  / | \
3' 2' 1'

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

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

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

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


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


def clockWise(nums):
    res = [[0]*3 for _ in range(3)]
    for i in range(3):
        for j in range(3):
            res[j][2-i] = nums[i][j]
    return res


def solve(nums):
    for i in range(2):
        for j in range(4):
            nums = clockWise(nums)
            printGridView(nums)
        mirror(nums)


if __name__ == "__main__":
    nums = [[8, 1, 6], 
            [3, 5, 7],
            [4, 9, 2]]
    cnt = 0
    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, 2025-1-16 14:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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