我实现了一个函数,该函数将0 - 159
范围内的唯一数字的向量映射到0 - 119
160x120
的新范围。
到目前为止,映射工作正常,每个数字都转移到正确的范围。我重复了这个第二个向量(新范围round()
)
我面临的问题是每对数字(每个向量中的一个)代表int
图像中的位置,因此应该是唯一的。由于需要在返回浮点数的映射函数中进行除法,我使用Point -> new Range -> round()
--------------------------------------
177x(-99) -> 117.670x3.9608 -> 118x4 !
176x(-99) -> 117.006x3.9608 -> 118x4 !
转换为scope :created_between, -> (start_at, end_at) {
where("? BETWEEN start_at AND end_at", 'users.created_at')
}
(116.341 - > 116)。但这会导致点对不再具有独特性的问题:
{{1}}
已正确映射到所需范围,但现在表示相同的点,并且不再是唯一的。 重要的是:每个点都映射到新范围,并且没有信息丢失,例如重复丢弃。 (点对持有必须保持的更多颜色信息。)
有没有办法解决这个问题?
答案 0 :(得分:1)
由于Dirichlet pigeonhole principle
,不可能为不同的整数范围(不同的权力集合)创建一对一的映射请注意,如果可以进行可逆映射,您可以创建具有无限压缩的归档,并将任何大小的文件压缩到一个或几个字节,然后将其恢复