首页 > 其他分享 >api/RadixModule

api/RadixModule

时间:2023-05-25 21:25:25浏览次数:49  
标签:RadixModule radix temp list api result True low

1、介绍

进制算法。

2、代码

"""
进制算法,返回一个list,有两大类型
1、单个集合
从长度为m的单个集合中,一次性选择n个元素,各自索引按序组成list,作为结果list的元素。
(1)先按进制计算遍历,获取所有可能的组合
(2)标志1,如果为True,表示允许一次选择中,禁止重复选择某一索引
(3)标志2,如果为True,表示一次选择的过程中,后选择的索引必须大于等于上一次选择的。
标志1为True,且标志2为False,结果就是集合的排序
标志1位True,且标志2位True,结果就是集合的组合

2、多个集合
从长度分别为m1,m2...mn的多个集合中,一次性分别从各个集合中选择一个元素,各自被选择元素的索引按序组成list,作为结果list的元素
标志,决定是左侧低位,还是右侧低位。
- 对于一般的爆破而言,是设置左侧低位
- 但是对于ip+端口+路径爆破,或者用户名+密码爆破,则可能是左侧低位,也可能设置右侧低位,需要看实际需求
"""

"""
单个集合的场景
@list_len   int类型,表示单列集合的长度
@count      int类型,最小为1,表示一次从集合中选择的元素个数
@flag1      bool类型,为True表示禁止在一次选择中元素索引重复。为False则不处理
@flag2      bool类型,为True表示在一次选择过程中,先选择索引小的,后选择索引相等或者更大的。为False则不处理
@low_in_left_flag   bool类型,为True表示左侧是低位,为False表示右侧是低位
"""


def radix_by_singular_list(list_len: int, count: int, flag1: bool, flag2: bool, low_in_left_flag: bool = True):
    # 返回结果 list[list[int]]类型
    result = list()
    # 进制计算
    radix_list = list()
    for i in range(count):
        radix_list.append(list_len)
    radix_result = radix(radix_list=radix_list, low_in_left_flag=low_in_left_flag)
    # 根据标志,进行筛选
    for i in range(len(radix_result)):
        for j in range(count):
            # 当flag1为True表示禁止元素重复
            if flag1 and radix_result[i][j] in radix_result[i][j + 1:]:
                break
            # 当flag2为True表示选择的后一个索引必须大于或等于前一个
            if flag2 and j != count-1 and radix_result[i][j] > radix_result[i][j + 1]:
                break
        # 符合条件,写入返回结果
        else:
            result.append(radix_result[i])
    return result


"""
复数集合的场景,实际等价于直接的radix函数
@list_len_list   list[int]类型,表示各集合的长度
@low_in_left_flag   bool类型,为True表示左侧是低位,为False表示右侧是低位
"""


def radix_by_plural_list(list_len_list: list, low_in_left_flag: bool):
    return radix(radix_list=list_len_list, low_in_left_flag=low_in_left_flag)


"""
进制算法
@radix_list list[int]类型,元素是各位上的进位数,最小为1
@low_in_left_flag   bool类型,为True表示左侧是低位,为False表示右侧是低位
"""


def radix(radix_list: list, low_in_left_flag: bool):
    # 返回结果 list[list[int]]类型
    result = list()
    # 作为递增1的临时量,各位初始为0
    temp = list()
    for i in range(len(radix_list)):
        temp.append(0)
    while True:
        result.append(temp)
        temp = temp.copy()
        # 左侧是低位
        if low_in_left_flag:
            # 低位增1
            temp[0] = temp[0] + 1
            # 检查溢出到次高位
            for i in range(len(radix_list) - 1):
                if temp[i] == radix_list[i]:
                    temp[i + 1] = temp[i + 1] + 1
                    temp[i] = 0
                else:
                    break
            # 检查到次高位,仍然是溢出,则检查最高位是否溢出
            else:
                if temp[-1] == radix_list[-1]:
                    break
        # 右侧是低位
        else:
            # 低位增1
            temp[-1] = temp[-1] + 1
            # 检查溢出到次高位
            for i in range(1, len(radix_list)):
                if temp[-i] == radix_list[-i]:
                    temp[-i - 1] = temp[-i - 1] + 1
                    temp[-i] = 0
                else:
                    break
            # 检查到次高位,仍然是溢出,则检查最高位是否溢出
            else:
                if temp[0] == radix_list[0]:
                    break
    return result

标签:RadixModule,radix,temp,list,api,result,True,low
From: https://www.cnblogs.com/wd404/p/17432956.html

相关文章

  • api/MarkModule
    1、介绍关于标记的一些函数。2、代码fromapi.PropertiesClassesimportParams"""自动标记@url:str类型,表示url@message:str类型,表示请求报文@name_list:str类型,根据url的直接参数的名称标记其对应的值,name_list参数可以通过空格分隔多个参数名称@text_list:str类......
  • 淘宝API技术文档解析,从入门到实战
    探索淘宝数据的奥秘,淘宝是目前国内最大的B2C电商平台之一,每天都会产生海量的数据。借助淘宝API技术文档,我们可以轻松地获取到这些数据,从而为电商运营和数据分析提供有力支持。1.什么是淘宝API?淘宝API(ApplicationProgrammingInterface)是一组软件API接口,可以让第三方应用程序和淘宝......
  • api/Request
    1、介绍 对应http请求对象。两种设置方法:基于url设置基于请求报文message设置,伴随设置协议类型https_flag2、代码importreimporttimeimportrequestsfromapi.PropertiesClassesimportHeadersfromapi.ResponseClassimportResponsefromapi.UrlClassimport......
  • 淘宝天猫京东1688拼多多商品详情API接口(商品价格监控,商品上传等场景)代码对接
    抓取淘宝商品详情价格接口代码封装如下:请求方式:HTTPS POSTGET公共参数名称类型必须描述key String 是 调用key(必须以GET方式拼接在URL中)API接口 API接口secret String 是 调用密钥api_name String 是 API接口名称(包括在请求地址中)[item_search,item_get,item_search_......
  • express开发api指南--服务器发布
    8.1Linux服务器linux服务器相对简单。一般都自带node环境。没有的话apt-get或者yum安装一下。//查看node版本node-v//把文件除了node-modules文件夹都上传到服务器//以放在opt/express为例cd/opt/expressnpminstall//使用pm2包npminstall-gpm2//在项目文件夹下执......
  • express开发api指南--记录日志
    败笔,目前还是我的败笔。没有找到好的方法去记录。现在只能记录请求的记录,api的返回记录没有记录下来。用的morgan中间件。这个在项目创建时已安装。//首先安装轮询文件流插件和时间处理插件cnpminstall--saverotating-file-streamdayjs//修改app.js//引入插件varrfs=......
  • GitHub API
    GithubAPIGitHubAPI是一个RESTfulAPI,支持HTTP请求和JSON响应。主要用于访问GitHub上的仓库、问题、pullrequest、用户、组织等信息。使用GitHubAPI,你需要遵循以下步骤:1.获取个人访问令牌首先,你需要在GitHub上创建一个个人访问令牌,用于进行API访问。在Git......
  • 基于Qt的音乐播放器(三)通过酷狗音乐的api接口,返回json格式歌曲信息(播放地址,歌词,图片)
    2020博客之星年度总评选进行中:请为74号的狗子投上宝贵的一票!我的投票地址:点击为我投票文章目录前言1.获取歌曲搜索列表api接口2.获取单个歌曲详细信息包括歌词3.总结前言首先说明,本教程仅供个人学习,研究使用,禁止用于任何的商业和非法用途。(手动狗头)之所以要研究这个,是因为我想......
  • 电商erp系统选品,跨境ERP系统选品,api接口采集数据
    ​  电商ERP系统选品优势:1.自动化选品:电商ERP系统可以根据销售数据、客户反馈、市场趋势等因素,自动化地筛选出热销商品,快速进行选品;2.数据分析功能:电商ERP系统可以对历史销售数据进行分析,得出销售趋势、客户偏好等信息,有利于精细化选品;3.库存管理:电商ERP系统可以管理商......
  • apisix 容器安装
    1.按照官方文档进行docker容器安装,安装完成后启动报错,关键错误日志如下:apisix|2023/05/2506:36:35[error]7#7:*205[lua]resolver.lua:80:parse_domain():failedtoparsedomain:etcd-server,error:failedtoquerytheDNSserver:dnsservererror:3nameerro......