76

チャレンジ

Excelの列文字列に相当する数値を出力する文字数による最短のコード。

たとえば、A列は1、2 B、というように続きます。を押すZと、次の列は、、というAAようABになります。

テストケース:

A:    1
B:    2
AD:   30
ABC:  731
WTF:  16074
ROFL: 326676

コードカウントには、入力/出力(つまり完全なプログラム)が含まれます。

4

67 に答える 67

339

Excel、9文字:)

仕事に適したツールを使用します。

=COLUMN()

= COLUMN()

于 2010-04-14T09:11:52.130 に答える
96

Perl 、36 34 33 31 30 171511 文字

$_=()=A..$_

使用法:

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

chop呼び出しを回避するためにecho-nを使用することにより、17に減少しました。

印刷の代わりにsayを使用することで15に削減されました。

sayの代わりに-pを使用すると、11に減少します。

説明: A文字列コンテキストで評価されA..$_、「A」で始まり、入力文字列まで文字列をインクリメントするリストを作成します。Perlは、アルファベットのコンテキストで文字列の++演算子(したがって..)を解釈するため、たとえば、を$_="AZ";$_++;print出力しますBA

=()=(別名「goatse」演算子)は、式をリストコンテキストで評価するように強制し、その式によって返される要素の数を返します。つまり、に$scalar = () = <expr>対応し@list = <expr>; $scalar = @listます。

于 2010-04-14T03:26:50.283 に答える
71

J171210 文字_

26#.64-~av

例:

26#.64-~av  'WTF'
16074

説明:

  • Jは右から左に解析します。
  • av引数内の各文字のASCIIインデックスのリストを返すため、たとえば。をav'ABC'返します65 66 67
  • 次に、動詞を使用して、そのリストの各要素から64を減算します64-~
  • #.次に、動詞を使用してリストをベース26に変換します。
于 2010-04-14T13:43:30.720 に答える
55

Brainf * ck、81文字(空白なし)

,[>>>[->>+++++[-<+++++>]<+<]>[-<+>]<<++++++++[<++++++++>-]<[<->-]<[>>>+<<<-],]>>>

説明

,[  // get character input into p[0], enter loop if it isn't null (0)
>>>[->>+++++[-<+++++>]<+<] // take what's in p[3] and multiply by 26, storing it in p[4]
>[-<+>] // copy p[4] back to p[3]
<<++++++++[<++++++++>-]< // store 64 in p[1]
[<->-]< // subtract p[1], which is 64, from the input char to get it's alphabetical index
[>>>+<<<-] // add p[0] to p[3]
,] // get another character and repeat
>>> // move to p[3], where our final result is stored

したがって、実際に数値を印刷用のASCII文字列に変換しなかったことにお気づきでしょう。それはおそらく楽しみを台無しにするでしょう。しかし、私は結果とともにポインターをセルに移動することに賛成したので、少なくともそれはマシンにとって有用です。

ねえ、あなたは何を知っていますか、私はC#を打ち負かしました!

于 2010-04-14T19:02:40.530 に答える
31

Ruby 1.8.7、53 50 46 442417 文字_

p ('A'..$_).count

使用法:

$ echo -n ROFL | ルビー-na.rb
326676
$ echo -n WTF | ルビー-na.rb
16074
$ echo -n A | ルビー-na.rb
1
于 2010-04-14T02:15:26.340 に答える
23

APL

13文字

値を入れてくださいx

x←'WTF'

次に、次のように計算します。

26⊥(⎕aV⍳x)-65

Jが私を倒した唯一の理由は括弧のためです。それらの必要性を回避するためにそれを再配置する方法があるべきだと私は思っていますが、それは長い一日でした。アイデア?

(ええと、30以上のキャラクターソリューションを使ったPerlプログラマーはとてもかわいいです!)

于 2010-04-15T03:21:20.010 に答える
14

Excel(不正行為ではない)、25文字

XFDまでサポート:

=COLUMN(INDIRECT(A1&"1"))

インストール:

  1. 数式をセルA2に入力します。

使用法:

  1. セルA1に列文字列を入力します。
  2. セルA2で結果を読み取ります。

54文字と多くの指示

ROFLもサポートします:

(A2)  =MAX(B:B)
(B2)  =IFERROR(26*B1+CODE(MID(A$1,ROW()-1,1))-64,0)

インストール:

  1. スプレッドシート全体をクリアします。
  2. 数式(A2)をセルA2に入力します。
  3. 数式(B2)をセルB2に入力します。
  4. 式(B2)を可能な限り下に入力します。

使用法:

  1. セルA1に列文字列を入力します。
  2. セルA2で結果を読み取ります。
于 2010-04-16T18:56:20.023 に答える
13

C #156146118 文字

using System.Linq;class P{static void Main(string[]a){System.Console.Write(
a[0].Aggregate(0,(t,c)=>(t+c-64)*26)/26);}}

ゴルフなし:

using System.Linq;
class P
{
    static void Main(string[] a)
    {
        System.Console.Write(a[0]
            .Aggregate(0, (t, c) => (t + c - 64) * 26) / 26);
    }
}
于 2010-04-14T03:09:45.810 に答える
12

Golfscript-16文字

[0]\+{31&\26*+}*


$ echo -n WTF | ./golfscript.rb excel.gs
16074
$ echo -n ROFL | ./golfscript.rb excel.gs
326676
于 2010-04-14T11:57:30.163 に答える
11

Haskell、50歳51 56chars

main=interact$show.foldl(\x->(26*x-64+).fromEnum)0

使用法:

~:166$ echo -n "ROFL" | ./a.out
326676
~:167$ echo -n "WTF" | ./a.out
16074
于 2010-04-14T13:03:18.027 に答える
9

Python、6449文字

s=0
for c in raw_input():s=26*s+ord(c)-64
print s

に置き換えraw_input()input()文字数を4減らすこともできますが、その場合、入力の前後に引用符を含める必要があります。

そして、これが47文字でクロックインするサブルーチンです。

f=lambda x:len(x)and 26*f(x[:-1])+ord(x[-1])-64
于 2010-04-14T04:52:20.873 に答える
9

k4(kdb +)、11文字

26/:1+.Q.A?

説明:

  • k4は右左を解析します
  • .Q.Ak4内で定義されます-それはベクトルです"ABC...XYZ"
  • ?検索演算子です-xarg内のyarg内のアイテムの最初の一致のインデックス
  • インデックスをオフセットするには+1
  • 26/:ベース26に変換する

1つの注意点-これは、リストされたタイプが渡された場合にのみ機能します。

  26/:1+.Q.A? "AD"
30

  26/:1+.Q.A? "WTF"
16074

しかし:

  26/:1+.Q.A? ,"A"
1
于 2010-04-16T20:33:12.953 に答える
8

JavaScript 1.8:66文字

function a(p)Array.reduce(p,function(t,d)t*26+d.charCodeAt()-64,0)

Javascript 1.8:72文字

function a(p)(t=0,p.replace(/./g,function(d)t=t*26+d.charCodeAt()-64),t)

JavaScript 1.6:83文字

function a(p){t=0;p.split("").map(function(d){t=t*26+d.charCodeAt(0)-64});return t}

JavaScript:95文字

function a(p){r=0;t=1;l=p.length;for(i=0;i<l;i++){r+=(p.charCodeAt(l-1-i)-64)*t;t*=26}return r}

JavaScript:105文字

function a(p,i){i=i||0;l=p.length;return p?(p.charCodeAt(l-1)-64)*Math.pow(26,i)+a(p.slice(0,l-1),i+1):0}

使用法:

a("A")        // 1
a("B")        // 2
a("AD")       // 30
a("ABC")      // 731
a("WTF")      // 16074
a("ROFL")     // 326676
于 2010-04-14T03:01:51.067 に答える
8

Powershell、42文字

[char[]]$args[($s=0)]|%{$s=$s*26+$_-64};$s
于 2010-04-14T08:45:19.517 に答える
6

Scala、30文字

print((0/:args(0))(_*26+_-64))" 

例:

C:\>scala -e "print((0/:args(0))(_*26+_-64))" AD
30
于 2010-04-16T18:08:18.777 に答える
5

C89、58文字

s;main(c){while(c=getchar()+1)s=26*s+c-65;printf("%d",s);}

入力(stdin)にはAZのみを含める必要があり、他の文字(改行を含む)は使用できません。

于 2010-04-14T04:33:28.557 に答える
5

概念の説明-Excelcification

良い。私はずっと前にhttp://aboutdev.wordpress.com/2009/12/19/excelcification-brain-teaser-code/でこれの私自身のバージョンをもう少し説明で書きました 。完全に最適化されたバージョンではありませんが!

ご参考までに。ベース26の算術演算はヘキサビゲシマルと呼ばれ、Excelの最大列はXFDであり、16383(最初のセルとして0を使用)に変換されます。これは偶然にも正確に2^14セルです。

なぜそれが2^14であるかを誰かが推測できますか?

于 2010-04-14T07:38:29.553 に答える
5

Common Lisp、103128文字

(defun x(s)(reduce(lambda(x y)(+(* 26 x)y))(map 'vector(lambda(b)(-(char-code b)(char-code #\A)-1))s)))
于 2010-04-15T01:45:27.740 に答える
5

C#、117111文字

Perl、Ruby、APLのようなものと比較してコンテストはありませんが、これまでに提供された他のC#/Javaの回答が改善されています。

これはホーナー法を使用します。

class C{static void Main(string[]a){int t=0;foreach(var c in a[0]){t=(t+c-64)*26;}System.Console.Write(t/26);}}
于 2010-04-16T14:54:50.633 に答える
4

Perl、34文字

map$\=26*$\-64+ord,pop=~/./g;print

いくつかの提案をしてくれたmobruleに感謝します。

于 2010-04-14T02:30:30.210 に答える
4

Ruby 1.9、21文字

p'A'.upto(gets).count

テスト:

$ echo -n A| ruby x.rb
1
$ echo -n WTF| ruby x.rb
16074
$ echo -n ROFL| ruby x.rb
326676
于 2010-04-14T07:04:09.720 に答える
4

C#、148文字

using System;class P{static void Main(string[]a){var r=0d;int j=0,i=a[0].
Length;while(i-->0)r+=(a[0][i]-64)*Math.Pow(26,j++);Console.WriteLine(r);}}

ゴルフなし:

using System;
class P
{
    static void Main(string[] a)
    {
        var r = 0d;
        int j = 0, i = a[0].Length;
        while (i-- > 0)
            r += (a[0][i] - 64) * Math.Pow(26, j++);

        Console.WriteLine(r);
    }
}
于 2010-04-14T17:48:46.873 に答える
4

Python-63文字

>>> f = lambda z:reduce(lambda x、y:26 * x + y、[ord(c)-64 for c in z])

>>> f('ROFL')

326676

于 2010-04-16T16:09:12.417 に答える
4

Common Lisp、86文字。

(defun z(s)(let((a 0))(map nil(lambda(v)(setf a(+(* 26 a)(digit-char-p v 36)-9)))s)a))
于 2010-04-16T16:48:45.817 に答える
4

Clojure:

user> (reduce #(+ (* 26 %1) %2) (map #(- (int %) 64) "AD"))
30
user> (reduce #(+ (* 26 %1) %2) (map #(- (int %) 64) "ROFL"))
326676

51文字に加えて、入力文字列の文字数。

于 2010-04-16T17:38:24.530 に答える
4

C:

int r=0;
while(*c)r=r*26+*c++-64;

文字列は「c」に格納され、値は「r」に格納されます。

于 2010-04-16T20:13:00.303 に答える
3

VBAでは98まで下げました

Sub G(s)
Dim i, t
For i = 0 To Len(s) - 1
    t = t + ((Asc(Left(Right(s, i + 1), 1)) - 64)) * ((26 ^ i))
Next
MsgBox t
End Sub
于 2010-04-14T07:39:53.970 に答える
3

ルビー、20文字

p('A'..$*[0]).count

使用法:

$ ruby a.rb ABC
731
于 2010-04-14T11:48:06.790 に答える
3

PHP-73文字

$n=$argv[1];$s=$i=0;while($i<strlen($n))$s=$s*26+ord($n[$i++])-64;echo$s;

使用法:

php -r '$n=$argv[1];$s=$i=0;while($i<strlen($n))$s=$s*26+ord($n[$i++])-64;echo$s;' AA

> 27
于 2010-04-16T14:21:59.827 に答える
3

Java:112124文字

class C{public static void main(String[]a){int r=0;for(int b:a[0].getBytes())r=26*r+b-64;System.out.print(r);}}
于 2010-04-16T14:23:33.993 に答える
3

Common Lisp、81文字

(defun y(s)(reduce(lambda(x y)(+(* 26 x)(-(char-code y)64)))s :initial-value 0))

新しいユーザーとして、自分の回答を投稿することはできますが、他の人の回答にコメントすることはできません。まあ、これを間違えたらお詫びします!

于 2010-04-16T20:01:04.337 に答える
3

MATLAB:24文字

polyval(input('')-64,26)

使用法:

>> polyval(input('')-64,26)
(after pressing enter) 'WTF'

ans =

       16074

注:文字列をに事前に保存すると、 16文字まで減らすことができますがx、不正行為だと思いました。

>> x = 'WTF'

x =

WTF

>> polyval(x-64,26)

ans =

       16074
于 2010-04-17T04:54:10.337 に答える
2

Perl、120文字

chomp($n=<>);@c=split(//,uc($n));$o=64;$b=0;$l=$#c;for($i=$l;$i>=0;$i--){$b+=((26**($l-$i))*(ord($c[$i])-$o));}print$b;

使用法:

vivin@serenity ~/Projects/code/perl/excelc
$ echo WTF | perl e.pl
16074
vivin@serenity ~/Projects/code/perl/excelc
$ echo ROFL | perl e.pl
326676

ここにあるPerlの達人の中には、もっと小さなものを思い付く人もいると思います。

于 2010-04-14T02:19:40.790 に答える
2

Perl、47文字(stdinから)

chop($l=<>);$_=A;$.++,$_++while$_ ne$l;die$.,$/
于 2010-04-14T02:19:45.283 に答える
2

JavaScript、93文字

with(prompt())for(l=length,i=0,v=i--;++i<l;)v+=(charCodeAt(l-1-i)-64)*Math.pow(26,i);alert(v)
于 2010-04-14T05:34:31.860 に答える
2

Lua、61文字

x=0 for c in(...):gfind(".")do x=x*26-64+c:byte()end print(x)
于 2010-04-14T15:35:57.053 に答える
2

wazoox:

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

これにより、新しい行が出力されるため、シェルで回答が読みやすくなります。

于 2010-04-16T16:09:06.100 に答える
2

Smalltalk、72

Smalltalk arguments first reverse inject:0into:[:o :e|o*26+e digitValue]
于 2010-04-16T17:53:13.160 に答える
2

PHP:5655文字

for($i='a';$i++!=strtolower($argv[1]);@$c++){}echo++$c;

PHP:大文字の場合のみ4443文字

for($i='A';$i++!=$argv[1];@$c++){}echo++$c;

于 2010-04-16T18:24:52.283 に答える
2

Applescript:188
これは188文字の必須のapplescriptです。これは、非冗長にするのが非常に難しい言語です。また、これまでの言語の中で最も長い答えでもあります。誰かがそれを短くする方法を知っているなら、共有してください。

実行時に  
 {o、c}を{0、0}に設定します  
 (sのアイテム1)の文字の逆にiを繰り返します  
  mを整数として26^cに設定します  
  cをc+1に設定します  
  oをo+((iのASCII番号)-64)*mに設定します  
 リピート終了  
エンドラン

使用法:
osascript /path/to/script.scpt ROFL

于 2010-04-16T19:11:39.543 に答える
2

PHP、38文字

for($a=A;++$c,$a++!=$argv[1];);echo$c;

使用法、例えば

php -r 'for($a=A;++$c,$a++!=$argv[1];);echo$c;' WTF
于 2010-04-17T01:22:16.113 に答える
2

APL:7文字

目的の文字列を変数wに格納します。

w←'rofl'

文字が小文字であると仮定します。

26⊥⎕a⍳w

文字が大文字であると仮定します。

26⊥⎕A⍳w

大文字と小文字が混在しているか不明(14文字ですが、改善される可能性があります):

26⊥⊃⌊/⎕a⎕A⍳¨⊂w
于 2012-05-19T09:39:06.187 に答える
1

php 29文字:


while($i++!=$t)$c++;echo$c+1;

  • register_globals=Onと仮定します
  • error_reporting=0と仮定
  • Webサーバー経由で呼び出す?i = A&t = ABC
于 2010-04-17T13:26:14.750 に答える
1

48文字のJosl

main 0 0 argv each 64 - swap 26 * + next print

例:

$ josl numequiv.j A
1
$ josl numequiv.j ABC
731
$ josl numequiv.j ROFL
326676

標準入力からの読み取り:

main 0 STDIN read-line each 64 - swap 26 * + next print
于 2010-04-18T01:13:22.400 に答える
1

Python

import string

letters = string.uppercase
colnum = lambda s: sum((letters.index(let)+1)*26**idx for idx, let in enumerate(s[::-1]))

print colnum('WTF') 
# 16074
print colnum('ROFL')
# 326676
于 2010-04-14T02:21:12.427 に答える
1

Java、164文字

public class A{public static void main(String[] z){int o=0,c=0;for(int i=z[0].length()-1;i>=0;i--,c++)o+=(z[0].charAt(i)-64)*Math.pow(26,c);System.out.println(o);}}

Java、177文字

public class A
{
public static void main(String[] z)
{
    int m,o=0,c=0;
    for(int i=z[0].length()-1;i>=0;i--,c++)
    {
        m=(int)Math.pow(26,c);
        o+=(z[0].charAt(i)-64)*m;
    }
    System.out.println(o);
}
}

(コマンドライン引数を介して)大文字の入力を想定しています。トリックのない明白なアプローチ。

于 2010-04-14T03:49:39.320 に答える
1

dc-20文字

(反対のことをします)

dc文字入力を処理できないため、反対のコードを記述しました。列番号を入力し、列名を出力します。

?[26~64+rd0<LP]dsLxP
dc exccol.dc
326676
 ROFL
于 2010-04-15T06:07:10.790 に答える
1

私のJavascriptソリューションはわずか82文字の長さで、基数36でInteger.parseIntを使用します。誰かがこれをこのスレッドのJavascriptセクションに追加できれば問題ありません。:-)

a=function(b){t=0;b.split('').map(function(n){t=parseInt(n,36)-9+t*26});return t};
于 2010-04-16T14:38:49.777 に答える
1

PHP:

<?$t=0;$s=str_split($argv[1]);$z=count($s);foreach($s as$v){$z--;$t+=(ord($v)-64)*pow(26,$z);}echo$t?>

使用法: php filename.php ROFL

出力: 326676

于 2010-04-16T14:46:14.590 に答える
1

Python(47文字)

reduce(lambda a,b:a*26+ord(b)-64,raw_input(),0)

大文字でのみ機能します

于 2010-04-16T19:49:41.657 に答える
1

Matlab38文字


大文字でのみ機能します。小文字でも機能する必要があるかどうかはわかりません(例ではありません)。

x=input('')'-64;26.^(size(x)-1:-1:0)*x

新しい行が37個だけカウントされない場合(セミコロンを省略):

x=input('')'-64
26.^(size(x)-1:-1:0)*x

Matlabは多くの言語に勝っています。誰がそれを期待するでしょう。

例:

Input: 'ROFL' (dont forget the '' )
Output: ans = 326676
于 2010-04-17T02:12:06.493 に答える
1

ファクター:47文字

リバース[26スワップ^スワップ64-*]マップインデックス合計

于 2010-04-17T03:14:54.410 に答える
1

プロローグ:49文字

c([]、A、A)。
c([H | T]、I、R):-JはH-64 + I * 26、c(T、J、R)です。

上記のコードを使用する:

| ?-c( "WTF"、0、R)。
R = 16074?
はい
| ?-c( "ROFL"、0、R)。
R = 326676?
はい
于 2010-04-17T07:48:51.980 に答える
1

Python:88文字

リスト内包表記の使用:

s=input()
print sum([((26**(len(s)-i-1))*(ord(s[i])-64)) for i in range(len(s))])
于 2010-04-17T22:21:32.607 に答える
1

OOBasic:178文字、インデント空白をカウントしない

改訂

このバージョンは、すべてのテストケースに合格しています。このナンバリングシステムを使ったスプレッドシートがあるという事実を「利用」しなければ、ゴルフはもっとうまくいくだろうと私は思う。それが特に役に立たない理由については、以下の元のバージョンのメモを参照してください。スコアを下げるのに一生懸命はしませんでした。

また、明らかな理由から、これはOOcalcスプレッドシートからマクロとして実行した場合にのみ機能することに注意してください。

Function C(st as String) as Long
    C = 0
    while len(st)
        C = C*26 + ThisComponent.Sheets(0).getCellRangeByName(left(st,1) &"1").CellAddress.Column+1
        st = mid(st,2)
    wend
End Function

オリジナル

OOBasic(OpenOffice Basic)、文字が多すぎます(124):

Function C(co As String) As Long 
    C = ThisComponent.Sheets(0).getCellRangeByName(co &"1").CellAddress.Column+1
End Function

制限:

  • coの最大値はAMJ(1024列)です。それより大きいものは、完全に情報のないエラーメッセージを伴うエラーになります。
    • この制限は、COLUMN()セル関数にも存在します。おそらく、これはOOCalcスプレッドシートの最大列数です。そこまでスクロールしたり、グーグルで調べたりする必要はありませんでした。

ノート:

  • 奇妙なことに、変数「co」に1文字の名前を付けることはできません。この背後にあるロジックが何であるかはわかりませんが、OOBasicを使用して十分な時間を費やした後、ロジックを探すのをやめ、物事のあり方を盲目的に受け入れ始めます(おそらく太陽を長時間見つめているため)。

とにかく、セルに、などを=C("A")入力すると、最初の4つのテストケースで機能します。=C("ABC")最後の2つはエラーになります。

于 2010-04-18T02:21:03.110 に答える
1

ストレートバッシュ

フィルター:97文字

{ read c;i=0;while [ $c ];do eval s=({A..${c:0:1}});i=$((i*26+${#s[@]}));c=${c:1};done;echo $i;}

使用法:

echo ROFL | { read c;i=0;while [ $c ];do eval s=({A..${c:0:1}});i=$((i*26+${#s[@]}));c=${c:1};done;echo $i;}
326676

機能:98文字

C(){ i=0;while [ $1 ];do eval s=({A..${1:0:1}});i=$((i*26+${#s[@]}));set -- ${1:1};done;echo $i;}

使用法:

C ROFL
326676

フィルタバージョンの説明:

read c;i=0;

列と合計を初期化します。

while [ $c ];do

列文字が残っている間

eval s=({A..${c:0:1}});

${c:0:1}列の最初の文字を返します。s=({A..Z})sをAからZまでの文字を含む配列にします

i=$((i*26+${#s[@]}));

$((...))算術評価をラップします。${#s[@]}配列$s内の要素の数です

c=${c:1};done;

${c:1}最初の後の$cの文字です。 donewhileループを終了します

echo $i

ええと、私は忘れます

より良いが疑わしい

5文字の「echo」を削除すると、「ROFL」の入力の出力は次のようになります。

326676: command not found

また、i=0現在のシェルにその変数が設定されていないことが確実な場合は、おそらく必要ありません。

于 2010-04-18T04:51:22.430 に答える
1

F#(37文字):

Seq.fold (fun n c -> int c-64+26*n) 0
于 2010-04-18T16:18:38.933 に答える
1

K 3.2(13文字)

26_sv -64+_ic

使用法:

  26_sv -64+_ic"ROFL"
326676

説明:

  • 上記のように、Kは右から左に評価されるため、_ic関数は右にあるものをすべて取り、それを整数値に変換します。これには、単一文字と文字ベクトルの両方が含まれます。
  • -64は、基本値のセットを取得する整数ベクトルの各項目に追加されます
  • _svは2つの引数を取ります。左側の引数は基数26で、右側の引数はオフセット値の整数ベクトルです。
于 2010-04-20T14:58:21.700 に答える
1

Excel VBA、19文字:

range( "WTF")。Column

于 2010-04-27T06:32:18.487 に答える
1

26文字のRubyソリューション

p ("A"..$*[0]).to_a.size

于 2010-07-01T06:36:35.163 に答える
0

Groovy:51文字

char[] a=args[0];t=0;for(i in a)t=26*t+i-64;print t

として呼び出す

groovy *scriptname* ROFL

また

groovy -e "char[] a=args[0];t=0;for(i in a)t=26*t+i-64;print t" ROFL

これは基本的にJavaと同じです。範囲とクロージャを使用することでいくつかの可能性を想像しますが、この例では何も思い浮かびませんでした。他の誰かがこれを短くする方法を見ますか?

残念ながら、クロージャー付きのよりグルーヴィーな外観のバージョンは少し長くなります。

t=0;args[0].toCharArray().each{t=t*26+it-64};print t
于 2010-04-17T04:25:36.523 に答える
0

実際のVBA、スペースなしで216

私も本物のゴルフに失敗します。

Private Sub CB1_Click()
Dim C, S
Range("A1").Select
Do
S = Len(ActiveCell)
x = 0
C = 0
Do
C = (Asc(Mid(ActiveCell, (S - x), 1)) - 64) * (26 ^ x) + C
x = x + 1
Loop Until x = S
ActiveCell.Offset(0, 1) = C
ActiveCell.Offset(1, 0).Activate
Loop Until ActiveCell = ""
End Sub

列Aを入力に使用し、列Bに出力し、VBコマンドボタンのクリックで実行します。= D

于 2010-04-16T23:50:39.773 に答える
0

エラン、53/78

シェル、53文字:

F=fun(S)->lists:foldl(fun(C,A)->A*26+C-64end,0,S)end.

モジュール、78文字:

-module(g).
-export([f/1]).
f(S)->lists:foldl(fun(C,A)->A*26+C-64end,0,S).
于 2010-04-17T00:37:44.303 に答える
0

F#92文字:)


let e2n(c:string)= c |> Seq.map(fun x->(int)x --64)|> Seq.reduce(fun ea-> a * 26 + e)

于 2010-04-17T01:02:21.837 に答える
0

Go:106文字

それはすべての言語の中で最短ではありません。ただし、C、C ++、Java、およびC#の中で最も短い場合があります。

package main
import("os"
"fmt")
func main(){t:=0
for _,c := range os.Args[1]{t=t*26+c-64}
fmt.Println(t)}

フォーマットされたバージョン:

package main

import (
    "os"
    "fmt"
)

func main() {
    t := 0
    for _, c := range os.Args[1] {
        t = t*26 + c - 64
    }   
    fmt.Println(t)
}
于 2010-04-17T05:45:22.330 に答える
-1

Excel-99文字

配列数式として入力-Excelの加算{}はカウントしていません

=SUM((CODE(MID(A1,ROW(INDIRECT("1:" & LEN(A1))),1))-64)*26^(LEN(A1)-ROW(INDIRECT("1:" & LEN(A1)))))

于 2010-04-17T03:55:04.297 に答える
-4


演算子が次のように定義された新しい言語はどうですか

-EXCELの= COLUMN()を文字列化された数値として返します

-文字列で読み取る

-文字列を書き出す

次に、それを行うためのプログラムは

、#。

于 2010-04-16T13:40:20.780 に答える