塔珀自指公式自定义图形批处理构造器

24game
渐入佳境
渐入佳境
帖子: 42
注册时间: 2016年09月02日 22:09
拥有现金: 锁定
Has thanked: 3 times
Been thanked: 15 times
联系:

Re: 塔珀自指公式自定义图形批处理构造器

帖子 #11 24game » 2016年10月08日 23:10

我的理解上, 那个公式只是将 2 位色深的图形 利用数学常规运算和数论函数 混合公式 的一种编码方式

如果要对 2 位色深图形作最简单的编码, 最直接的方式是 1 个二进制位对应一个像素, 这样简单编码的空间耗费比 塔珀公式常数 都要小

所以, 塔珀公式只是一个娱乐方式

塔珀公式的宽高其实是可以变化的, 取 106 宽 X 17 高, 只是为了能将那个公式在数学上的形式用一个图片完全容纳得下

106 * 17 = 1802 个像素, 相应的, 原始的常数就需要 1802 个二进制位,

常规编程语言支持的整数数据类型没这么多位数, 比如最常见的 32 位整数.

如果要用常规编程语言来实现这个公式, 那么首先就要编写一些长整数运算函数, 这在我看来是很麻烦, 很不好玩的.

既然宽高可以变化, 我们就把它变小点, 5 宽 X 5 高 = 30 个像素, 只需要 25 位,

最大的 25 位进制数 再乘以 5
(2^25 - 1)*5 < 2^31 (32位二进制位 最大的有符号 整数)

这对于常规编程语言, 不会超出运算范围了


以下是用 6 宽 X 5 高 范围内 画出的一个 大写字母 B 的例子
图片
Code: [全选] [展开/收缩] [Download] (Untitled.txt)
  1. k=5*FromDigits["111111010110101101010101000000",2]; sh = 1;
  2.  
  3. tb = Table[
  4.  
  5.  1/2 < Floor[ Mod[Floor[y/5]*2^(-5 Floor[x] - Mod[Floor[y], 5]), 2]],
  6.  
  7.  {y, k + 5 - sh, k, -sh}, {x, 6 - sh, 0, -sh}];
  8.  
  9. g = Graphics[Raster[tb /. {True -> 0, False -> 1}], ImagePadding -> None, PlotRangePadding -> None]

24game
渐入佳境
渐入佳境
帖子: 42
注册时间: 2016年09月02日 22:09
拥有现金: 锁定
Has thanked: 3 times
Been thanked: 15 times
联系:

Re: 塔珀自指公式自定义图形批处理构造器

帖子 #12 24game » 2016年10月08日 23:18

@523066680

常规编程语言中, 求余运算 比如 一些语言提供 % 运算符, 一些语言提供拼写形如 mod 的函数, 但不一定真的和数学上 标准的 MOD 函数等同

这个可能存在的差别会造成容易被忽略的问题

另外, floor 函数在一些语言中是见不到的, 需要自行构造

没有和 数学标准 MOD 函数等同的运算符 或者 函数时, 也需要自行补充代码进行变通转换

例如, 若某语言提供一种求余运算, 那么要确定这个求余运算和 数学标准 MOD 函数的差别, 作以下几个运算都和 标准 MOD 函数的结果对比即可
Code: [全选] [展开/收缩] [Download] (Untitled.txt)
  1. 5 % 3
  2. -5 % 3
  3. 5 % -3
  4. -5 % 3

头像
523066680
Administrator
Administrator
帖子: 340
注册时间: 2016年07月19日 12:14
拥有现金: 锁定
储蓄: 锁定
Has thanked: 30 times
Been thanked: 27 times
联系:

Re: 塔珀自指公式自定义图形批处理构造器

帖子 #13 523066680 » 2016年10月08日 23:24

24game 写了:


试了一晚上,先Perl后Python,从stackoverflow找too large的解决方法 到 wikipedia找示例代码!
最后抱着试一下的心态,把python3.5卸载了,把2.7装上,输出无误了! :coverface1

.
@ @ @ @@ @ @ @ @ @ @ @ @@ @ @ @
@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
@@ @ @ @ @ @@ @ @ @ @ @ @ @@ @@@@ @@@ @@@ @ @ @ @ @ @ @ @ @ @
@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @@@ @@@ @ @ @ @ @ @ @ @ @
@ @ @ @ @ @ @ @@ @ @ @ @ @ @ @ @ @@ @ @
@@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
@ @ @@ @ @@ @@@ @ @ @ @ @@@ @@@ @ @@@ @@@ @ @ @ @ @
@@@ @ @ @ @ @ @ @ @ @ @ @ @@@@ @ @ @ @ @
@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
@@ @ @ @ @ @ @@ @@@ @ @ @ @@ @ @@@@ @@@@ @ @
@ @ @ @ @ @ @ @ @ @
@ @ @ @ @ @ @ @ @ @
@ @ @ @ @ @ @ @ @ @
@@@ @ @ @ @ @ @ @ @
@ @ @ @ @ @
@@@ @ @@@ @@@ @ @@@

happy886rr
渐入佳境
渐入佳境
帖子: 45
注册时间: 2016年09月27日 16:11
拥有现金: 锁定
储蓄: 锁定
Has thanked: 14 times
Been thanked: 14 times
联系:

Re: 塔珀自指公式自定义图形批处理构造器

帖子 #14 happy886rr » 2016年10月09日 09:26

灵台方寸山 写了:python3 取余

除法并取整数
3 // 2

哈哈,兄的这个//方法,让我写py省了很多字符。

happy886rr
渐入佳境
渐入佳境
帖子: 45
注册时间: 2016年09月27日 16:11
拥有现金: 锁定
储蓄: 锁定
Has thanked: 14 times
Been thanked: 14 times
联系:

Re: 塔珀自指公式自定义图形批处理构造器

帖子 #15 happy886rr » 2016年10月09日 10:45

523066680 写了:
24game 写了:

最后抱着试一下的心态,把python3.5卸载了,把2.7装上,输出无误了!

python3.几也行。略作修改
图片
Code: [全选] [展开/收缩] [Download] (Untitled.py)
  1. from functools import reduce
  2.  
  3. k=4858450636189713423582095962494202044581400587983244549483093085061934704708809928450644769865524364849997247024915119110411605739177407856919754326571855442057210445735883681829823754139634338225199452191651284348332905131193199953502413758765239264874613394906870130562295813219481113685339535565290850023875092856892694555974281546386510730049106723058933586052544096664351265349363643957125565695936815184334857605266940161251266951421550539554519153785457525756590740540157929001765967965480064427829131488548259914721248506352686630476300
  4. def f(x,y):
  5.     d=y%17+17*x
  6.     e=reduce(lambda x,y:x*y,[2 for x in range(d)]) if d else 1
  7.     return 0.5<(y//(17*e)&1)
  8.  
  9. for y in range(k+17,k-1,-1):
  10.     line=""
  11.     for x in range(0,107):
  12.         if f(x,y):
  13.             line+="■"
  14.         else:
  15.             line+=" "
  16.     print(line)

头像
灵台方寸山
出类拔萃
出类拔萃
帖子: 79
注册时间: 2016年08月06日 16:40
拥有现金: 锁定
储蓄: 锁定
来自: [color=red]斜月三星洞[/color]
Has thanked: 24 times
Been thanked: 17 times

Re: 塔珀自指公式自定义图形批处理构造器

帖子 #16 灵台方寸山 » 2016年10月09日 12:36

happy886rr 写了:
灵台方寸山 写了:python3 取余

除法并取整数
3 // 2

哈哈,兄的这个//方法,让我写py省了很多字符。

我不生产方法。我只是教程的搬运工。 :crazylaugh4
:crazylaugh3 :oh_no
少发点科普,对中医产业,骗子产业不好。


回到 “Math”

在线用户

用户浏览此论坛: 没有注册用户 和 0 访客