[讨论] 玩个游戏,用1kΩ电阻可以组合出多少个阻值?

okhxyyo   2024-3-20 11:06 楼主

用1kΩ电阻可以组合出多少个阻值?

大家伙儿想过这个问题吗?

 

工作学习累了我们来放松一下!

一起来玩个游戏,大家可以用最多10个1kΩ电阻来组合,看看谁能组合出最多种的阻值?

单纯回复数量不能断定,记得画出图来哦!!

 

参与游戏就能获得5芯积分,组合出最多种阻值的小伙伴额外再获得50芯积分哦(统计到4月10日)~~

 

image.png  

玩板看这里: https://bbs.eeworld.com.cn/elecplay.html EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!

回复评论 (13)

1个电阻1种,2个电阻2种,3个电阻4种,4个电阻9种,5个电阻23种,再向上太多了

点赞  2024-3-20 11:18
引用: eew_1PrAA0 发表于 2024-3-20 11:18 1个电阻1种,2个电阻2种,3个电阻4种,4个电阻9种,5个电阻23种,再向上太多了

这应该是一种什么样的排列方式?

点赞  2024-3-20 14:02
引用: eew_1PrAA0 发表于 2024-3-20 11:18 1个电阻1种,2个电阻2种,3个电阻4种,4个电阻9种,5个电阻23种,再向上太多了

3个电阻的时候应该是三个吧。算不出第四个。

点赞  2024-3-20 14:05

5个以上实在画不出来了,变化太多了

点赞  2024-3-20 14:06
引用: wangerxian 发表于 2024-3-20 14:02 这应该是一种什么样的排列方式?

3个串,3个并,2并+1串,2串+1并

点赞  2024-3-20 16:41
引用: eew_1PrAA0 发表于 2024-3-20 16:41 3个串,3个并,2并+1串,2串+1并

明白了!原来是这样。

点赞  2024-3-20 17:58

这恐怕有点难

【工作学习累了我们来放松一下!】

这不是工作学习累了放松一下,而是工作强度不够啊

点赞  2024-3-20 18:50
引用: wangerxian 发表于 2024-3-20 17:58 明白了!原来是这样。

组合列完还得找出重复的阻值,统计种类哈哈

点赞  2024-3-20 18:55

组合太多了,只要有支路,就都能串并。不好列举哦。有请数学家出手。

默认摸鱼,再摸鱼。2022、9、28
点赞  2024-3-20 19:23
引用: [quote]wangerxian 发表于 2024-3-20 17:58
明白了!原来是这样。

组合列完还得找出重复的阻值,统计种类哈哈
[/quote]

用程序会不会好算一点,感觉程序也要找规律才行
点赞  2024-3-20 21:43
引用: wangerxian 发表于 2024-3-20 21:43 组合列完还得找出重复的阻值,统计种类哈哈
用程序会不会好算一点,感觉程序也要找规律才行[/quote]

程序的话,如果不考虑桥式接法那种,只考虑串并的话,是比较简单的

点赞  2024-3-21 09:22

一个只考虑串、并联方式的Python代码参考:

+ 表示串,| 表示并

def _getR(key:list, result:dict) -> list:
    '''获得方案,key:搭配模式,result:原方案'''
    re = []
    # 把所有可能的组合遍历一遍
    for mode_x in result[key[0]]:
        for mode_y in result[key[1]]:
            # 串接
            tmp = f'({mode_x[0]})+({mode_y[0]})'
            tmp = tmp.replace('(R)', 'R')
            re.append((tmp, mode_x[1] + mode_y[1]))
            # 并接
            tmp = f'({mode_x[0]})|({mode_y[0]})'
            tmp = tmp.replace('(R)', 'R')
            re.append((tmp, mode_x[1] * mode_y[1] / (mode_x[1] + mode_y[1])))
    return re

def getR(n:int) -> list:
    '''获得方案,n:总个数'''
    result = {
        1:[('R', 1000.0),],
        2:[('R+R', 2000.0), ('R|R', 500.0)]
        }
    if n < 3:
        # 1、2时直接返回
        return result[n]
    else:
        # 3以上需要把自1-n的全部获取到
        for i in range(3, n+1):
            re = []
            # 遍历所以拆分方式,如5拆为1+4,2+3   6拆为1+5,2+4,3+3
            for j in range(1, i // 2 + 1):
                re += _getR([j, i-j], result)
            result[i] = re
    return result[n]


if __name__ == '__main__':
    # 5个电阻方案
    s = getR(5)
    print()
    tmp = []
    redu = []
    for _s in s:
        # 因小数除不尽问题,保留6位小数
        if '{:.6f}'.format(_s[1]) in tmp:
            # 存在相同数值的方案视为同一方案,需删除
            redu.append(_s)
        else:
            tmp.append('{:.6f}'.format(_s[1]))
    # 删除数值重复方案
    for r in redu:
        s.remove(r)
    # 打印个数,方案
    print(len(s), s)

5 个的结果是:

22

[('R+(R+(R+(R+R)))', 5000.0), ('R|(R+(R+(R+R)))', 800.0), ('R+(R|(R+(R+R)))', 1750.0), ('R|(R|(R+(R+R)))', 428.57142857142856), ('R+(R+(R|(R+R)))', 2666.6666666666665), ('R|(R+(R|(R+R)))', 625.0), ('R+(R|(R|(R+R)))', 1400.0), ('R|(R|(R|(R+R)))', 285.7142857142857), ('R+(R+(R+(R|R)))', 3500.0), ('R|(R+(R+(R|R)))', 714.2857142857143), ('R+(R|(R+(R|R)))', 1600.0), ('R|(R|(R+(R|R)))', 375.0), ('R+(R+(R|(R|R)))', 2333.333333333333), ('R|(R+(R|(R|R)))', 571.4285714285714), ('R+(R|(R|(R|R)))', 1250.0), ('R|(R|(R|(R|R)))', 200.0), ('R+((R+R)|(R+R))', 2000.0), ('R|((R+R)|(R+R))', 500.0), ('(R+R)|(R+(R+R))', 1200.0), ('(R+R)|(R+(R|R))', 857.1428571428571), ('(R|R)+(R|(R+R))', 1166.6666666666665), ('(R|R)+(R|(R|R))', 833.3333333333333)]

点赞  2024-3-21 11:06
引用: 极限零 发表于 2024-3-21 11:06 一个只考虑串、并联方式的Python代码参考: + 表示串,| 表示并 def _getR(key:list, result:dict) ...

大佬还真写程序去验证了呀!

点赞  2024-3-21 16:24
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复