Die Herausforderung
Der kürzeste Code nach Zeichenanzahl, der das numerische Äquivalent einer Excel-Spaltenzeichenfolge ausgibt.
Zum Beispiel ist die A
Spalte 1, B
ist 2 usw. Sobald Sie drücken Z
, wird die nächste Spalte AA
, dann AB
und so weiter.
Testfälle:
A: 1
B: 2
AD: 30
ABC: 731
WTF: 16074
ROFL: 326676
Die Codeanzahl umfasst die Eingabe / Ausgabe (dh das vollständige Programm).
Antworten:
Perl,
3634333130171511 ZeichenVerwendung:
Reduziert auf 17 durch Verwendung von echo -n, um einen
chop
Anruf zu vermeiden .Reduziert auf 15 durch Verwendung von say anstelle von print.
Reduziert auf 11 durch Verwendung von -p anstelle von say.
Erläuterung:
A
Wird im Zeichenfolgenkontext ausgewertet und erstelltA..$_
eine Liste, die bei "A" beginnt und die Zeichenfolge bis zur Eingabezeichenfolge erhöht. Perl interpretiert den++
Operator (und damit..
) für Zeichenfolgen in einem alphabetischen Kontext, z. B. für$_="AZ";$_++;print
AusgabenBA
.=()=
(auch bekannt als "goatse" -Operator ) erzwingt die Auswertung eines Ausdrucks im Listenkontext und gibt die Anzahl der von diesem Ausdruck zurückgegebenen Elemente zurück, dh$scalar = () = <expr>
entspricht@list = <expr>; $scalar = @list
.quelle
$_
oder$` instead of
$ n` und rufen Sieprint
ohne Argumente auf.print
zusay
und fallen noch 2 Zeichen :)Excel, 9 Zeichen :)
Verwenden Sie das richtige Werkzeug für den Job:
quelle
=COL()
. 6 Zeichen. (Siehe dolf.trieschnigg.nl/excel/excel.html )ROFL
.J ,
171210 ZeichenBeispiel:
Erläuterung:
av
gibt eine Liste der ascii - Indizes von jedem der Zeichen in seinem Argument, so zum Beispielav'ABC'
zurückkehrt65 66 67
.64-~
.#.
Verb in Basis 26 .quelle
Brainf * ck, 81 Zeichen (kein Leerzeichen)
Erläuterung
Sie werden also feststellen, dass ich den numerischen Wert zum Drucken nicht in eine ASCII-Zeichenfolge konvertiert habe. Das würde wahrscheinlich den Spaß ruinieren. Aber ich habe den Gefallen getan, den Zeiger mit dem Ergebnis auf die Zelle zu bewegen, also ist es zumindest für die Maschine nützlich.
Hey, was weißt du, ich habe C # geschlagen!
quelle
Ruby 1.8.7,
535046442417 ZeichenVerwendung:
quelle
p (
und esp(
ist anders :(echo -n ...
Sie, damit Sie die.chop
APL
13 Zeichen
Geben Sie den Wert ein in
x
:Berechnen Sie es dann mit:
Der einzige Grund, warum ich mich geschlagen habe, sind die Klammern. Ich denke, es sollte eine Möglichkeit geben, es neu zu ordnen, um die Notwendigkeit für sie zu vermeiden, aber es war ein langer Tag. Ideen?
(Heh, du Perl-Programmierer mit deinen über 30 Zeichenlösungen bist so süß!)
quelle
Excel (nicht betrügen), 25 Zeichen
Unterstützt bis zu XFD:
Installation:
Verwendung:
54 Zeichen plus viele Anweisungen
Unterstützt ROFL auch:
Installation:
Verwendung:
quelle
C #
156146118 ZeichenUngolfed:
quelle
Console.Write
stattWriteLine
?Golfscript - 16 Zeichen
quelle
Haskell, 50
5156ZeichenVerwendung:
quelle
Python,
6449 ZeichenSie können auch ersetzen
raw_input()
mitinput()
zu reduzieren , die Zeichenanzahl von 4, aber das erfordert dann die Eingabe in Anführungszeichen es enthalten.Und hier ist eine Unterroutine mit 47 Zeichen:
quelle
f=lambda x:len(x)and 26*f(x[:-1])+ord(x[-1])-64
k4 (kdb +), 11 Zeichen
Erläuterung:
.Q.A
ist in k4 definiert - es ist der Vektor"ABC...XYZ"
?
ist der Suchoperator - der Index der ersten Übereinstimmung für Elemente im y-Argument innerhalb des x-Arg26/:
zur Basis 26 konvertierenEine Einschränkung - dies funktioniert nur, wenn aufgelistete Typen übergeben werden:
aber:
quelle
Powershell, 42 Zeichen
quelle
JavaScript 1.8: 66 Zeichen
Javascript 1.8: 72 Zeichen
JavaScript 1.6: 83 Zeichen
JavaScript: 95 Zeichen
JavaScript: 105 Zeichen
Verwendung:
quelle
(t?g*26:0)
Teil umgestalten .string#replace
Scala, 30 Zeichen
Beispiel:
quelle
C89, 58 Zeichen
Die Eingabe (stdin) darf nur AZ enthalten, andere Zeichen (einschließlich Zeilenumbrüche) sind nicht zulässig.
quelle
getchar()
kehrt< 0
auf EOF zurück; EOF ist nicht als -1 definiert, aber es ist üblich.c=getchar()+1
von(c=getchar())>=0
und65
zu64
). Dies sollte jedoch in fast jeder C-Implementierung funktionieren.Erläuterung der Konzepte - Excelcification
Nett. Ich habe vor langer Zeit meine eigene Version mit etwas mehr Erklärung unter http://aboutdev.wordpress.com/2009/12/19/excelcification-brain-teaser-code/ geschrieben . Obwohl es keine ganz optimierte Version ist!
Zu Ihrer Information. Die Basis-26-Arithmetik heißt hexavigesimal und die maximale Spalte von Excel ist XFD , die in 16383 konvertiert wird (wobei 0 als erste Zelle verwendet wird), was zufällig genau 2 ^ 14 Zellen sind .
Kann jemand erraten, warum es 2 ^ 14 ist?
quelle
26^n
für die Positionn
(mitn = 0
für den Buchstaben ganz rechts) multiplizieren , funktioniert alles wie gewohnt.Common Lisp, 103
128Zeichenquelle
C #,
117111 ZeichenKein Wettbewerb im Vergleich zu Perl, Ruby und APL, aber eine Verbesserung gegenüber den anderen bisher gegebenen C # / Java-Antworten.
Dies verwendet die Horner-Regel .
quelle
Perl, 34 Zeichen
Vielen Dank an mobrule für einige Vorschläge.
quelle
pop=~/./g
anstattsplit//,$ARGV[0]
Sie können das$_
imord
Anruf weglassen . Sie können$` instead of
$ s` verwenden und dann einfach sagenprint
.C #, 148 Zeichen
Ungolfed:
quelle
Python - 63 Zeichen
quelle
Clojure:
51 Zeichen plus die Anzahl der Zeichen in der Eingabezeichenfolge.
quelle
C:
Die Zeichenfolge wird in 'c' gespeichert, der Wert in 'r'.
quelle
Ruby 1.9, 21 Zeichen
Tests:
quelle
echo A |
, es sollte seinecho A|
echo -n
wie andere und loswerdenchop
.echo -n
als würde es unter Windows nicht funktionieren.Common Lisp, 86 Zeichen.
quelle
Java: 112
124Zeichenquelle
Common Lisp, 81 Zeichen
Komisch, dass ich als neuer Benutzer meine eigene Antwort posten kann, aber nicht die eines anderen kommentieren kann. Na ja, entschuldige, wenn ich das falsch mache!
quelle
MATLAB: 24 Zeichen
Verwendung:
Hinweis: Sie können es auf 16 Zeichen reduzieren, wenn Sie die Zeichenfolge vorab speichern
x
, aber ich dachte, es wäre ein Betrug:quelle
PHP - 73 Zeichen
Verwendung:
quelle