Matrix 基于矩阵获取unicode块元素

Matrix 基于矩阵获取unicode块元素,matrix,unicode,Matrix,Unicode,考虑到这些uncode块元素,我想这是一个独特的问题: 我想根据我得到的矩阵得到相关的块元素,所以 11 01将给出▜ 00 10将给予▖ 等等 我设法用python实现了这一点,但我想知道是否有人能找到更优雅的解决方案 来自itertools进口产品 元素=[0,1] a=productelements,重复=2 b=产品A,重复=2 矩阵=[c代表b中的c] 矩阵生成可能性 00 00 00 00 01 01 01 01 10 10 10 10 11 11 11 11 00 01 10 1

考虑到这些uncode块元素,我想这是一个独特的问题:

我想根据我得到的矩阵得到相关的块元素,所以 11 01将给出▜

00 10将给予▖

等等

我设法用python实现了这一点,但我想知道是否有人能找到更优雅的解决方案

来自itertools进口产品 元素=[0,1] a=productelements,重复=2 b=产品A,重复=2 矩阵=[c代表b中的c] 矩阵生成可能性 00 00 00 00 01 01 01 01 10 10 10 10 11 11 11 11 00 01 10 11 00 01 10 11 00 01 11 10 00 01 10 11 块=['','▗', '▖', '▄', '▝', '▐', '▞', '▟', '▘', '▚', '▙', '▌', '▀', '▜', '▛', '█'] 给定= 0,1, 1,0 打印块[矩阵.索引给定] 输出:▞
这些特征虽然存在,但并不意味着有直接的相关性 设置1/4块的数量

因此,我在一个已发布的包中有一个解决方案,它不一定是 比你的更优雅,因为它更冗长

但是,它周围的代码允许在文本终端上绘制 在稍微干净的API中,使用这些1/4块作为像素

因此,我使用设置/重置字符块中的像素。相关方法可以直接从类中使用,它们获取像素坐标和当前字符块,在其上设置或重置寻址像素。代码实例化该类只是为了能够使用in运算符检查块字符

该项目可以使用pip安装终端进行安装

从项目中提取的函数和类bellow将在独立环境中工作,以执行与您相同的操作:

jsbueno/terminedia,v.0.2.0中的片段 def _mirror_Dict: 创建一个新的字典,为键交换值 Args: -dct映射:要反转的字典 返回{value:key for key,dct.items中的值} 类块字符: 内部用于模拟1/4块字符内的像素设置/重置/读取 包含按顺序使用的所有块字符的列表和其他映射,以便 从0到15的数字位将匹配相应块字符上的像素。 虽然该类是为了在模拟中内部使用 更高分辨率的画布,其功能可供任何应用程序使用 它决定操纵块字符。 该类本身是无状态的,它被用作 使用名称:any:`BlockChars`。需要该实例才能使用运算符 ``在``中检查字符是否为块字符。 空= 象限\左上\左='\u2598' 象限\右上\右='\u259D' 上半块='\u2580' 象限\左下\左='\u2596' 左半块='\u258C' 象限(右上)和(左下)='\u259E' 象限(左上)和(右上)和(左下)='\u259B' 象限\右下\右='\u2597' 象限\左上\右下\右='\u259A' 右半块='\u2590' 象限(左上)和(右上)和(右下)='\u259C' 下半块='\u2584' 象限(左上)和(左下)和(右下)='\u2599' 象限(右上)和(左下)和(右下)='\u259F' 完整块='\u2588' 这取决于本地名称空间和dict的Python 3.6+有序行为: block_chars_by_name={key:key的值,如果key.isupper} block_chars_to_name=_mirror_dictblock_chars_by_name 按_顺序的块_={i:i的值,按_name.values}枚举块_chars _中的值 块到块的顺序=\u镜像\u块到块的顺序 def___包含__self,char: 如果字符是表示块字符的像素,则为True 将self.block\u chars\u中的字符返回给\u name @类方法 def_opcls、pos、数据、操作: 编号=cls.块到顺序[数据] 索引=2**pos[0]+2*pos[1] 返回操作编号、索引 @类方法 def setcls,位置,数据: 设置块字符中的像素 Args: -位置2-序列:字符内像素的坐标 0,0是左上角,1,1是右下角,依此类推 -数据:由要设置的位组成的初始字符。使用 空格\x20以空块开始。 op=λn,指数:n |指数 按顺序返回cls块[cls.\U反对,数据,操作] @类方法 def重置CLS,位置,数据: 重置块字符中的像素 Args: -位置2-序列:字符内像素的坐标 0,0是左上角,1,1是右下角,依此类推 -数据:由要重置的位组成的初始字符。 op=lambda n,索引:n&0xf-索引 按顺序返回cls块[cls.\U反对,数据,操作] @类方法 def get_atcls、pos、数据: 检索bl中的像素是否为 锁定字符已设置 Args: -位置2-序列:像素坐标 -数据字符:字符用于查看块。 如果在数据中传递了无效字符,则引发KeyError。 op=lambda n,索引:booln&index 返回cls.\u相反,数据,操作 ::any:`BlockChars`single instance:enables````包含` 块字符=块字符_ 在终端中仅粘贴此项后,可以执行以下操作:

在[131]中:像素=BlockChars.set0,0, 在[132]中:printBlockChars.set1,1,像素 这个内部副产品更接近您发布的内容: 在[133]中:按[0b1111]的顺序块 Out[133]:'█' 在[134]中:按[0b1010]的顺序分块 Out[134]:'▐' 目前的项目已完成 绘图API将这些用作ANSI文本终端中的像素- 包括贝塞尔曲线、填充椭圆和RGB图像显示
检查示例文件夹

谢谢,我会检查的,我的想法是一样的,用于打印QR代码。我认为没有一种简单的方法可以从我使用的缓冲区中获取图像,它会打印到终端。但添加这样一个电话是很容易的——我今天晚些时候会尝试这样做,并在这里告诉你。