代码高尔夫:Excel列名的数值等价性

10 浏览
0 Comments

代码高尔夫:Excel列名的数值等价性

挑战:\n通过字符计数输出Excel列字符串的数字等效值的最短代码。\n例如,A列为1,B列为2,以此类推。一旦达到Z列,下一列变为AA,然后是AB,以此类推。\n测试案例:\nA: 1\nB: 2\nAD: 30\nABC: 731\nWTF: 16074\nROFL: 326676\n代码计数包括输入/输出(即完整程序)。

0
0 Comments

问题的出现原因是作者想要寻找一个将Excel列名转换为数字的解决方案。解决方法是使用J语言编写一个短小的代码来实现这个转换。

J语言是一种面向数据分析的编程语言,以其简洁高效的特点而闻名。在这个问题中,代码的长度被限制在10个字符以内,所以需要使用最简洁的方法来解决。

解决方法的代码如下:26#.64-~av。这行代码的作用是将Excel列名转换为数字。具体而言,它的实现步骤如下:

1. 首先,使用av函数将输入的字符串转换为ASCII码的列表。例如,av'ABC'将返回65 66 67

2. 然后,使用64-~函数从列表的每个元素中减去64。这样,65 66 67将变为1 2 3

3. 最后,使用#.函数将列表转换为以26为基数的数字。例如,1 2 3将转换为731

这个解决方案的一个优点是代码非常简洁,只有10个字符。另一个优点是它可以处理字符串输入,而不仅仅是单个字符。这使得代码更加通用,并且更适合用于实际的数据处理任务。

这个问题的出现原因是作者想要将Excel列名转换为数字,并且希望找到一个简洁高效的解决方案。通过使用J语言编写一个长度为10个字符的代码,作者成功地解决了这个问题。这个解决方案不仅简洁高效,还可以处理字符串输入,具有一定的通用性。

0
0 Comments

这个问题的出现是因为有人想要找到一种简洁的方法,将Excel中的列名转换为对应的数字。解决方法是使用Perl语言编写一个11个字符的代码。

这个问题的解决方法如下:

$_=()=A..$_

代码的使用方法如下:

$ echo -n WTF | perl -ple '$_=()=A..$_'
16074

代码中使用了一些技巧来减少字符数。通过使用`-n`参数和`-p`参数,可以避免使用`print`语句,从而减少代码长度。另外,使用`say`代替`print`也可以减少代码长度。最后,使用`-l`参数可以自动处理输入的换行符,从而避免使用`chop`函数,进一步减少代码长度。

代码中的关键点是使用`A..$_`来生成一个从"A"开始,以输入的字符串为结束的字符串列表。在字符串上下文中,Perl会将`++`操作符解释为字母递增,所以例如`$_="AZ";$_++;print`会输出`BA`。

代码中还使用了`=()=`操作符,这个操作符会将表达式强制转换为列表上下文,并返回该表达式返回的元素数量。所以`$scalar = () = `相当于`; $scalar =`。此外,代码中还使用了一些缩写技巧,如使用`$_`代替`$n`,以及省略`print`的参数。

通过以上的优化,这个问题的解决方法被简化为了只有11个字符的Perl代码,并且可以通过命令行调用来实现将Excel列名转换为对应数字的功能。

0
0 Comments

在这段内容中,问题的出现原因是作者希望找到Excel中列名字母对应的数字。解决方法是使用Excel内置函数COLUMN()或者COL()来实现。

Excel中的COLUMN()函数用于返回单元格的列号,而COL()函数则是Portuguese Excel中的等价函数。这两个函数可以直接返回列号,不需要其他额外的操作。

作者认为这个解决方法非常聪明,尽管Excel并不是一种真正的编程语言,但是这个解决方法很巧妙。然而也有其他人提出了更短的解决方法,如Ruby语言的解决方案。

有人认为应该接受他自己提出的用J语言的解决方案,但是作者决定选择Excel的解决方法,因为它非常聪明。也有人认为Excel是一种真正的编程语言。

然而也有人指出,这个解决方法并不符合问题的要求,因为它只适用于特定的列名,而不是任意给定的列名。但是在Code Golf这种竞赛中,这种聪明且不符合要求的解决方法是被允许的。

这个问题的出现原因是为了找到Excel列名字母对应的数字,解决方法是使用内置函数COLUMN()或COL()。这个解决方法虽然聪明,但并不符合问题的要求,但在Code Golf竞赛中是被允许的。

0