尽管这个问题在StackOverflow上已经有部分答案
,但这些答案与标题或标签中具有正确的过程/概念名称(bijective (base-k) numeration)的问题不相关。我希望许多答案本质上都是这些现有答案的链接。此问题在How to list from A to Z in PHP, and then on to AA, AB, AC, etc中得到部分回答
Bijective以26为基础的计数可用于许多电子表格程序(例如LibreOffice Calc,Lotus-123,VisiCalc(我认为),ProCalc 3D等)中使用的方案中的列ID。 >
以下是R pseudocode
(我还不[[尚未包括依赖项的“原始” R代码)用于一种解决方案。返回值是一个整数向量(little endian),其元素在概念上映射到用于表示双射数的任意符号:bijective.numeral <- function(n, symbols=26L) {
if (!is_among.contiguous.integers(n)) return (NULL)
if (n < 0) return(iNA)
if (n == 0) return(integer())
intermediate <- pseudo.log(n, symbols) %|% integer
# PREALLOCATE A VECTOR LONG ENOUGH FOR THE RESULT
m <- 0L
while (n) {
m <- 1L + m
intermediate[[m]] <- 1:symbols %[mod% n
n <- n %|% pred %/% symbols }
intermediate[1:m] }
LETTERS[16384 %|% bijective.numeral] %|% rev %|% `%//%`
# [1] "XFD"
尽管此问题已经在StackOverflow上获得了部分答案,但是这些答案与具有正确的过程/概念名称(双射(基数-k)计数)的问题没有关联...