Excel - 99 символов
Введите как формулу массива - я не считаю добавление Excel {}
= SUM ((CODE (MID (A1 , ROW (INDIRECT ("1:" & LEN (A1))), 1)) - 64) * 26 ^ (LEN (A1) -ROW (INDIRECT ("1:" & LEN (A1)))))
Я тоже терплю поражение в реальном гольфе.
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
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)
}
Elang, 53/78
Shell, 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).
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
как насчет нового языка
{{1} } с операторами, определенными как
# - вернет = COLUMN () EXCEL как строковое число
, - прочитанное в строке
. - напишите строку
, затем программа, которая должна это сделать, -
, #.