技术标签: 算法 python github 矩阵 线性代数
某天脑子突然抽筋了,想着既然有方形的矩阵,为什么不来一个圆形的圆阵来储存内容呢,于是就写了一个小python包,CirMatCoder。。。。。。
不过实施证明矩阵是有矩阵的道理,就像电脑内图片的储存一样,都是以矩形来存储像素点的,对于各种图形的存取,都是在矩形里进行填充形成的,不过如果把圆阵线性化,可能会有一些不同,至少让数据看起来很乱,无章,然后就还是决定写了下,可能也会有别的可能的用处(可能)
先放上GitHub的项目链接 (内含readme说明文档)
GitHub - WhatMelonGua/CirMatCoder: A python package for secret coding
然后,,,虽然很奇怪,我们还是来看下效果
from CirMatCoder import * Cir = CirMapping(['a','b','c'],7,1,[4,4],['0']) Cir.ShowCir()
执行输出:
001- . . . ['0', '0', '0']
002- . . ['0', '0', '0', '0', '0']
003- . ['0', '0', '0', '0', '0', '0']
004- . ['0', '0', '0', 'a', 'b', 'c', '0']
005- . ['0', '0', '0', '0', '0', '0']
006- . . ['0', '0', '0', '0', '0']
007- . . . ['0', '0', '0']
这样,我们的数据['a','b','c'],就存在了直径7的圆阵里的 第4行、第4位。元素两两间距为1单位长度
末尾['0']代表的是未输入数据的地方,我们以'0'填充<默认传入数组仅有一个元素时,全填充此元素;而为多个元素时,将按顺序填充元素,具体参考GitHub Readme文档>
然后执行
Cir.AngleSet(math.pi/4,['A','B','C']) Cir.ShowCir()
获得输出:
001- . . . ['0', '0', '0']
002- . . ['0', '0', '0', '0', '0']
003- . ['0', '0', '0', 'B', 'C', '0']
004- . ['0', '0', '0', 'A', 'b', 'c', '0']
005- . ['0', '0', '0', '0', '0', '0']
006- . . ['0', '0', '0', '0', '0']
007- . . . ['0', '0', '0']
这样,我们在圆阵的45°方向,插入了'A','B','C'三个数据...
但是这有个错误,AngleSet是取角度sin,cos函数结果的最小整值,有时候两个相邻的数据计算得到的 行、列 数 是一样的,导致后边的数据把前边的覆盖,比如:
Cir = CirMapping([],11,1) Cir.model='Debug' #model 设置为 'Debug',一些函数会自动执行并输出结果,如下边的AngleSet Cir.AngleSet(math.pi/3,[1,2,3,4,5,6])
输出
001- . . . . [0, 0, 0, 0]
002- . . . [0, 0, 0, 0, 0, 0, 6]
003- . . [0, 0, 0, 0, 0, 0, 5, 0, 0]
004- . [0, 0, 0, 0, 0, 0, 3, 0, 0, 0]
005- . [0, 0, 0, 0, 0, 2, 0, 0, 0, 0]
006- . [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]
007- . [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
008- . [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
009- . . [0, 0, 0, 0, 0, 0, 0, 0, 0]
010- . . . [0, 0, 0, 0, 0, 0, 0]
011- . . . . [0, 0, 0, 0]
可以看到,4没了,被5覆盖掉了,所以这种插入方式是存在一个插入长度的,过了就会造成丢失,不过丢失的位数是对应圆阵的 直径D、数据间隔d 可以确定的。
然后这个阵呢。。。还可以镜像<原理就是数组reverse逆排序>
还可以转90°<先转为矩阵再转90°,然后再转回圆阵,然后会造成圆阵最上端数据丢失>
为了防止数据丢失,就又写了一个函数
ProtectCir(cir),可以对存满数据的圆阵扩充,让他上下左右各多一行一列。。。保证内部数据不丢失,外圈的会丢失。
因此这个包也包含了矩阵的一些功能,大家可以去GitHub了解更多
至于应用这方面吗。。。
或许大家用PIL<python的图片处理库>的时候,画圆圈,,,
大家可以试着把PIL返回的rgb索引值以data存在圆阵里,然后操作吧。。。。
然后别的什么的潜在的
真的是兴趣乱做的,大家不要当真
谢谢朋友们!
关于本人CSDN码龄的解释:
首先。。。没有六年,好像是注册的比较早
其实才一年不到,还是半吊子吊过来的啊,不要被忽悠了
英文邮件礼仪:向教授请教学术问题邮件主题邮件主题(subject)不需要写自己的名字。名字是在邮件系统设置里设定好的,在发件时会替换显示实际地址,所以无需在主题里再写一遍。[关键内容是要在主题里就写明白是否有推荐人,以及主要是什么事。很多教授只看主题。]一个好的标题,要能简洁地概括邮件的目的或内容。如果你对教授的某个研究项目感兴趣,就可以用这个研究方向作标题,例如"Defo
SPI总线概念SPI ( Serial Peripheral Interface,串行外围设备接口)是一种同步、全双工、主从式,高速接口(UART是异步)。来自主机或 从机 的数据在时钟上升沿或下降沿同步。主机和从机可以同时传输数据。......
1. 打开文件open()打开文件并以流对象返回失败则提示IOError1.1 准备工作在任意磁盘下新建.txt文件,在文件里随便写点东西。例如:F:\OpenFileDemo.txt1.2 open()方法的基本语法及常用参数file--------------------文件路径mode----------------文件权限encoding-----------以何种编码格式打开(默认:cp936)(常用:utf-8、gbk)open(file, mode='r', buff
转载自:C++:C语言实现HTTP的GET和POST请求 - 方方和圆圆 - 博客园C++:C语言实现HTTP的GET和POST请求阅读目录 HTTP请求和IP/TCP 实现GET请求 实现POST请求: 参考:回到顶部 HTTP请求和IP/TCP 所谓的HTTP协议是基于IP/TCP协议的, 所以要获取远端的html数据只要创建socket对象就足够了; HTTP是基于IP/TCP加上了网络请求的固定格式, 比如:运行下面代码metho...
3.com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $at com.google.gson.internal.bind.ReflectiveTypeAdapterFactoryAdapter.read(ReflectiveTypeAdapterFactory.java:226)atcom.goo
文章目录概述配置中心服务端配置中心客户端配置刷新-手动刷新配置刷新-全自动刷新概述Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持,使用Config Server,您可以在所有环境中管理应用程序的外部属性。 目前也有一些开源的配置中心,比如百度的disconf,阿里的diamand。本文介绍springcloud官方的配置中心springcloud co...
哦,科技之神怎么这么逗我...我被困在学习如何创建Wordpress主题或学习Vala for Java Programmers创建ElementaryOS应用程序之间。我该选择哪一个? 哦,技术!可以创建并使用Wordpress主题和模板的人可能还有更多工作,但是使用Vala,您可以使用ElementaryOS应用! 我确实希望有一天成为一名Linux App开发人员,...
一些好用的教程
开发时候,升级了引用module的版本,手动修改package.json文件中的版本号,然后删掉原来的module重新npm install,但是重新安装的版本号并不是我package.json中定义的版本,而依然是原来的版本。先说解决方法:删除vue项目根目录下的package-lock.json,重新npm install。问题解决。至于为什么要删除package-lock.jso...
SPI 串行同步时钟可以设置为不同的极性(Clock Polarity ,CPOL)与相位(Clock Phase ,CPHA)。时钟的极性(CPOL)用来决定在总线空闲时,同步时钟(SCK)信号线上的电位是高电平还是低电平。时钟由 Master 控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后 (SCLK串行时钟线空闲是为高电平,数据在SCLK时钟的。SCLK串行时钟线空闲是为高电平,数据在SCLK时钟的。当时钟相位为 0 时(CPHA=0),在 SCK 信号线的第一个跳变沿进行采样。
在很久以前(2年之前),我使用的是新浪博客和网易博客.那都是些垃圾博客,不支持数学公式,而且娱乐性太强.后来我翻.墙到国外的wordpress.com注册了一个博客写数学,但是wordpress自带的数学公式支持很naive,而且作为wordpress.com的普通用户,我没有安装插件的特权,而且wordpress.com长期处于被屏蔽状态,于是我就把那个博客放弃了.后来又使用blogger,bl...
2.1内网信息收集概述我是谁 ——对当前机器角色地判断这是哪——对当前机器所处地网络环境的拓扑结构进行分析和判断我在哪—— 对当前机器所处的区域的判断2.2 收集本机信息内网结构 是什么样的 角色是什么 使用这台机器的角色是什么 安装了什么杀毒软件 通过什么方式上网 是台式还是笔记本2.2.1 手动收集信息本机信息包括操作系统 权限,内网ip地址 ,杀毒软件 端口 服务 补丁 网络连接 共享 会话1,查询网络配置信息获取本机网络配置信息ipconfig / all2,查询操作系