Einführung
Im Land von [Coolen Namen hier einfügen] kaufen die Leute nichts mit Geld, weil jeder eine schwere Allergie gegen Papier hat. Sie bezahlen sich mit Worten! Aber wie ist das Nun, sie geben jedem Buchstaben Zahlenwerte:
a=1,b=2,c=3,etc.
(Mit einigen anderen Sonderregeln, die später beschrieben werden)
In dieser Herausforderung besteht Ihre Aufgabe darin, den Wert von Sätzen zu berechnen.
Herausforderung
Sie werden eine Eingabe machen, die ein Satz ist. Sie können davon ausgehen, dass die Eingabe keine Zeilenumbrüche oder Leerzeichen enthält. Die Herausforderung besteht darin, den Wert des Satzes nach folgenden Regeln zu berechnen:
a=1,b=2,c=3,etc.
- Ein Großbuchstabe hat den 1,5-fachen Wert des entsprechenden Kleinbuchstabens
H=h*1.5
Also das Wort
cab
Wäre es wert c+a+b = 3+1+2 = 6
Aber das Wort Cab
mit einem Großbuchstaben c wäre wert. (c*1.5)+a+b = 4.5+1+2 = 7.5
Wenn Ihre Programmeingabe "Cab" wäre, würde Ihr Programm 7.5 ausgeben
- Alle nicht alphabetischen Zeichen sind 1 wert.
Dies ist Codegolf, daher gewinnt die kürzeste Antwort in Bytes. Viel Glück!
7.0
statt7
?Antworten:
Python 3,
716561 BytesDurch einen außergewöhnlichen Zufall
(ord(s)-64)*1.5
ist es gleichord(s)*1.5-96
, also müssen wir nur-96
einmal schreiben . Der Rest ist ziemlich direkt.Bearbeiten: Einige Bytes mit Exponentiation-Spielereien abgeschabt.
quelle
Python 2,
120102 BytesBearbeiten:
Erste Vorlage, nicht so golfen, aber man muss irgendwo anfangen.
quelle
for
dem Verständnis entfernen .e
als Parameter festlegen, der das Ergebnis zurückgibt.Pyth,
2320 BytesLive-Demo und Testfälle.
Erläuterung
Nicht wenige kreative Verwendungen von Booleschen Werten als Ganzzahlen hier.
23-Byte-Version:
Live-Demo und Testfälle.
quelle
.
(alle nicht-alphabetischen Zeichen sollten 1 wert sein)Julia, 63 Bytes
Dies summiert einfach ein Array, das über ein Verständnis aufgebaut ist, das die Zeichen in der Eingabezeichenfolge durchläuft und an ihren Codepunkten eine Arithmetik durchführt.
Ungolfed:
Vielen Dank an Glen O für die Korrektur des Ansatzes.
quelle
Feststecken ,
8543 BytesYeah yeah, ich weiß, Python ist kürzer.: PIch verwende zum größten Teil die gleiche Logik wie Tryth.Erläuterung:
quelle
Python 2, 101 Bytes
quelle
CJam, 30 Bytes
So funktioniert das (wow, ich habe noch nie eines davon gemacht!):
quelle
F #, 168 Bytes
Noch nicht richtig golfen, aber ein Anfang:
Hier eine lesbarere Version:
quelle
K 30
.
Wie es funktioniert:
.Q`a`A
generiert zwei Listen mit Klein- und Großbuchstaben!:1+til 26
ordnet jeden Buchstaben in jeder Liste von 1 bis 26 zuMultiplizieren Sie die erste Liste mit 1, die letzte mit 1,5
Mit in ein einzelnes Wörterbuch zerlegen
,/
Ordnen Sie die Zeichen in der Eingabezeichenfolge den entsprechenden Ergebnissen zu
Füllen Sie alle Nullwerte mit 1
Summe
quelle
JavaScript, 121 Byte
js-Datei mit node aufrufen (node index.js "Cab")
quelle
MATLAB, 68 Bytes
Dies nutzt die Tatsache aus, dass Zeichen automatisch in Ganzzahlen umgewandelt werden und dass Boolesche Werte als Ganzzahlen summiert werden können.
quelle
Perl 5, 77 Bytes
Getestet am
v5.20.2
.quelle
Javascript (ES6),
85828067 BytesIch mag solche schnellen und einfachen Herausforderungen. :)
Dies funktioniert, indem jedes Zeichen als Basis-36-Zahl interpretiert wird, mit 1 oder 1,5 multipliziert wird, wenn es größer als 9 (
a-z
oderA-Z
) ist, und stattdessen 1 gegeben wird, wenn dies nicht der Fall ist. Wie immer sind Vorschläge willkommen!quelle
toString(36)
.toString(36)
das hier zutrifft. Meinst du so etwas wieparseInt(c,36)
? Eigentlich könnte das kürzer sein ...([c,...t])=>c?(parseInt(c,36)-9||2/3)*(c>'Z'||1.5)+f(t):0
Python 3:
8685 Bytesquelle
C # 81 Bytes
Mit (LinqPad) anrufen:
quelle
PHP, 102 Bytes
Anwendungsbeispiel:
Nichts Besonderes im Algorithmus. Jedes Zeichen aus dem Argument (
$argv[1]
) des ersten Programms wird gegenA
undZ
danna
und geprüftz
und entsprechend gezählt.quelle
PowerShell, 108 Bytes
Anständig wettbewerbsfähig, ich bin ein bisschen überrascht. Nicht allzu schäbig, wenn man keinen kompakten ternären Operator hat.
Code:
Erklärt:
quelle
C 85 Bytes
Die
!!
vorislower
undisupper
sind notwendig, da die von diesen Funktionen zurückgegebenen Booleschen Werte nicht garantiert sind0
und der1
wahre Wert1024
tatsächlich auf meinem System war!quelle
Süßigkeit ,
2622 Bytes(~ "a" <{A # 64-2 / 3 * | A # 96-} h) ZVielen Dank an @Tryth für den Faktorisierungstrick!
Der Aufruf erfolgt mit dem Flag -I wie in
candy -I "Cab" -e $prg
Der Code in seiner langen Form ist:
quelle
Prolog (SWI), 101 Bytes
Code:
Erklärt:
Beispiel:
quelle
PHP, 75 Bytes
Laufen Sie als Pipe mit
-nr
oder versuchen Sie es online .quelle