Addiere die Buchstaben eines Wortes

17

Mein Vater ist ein pensionierter Lehrer, und er gab kombinierte Rechtschreib- und Mathematikprüfungen, bei denen der Schüler ein Wort buchstabierte und das Wort dann durch Aufsummieren der Buchstaben „bewertete“, wobei a = 1, b = 2 usw. (zB cat = 3 + 1 + 20 = 24). Dies machte es einfacher, die Tests zu bewerten, da er nur nach falschen "Punktzahlen" anstatt nach falsch geschriebenen Wörtern suchen musste und den zusätzlichen Vorteil hatte, zwei Fertigkeiten gleichzeitig zu testen.

Er beauftragte einen Freund von mir, ein Programm zu schreiben, das ihm viele Worte einbrachte, damit er lange Antwortschlüssel ohne Fehler generieren konnte. Dieses Problem ist von diesem Programm inspiriert.

Bedarf:

  1. Akzeptieren Sie jedes Wort mit Groß- und Kleinbuchstaben
  2. Gibt einen Fehler für Sonderzeichen zurück, z. B. Leerzeichen, Bindestriche, @ ^% # usw.
  3. a = 1, b = 2, ... und A = 1, B = 2, ...
  4. Drucken Sie die Punktzahl des Wortes
  5. (Optional) Vergewissern Sie sich nach dem Bewerten, dass sich das Wort in einem Wörterbuch befindet, und drucken Sie eine Warnung aus, falls dies nicht der Fall ist.
  6. Kein Importieren eines externen Buchstaben-> Zahlenwörterbuchs. Sie müssen es selbst generieren.

Jede Sprache ist akzeptabel. Dies ähnelt dem " Digital Root Battle" , ist jedoch viel einfacher.

Zach
quelle
2
Soll das ein Codegolf sein?
Peter Taylor
2
@Zach Mit dem code-golfTag.
Lowjacker
2
Hat sich dein Vater überhaupt die Mühe gemacht, das "Ich vor E, außer nach C" -Regel zu lehren?
Nathan Merrill
2
Ja, nur Ergebnisse überprüfen? Ich würde Katze buchstabieren als aaaaaaaaaaaaaaaaaaaaaaaa. Vater: Punktzahl ist 24? Das ist richtig!
ericw31415
3
@ ericw31415 Jede Hashfunktion hat Kollisionen ;-). Bisher hat noch keiner seiner Schüler diesen Angriffsvektor ausprobiert
Zach

Antworten:

8

Golfscript - 23 Zeichen

0\{.31&.(.26%=@64///+}/

Stellen Sie sicher, dass die Eingabe keine nachgestellten Zeilenumbrüche enthält (z echo -n. B. use ).

Nabb
quelle
Wir haben einen neuen Gewinner!
Zach
Im Allgemeinen sollte die externe Filterung irgendwie in die Zeichenanzahl einbezogen werden (Strg-F-externe Filterung), obwohl ich davon ausgehe, dass es nur zwei zusätzliche Zeichen gibt, auf die verzichtet werden kann.
Jesse Millikan
2
@Jesse: Gilt echo -nwirklich nicht als externe Filterung. Die von Ihnen verknüpfte Antwort deutet darauf hin, dass es sich um ein gültiges Eingabeformular handelt.
Nabb
10

Brainf *** (100)

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

Ich muss allerdings zugeben, dass dies nicht allen Anforderungen entspricht. Erstens werden nur Großbuchstaben akzeptiert und das Wort muss mit einem Tabulator abgeschlossen werden. Es hat undefiniertes Verhalten für ungültige Zeichen und löst keinen Fehler aus. Es zeigt die Summe der Buchstaben als ASCII-Zeichen an. Wenn das Wort beispielsweise "HELLO" ist (8 + 5 + 12 + 12 + 15 = 52), wird das Zeichen "4" angezeigt, das ASCII-Zeichen für 52. Dies bedeutet auch, dass das Programm ausfällt, wenn Die Summe ist mehr als 255.

Aber ansonsten funktioniert es einwandfrei. Gib mir eine Pause, mein Gehirn kann nur kleine Dosen von ... na ja, weißt du.

Peter Olson
quelle
Warum das Wort mit einem Tabulator anstelle einer neuen Zeile beenden?
Lowjacker
@ Lowjacker Weil ich angenommen habe, dass TAB einfacher ist, als sich Gedanken über \noder \r\noder zu machen \n\r. Und wenn ich Newline verwenden würde, hätte ich keine schöne runde Zahl wie 100 als Zeichenanzahl.
Peter Olson
Was würde passieren, wenn Sie eine große Dosis bekommen?
Mateen Ulhaq
8

Python ( 65 64)

print sum(['',ord(i)-64]['@'<i<'[']for i in raw_input().upper())

Dies führt zu einem Fehler, wenn das Wort keine Buchstaben enthält, jedoch keine hilfreichen oder informativen Zeichen. (Edit: Spitze des Hutes, um für den Indexierungstrick zu stehlen.)


quelle
1
print sum(['',ord(i)-64]['@'<i<'[']for i in raw_input().upper())rasierte ein paar Zeichen.
st0le
Eigentlich nur ein Char. : - \
st0le
Speichern Sie 4 Zeichen mit input; zwingt Benutzer, Anführungszeichen um Eingabezeichenfolgen zu setzen, aber "benutzerfreundlich" und "ungefährlich" sind nicht in der Spezifikation enthalten!
jscs
Nun, ändern Sie es einfach auf Python 3! raw_inputinput
Oleh Prypin
print sum([i,ord(i)-64]['@'<i<'[']for i in raw_input().upper()) ein weiteres Byte rasiert
Alexander Nigl
8

Ruby, 43 Zeichen

$_=gets.upcase;p~/[^A-Z]/?_: $_.sum-64*~/$/

Die dabei generierte Fehlermeldung ist jedoch nicht gerade hilfreich. Bei beiden hier aufgeführten Lösungen wird davon ausgegangen, dass die Eingabe keinen nachgestellten Zeilenumbruch aufweist echo -n. Verwenden Sie daher zum Testen diese .

Ruby, 76 Zeichen mit Wörterbuchprüfung

l=STDIN.gets;$_=l.upcase;p~/[^A-Z]/?_: $_.sum-64*~/$/;[*$<].index(l)||$><<?W

Die Warnmeldung besteht aus dem Einzelzeichen "W". Der Pfad zum Wörterbuch muss über ARGV angegeben werden. Anwendungsbeispiel:

$ echo -n asd | ruby addletters.rb /usr/share/dict/words
24
W
$ echo -n cat | ruby addletters.rb /usr/share/dict/words
24
Ventero
quelle
2
Sie können 9 Zeichen in der Wörterbuchprüfversion zerschneiden, indem Sie die Fehlermeldung als Ausrufezeichen kennzeichnen.
Peter Olson
Sie erhalten einen Trostpreis für den kürzesten Eintrag mit einem Wörterbuchcheck. Weiter so!
Zach
Warum wurde die Wörterbuchprüfung vorgeschlagen, wenn sie Ihnen keine wirklichen Vorteile bringt (im Gegenteil, sie hat nur den Code aufgebläht)?
Helfer-Methode
5

Python 2.6 (72 Zeichen) Ohne Wörterbuchprüfung

print sum(map(" abcdefghijklmnopqrstuvwxyz".index, raw_input().lower()))

Python 2.6 (178 Zeichen *) Mit Wörterbuchprüfung

w=raw_input().lower()
print sum(map(" abcdefghijklmnopqrstuvwxyz".index, w))
if w not in open('/usr/share/dict/american-english').read().split():
 print('Word not in dictionary')

* Kann mit einer weniger hilfreichen Fehlermeldung auf 156 gesenkt werden. :-)

Vielen Dank an alle Kommentatoren, die dazu beigetragen haben, dies zu verbessern.

John
quelle
Möglicherweise möchten Sie das sumeingebaute Element mit einem Generatorausdruck anstelle einer forSchleife verwenden. Damit können Sie ein paar Zeichen abschneiden (~ 17).
@jloy: Danke, dass du darauf hingewiesen hast.
John
Die Klammern auf dem Ausdruck können entfernt werden
st0le
Es sieht so aus, als würden Sie anur ein einziges Mal verwenden. Verwenden Sie also das Literal selbst ... "0abc....z".index(i)wird gleichwertig funktionieren.
st0le
Das 0in deiner Wertung ist clever, aber es bedeutet auch, dass cat0es fehlerfrei akzeptiert wird, was meiner Meinung nach nicht richtig ist. Welches ist zu schlecht, da es Ihnen passieren würde es ermöglichen , map(a.index,w)um sumstatt (Substitution der wörtlichen für awie st0le schon sagt).
4

Perl (52) (48)

noch mehr golfen dank timwi

perl -lpe "($w=uc)=~/[^A-Z]/&&die;$w=~s/./$_-=64-ord$&/ge"

chinesischer Perl Goth
quelle
Sie vermissen die -eFlagge dort.
Lowjacker
1
Sie sollten mindestens die Flags pund des lInterpreters in Ihre Zeichenanzahl aufnehmen. Siehe diese Diskussion auf Meta.
Ventero
syntax error at -e line 1, near "(=" Execution of -e aborted due to compilation errors.Was mache ich falsch?
Benutzer unbekannt
Wenn Sie mit Unix arbeiten, ändern Sie doppelte Anführungszeichen in einzelne
chinese perl goth
@Timwi: 'Akzeptiere jedes Wort mit Groß- und Kleinbuchstaben' ist in den falschen Thread gegangen, sorry. Ich habe es jetzt gelöscht. @chinese: Ja, danke, mit einfachen Anführungszeichen ist es in Ordnung. Solange ich mich auf ASCII-Eingaben beschränke. :)
Benutzer unbekannt
4

Python (80)

w=raw_input().lower()
s=0
for l in w:s+=range(97,123).index(ord(l))+1
print s

Python v2 (65, aber char wird akzeptiert)

print sum(map(range(96,123).index,map(ord,raw_input().lower())))

v3 (60 Zeichen, @ werden akzeptiert, aber nicht gezählt, danke jloy)

print sum(map(range(64,91).index,map(ord,input().upper())))
OneOfOne
quelle
TIPP: ES GIBT EINE MÖGLICHKEIT, EINEN CHAR VON IHREN LÖSUNGEN ZU ENTFERNEN. :)
2
@jloy Was für ein hilfreicher "Hinweis". ;)
Mateen Ulhaq
4

Scala: 59 Zeichen, 7 davon Nutzlast, kein Diktat:

(0/:"Payload".map(c=>if(c.isLetter)(c-'A')%32 else-999))(_+_)
67

Bisher kein Wörterbuch. Negatives Ergebnis bedeutet: Negativ!

(0/:"Pay!wall?".map(c=>if(c.isLetter)(c-'A')%32 else-999))(_+_)   
-1915

Übrigens: Fasst deutsche Umlaute mit Anmut an:

(0/:"Müllrößchen".map(c=>if(c.isLetter)(c-'A')%32 else-999))(_+_)
155
Benutzer unbekannt
quelle
Wow, weniger Zeichen als die Perl-Version (und noch besser lesbar).
Helfer-Methode
Ich habe SHiNKiROUs und chinesis-Perl-Lösung ausprobiert, aber sie haben bei mir nicht funktioniert. Gespeichert als alpha.plund gestartet von perl alpha.pl. Gehen sie nur mit Ascii um? Nun - bei Perl ist so ein altes Biest ... :)
Benutzer unbekannt
Perl und Unicode sind ein großes Durcheinander. Sie müssen sie wahrscheinlich so perl -M5.010 alpha.ploder so ausführen .
Peter Taylor
Ich habe gehört, dass ich unter Linux einfache statt doppelte Anführungszeichen brauche, und das hat funktioniert, danke.
Benutzer unbekannt
4

Java + Google Guava-Bibliotheken, 347 Zeichen, mit Wörterbuchprüfung

Unlesbar 1 lange String-Version :-)

import java.io.*;import com.google.common.base.*;import com.google.common.io.*;class C{public static void main(String[]a)throws Exception{int s=0;for(int c:a[0].toUpperCase().toCharArray()){assert(c>64&&c<91);s+=c-64;}String d=Files.toString(new File(a[1]),Charsets.UTF_8);if(StringUtils.containsIgnoreCase(d,a[0]))System.out.println("w");System.out.println(s);}}

Für Menschen lesbare Version (Art :-))

import java.io.*;

import com.google.common.base.*;
import com.google.common.io.*;

class C {
    public static void main(String[] a) throws Exception {
        int s=0;

        for(int c : a[0].toUpperCase().toCharArray()) {
            System.out.println(c);
            assert(c > 64 && c < 91);
            s += c - 64;
        }

        String d = Files.toString(new File(a[1]), Charsets.UTF_8);

        if (d.contains(a[0])) System.out.println("w");

        System.out.println(s);
    }
}

Der Wörterbuchpfad wird jetzt über übergeben a[1]. Damit Zusicherungen funktionieren, müssen Sie das -eaFlag verwenden (+3 Zeichen mehr). Für das Wörterbuch wurde das Diktat /usr/share/dict/words(sollte auf den meisten * nix-Systemen verfügbar sein) verwendet.

Hilfsmethode
quelle
Bis jetzt bist du der einzige mit einem Wörterbuchcheck, also +1
Zach
eine Linie? das ist auf diese Weise nicht besonders lesbar, obwohl ich vermute, dass es Zeichen spart
Nate Koppenhaver
Ich werde eine besser lesbare Lösung hinzufügen (und auch eine kürzere, die Google Guava verwendet, um den Code für Boilerplates zu reduzieren).
Helfer-Methode
Sie erlauben nur ASCII, verwenden aber Charset.UTF-8?
Benutzer unbekannt
1
Weil der String UTF-8kürzer ist als die anderen Zeichensätze :-).
Helfer-Methode
4

Python 3, 95 Zeichen mit Wörterbuch

d=input().lower()
print(d in open("d").read()and sum(['',ord(c)-96]['`'<c<'{']for c in d)or'f')

Das Wörterbuch muss sich in einer Datei mit dem Namen d befinden.

Python 3, 61 ohne Wörterbuch, aber gestohlene Idee

print(sum(['',ord(c)-96]['`'<c<'{']for c in input().lower()))
cemper93
quelle
3

Perl (71)

($a)=lc<>;$a=~/[^a-z]/i&&die;$x+=ord$_ for split//,$a;die$x-96*length$a;
Ming-Tang
quelle
3

VB.NET, 84 82 73 71

Console.Write(Console.ReadLine.Sum(Function(c)Asc(Char.ToUpper(c))-64))


Bearbeiten: Mit der Validierung ist:

Dim r=Console.ReadLine
Console.Write(If(r.All(AddressOf Char.IsLetter),r.Sum(Function(c)Asc(Char.ToUpper(c))-64),"Invalid input."))

129 Zeichen. In welchem ​​Fall:

C # 118

var r=Console.ReadLine();Console.Write(r.All(char.IsLetter)?r.Sum(c=>char.ToUpper(c)-64).ToString():"Invalid input.");
Ry-
quelle
1
Dies validiert die Eingabe nicht.
Lowjacker
Hoppla!
Warte
3
Ich denke, Sie sollten vollständige Programme bereitstellen. Ihre C # -Lösung wird nicht kompiliert. Sie müssen es in eine Main-Methode innerhalb einer Klassendeklaration einfügen und alle Zeichen zählen.
Timwi
1
Nein, da dieser Code nichts bewirkt und es nicht fair ist, Benutzer objektorientierter Sprachen zu benachteiligen. Dies ist in jedem Fall C # / VB.NET.
Ry
3

Johns Antwort leicht verbessert: Python (90)

s=0
for i in raw_input().lower():
 s+=("abcdefghijklmnopqrstuvwxyz".index(i)+1)
print(s)
Zach
quelle
2
Hinzufügen des Dummy-Zeichens in der Zeichenfolge Anfang ist kürzer ... Klammern können entfernt werden
st0le
3

Erlang, 104

a()->
a(string:to_lower(io:get_line([])),0).
a([_|[]],S)->
S;
a([C|R],S) when C<${, C>=$`->
a(R,S+C-$`).
xymostech
quelle
3

Golfscript - 39 Zeichen

n%~{.96>{96}{64}if-..26>\0<|{0/}*}%{+}*

Der Fehler, den es auslöst, ist nicht der beste, aber hey, es bricht die Ausführung ab.

Juan
quelle
Ich weiß nichts über Golfscript, also gehe ich davon aus, dass dies den Anforderungen entspricht und erkläre Sie zum Gewinner!
Zach
Hoppla, du wurdest geschlagen! Ich denke, 2 Tage sind nicht lang genug, um auf eine Code-Golf-Frage zu warten?
Zach
3

PYTHON 62 68 * Zeichen

print sum(map(chr,range(65,91)).index(c)+1 for c in input().upper())

Erfordert, dass der Benutzer Zeichenfolgen in Anführungszeichen eingibt, und ist nicht sicher ( inputführt Code aus), aber, wie ich in einem Kommentar zu einem anderen Beitrag sagte, ist "benutzerfreundlich" und "kein Sicherheitsrisiko" nicht in der Spezifikation enthalten!


* Ich habe es vergessen print, verdammt.

jscs
quelle
jloy Antwort ist noch kürzer, eigentlich, weil die input/ raw_inputDifferenz.
jscs
2

Ruby 1.9, 69

w=gets.chop.upcase
w[/[^A-Z]/]&&fail
p w.bytes.inject(0){|s,b|s+b-64}
Lowjacker
quelle
Kann nur ASCII-Zeichen verarbeiten. Ich dachte Ruby ist aus unserem Jahrhundert? :)
Benutzer unbekannt
@user unknown: Die Spezifikation sagt nicht, dass es muss. Es wäre ziemlich kompliziert ...
Lowjacker
2

GolfScript, 50 (53)

Gibt einen Fehler bei schlechten Zeichen aus, aber keinen sehr guten (50 Zeichen):

);[{""123,97>+91,65>+?}/].-1?0<{{26%1+}%{+}*}{@}if

Gibt stattdessen "E" bei einem Fehler aus (53 Zeichen):

);[{""123,97>+91,65>+?}/].-1?0<{{26%1+}%{+}*}{;"E"}if

Das Alphabet erzeugende Snippet 123,97>+wird von Ventero gestohlen.

Jesse Millikan
quelle
2

J (55)

+/64-~-&32`]@.(<&97)`_:@.(<&65)`_:@.(>&122)"0,I.a.&e."0

Dies erfüllt alle Bedingungen mit Ausnahme des Wörterbuchs. Als Fehlerbedingung wird "unendlich" (das Unterstrichsymbol in J) für Wörter zurückgegeben, die nur Buchstaben enthalten.

Gregory Higley
quelle
2

Haskell (127)

(wirft einen Fehler bei seltsamen Zeichen auf)
(auch: das Leerzeichen zwischen toUpper.und \xwird benötigt, sonst wird es analysiert als (toUpper) .\ (x))

import Char
main=getLine>>=putStrLn.show.sum.(map$(-65+).ord.toUpper. \x->if x`elem`['A'..'Z']++['a'..'z']then x else error"")

Haskell (70)

(Löst keinen Fehler aus, aber 45% kürzer)

import Char
main=getLine>>=putStrLn.show.sum.(map$(-65+).ord.toUpper)
Marinus
quelle
2

C ++ ( 111 107)

void main(){int a=0;s8*b=new s8[99];for(cin>>b;*b;)if(isalpha(*b))a+=tolower(*b++)-96;else return;cout<<a;}

Das "Einrichten" / etc:

#include <iostream>
#include <cstdio>
#include <cctype>

#ifdef _MSC_VER
    typedef __int8 s8;
#else
    typedef signed char s8;
#endif

"Undefiniertes" Verhalten (es ist mehr "schlechte Praxis" als "undefiniert", aber na ja):

  • void main() Das sagt alles.
  • Ich benutze newohne delete.
Mateen Ulhaq
quelle
1

JavaScript 1.8, 80 Zeichen

Überraschend gut lesbar!

alert(Array.reduce(prompt().toLowerCase(),function(a,b)a+b.charCodeAt(0)-96,0))
Casey Chu
quelle
Für den Einsatz in Chrome Ich hatte es ein wenig zu konvertieren: alert(prompt().toLowerCase().split("").reduce(function(a,b){return a+b.charCodeAt(0)-96},0)). Ich mag immer noch JavaScript-Lösungen am meisten :)
pimvdb
Es gibt keinen Fehler zurück, wenn Sie ein ungültiges Zeichen machen ???
ericw31415
1

APL (34)

+/{⍵∊⍳26:⍵}¨{64-⍨A-32×96<A←⎕UCS⍵}⍞

Gibt entweder die Punktzahl oder a VALUE ERROR wenn die Eingabe nicht-alphabetische Zeichen enthält.

Erläuterung:

  • : Liest eine Eingabezeile
  • {...} : Funktion, die auf jedes Zeichen der Eingabe angewendet wird
  • A←⎕UCS⍵: Speichern Sie den ASCII-Wert des aktuellen Zeichens in A
  • A-32×96<A: Zeichen in Großbuchstaben schreiben: von Awird abgezogen 32 wenn96<A (also, wenn es in Großbuchstaben geschrieben ist), andernfalls 0
  • 64-⍨: subtrahiere 64 davon und gebe A = 1, B = 2 ...
  • ¨: Wende diese Funktion auf jedes Zeichen an:
  • ⍵∊⍳26: wenn das Zeichen zwischen 1 und 26 ist ...
  • :⍵: dann return ⍵ (und da es keine else - Klausel gibt, wird ein VALUE ERROR wenn es nicht zwischen 1 und 26 liegt)
  • +/: summiere alle Werte zusammen (und dieser Wert wird automatisch ausgegeben, weil es das Endergebnis ist).
Marinus
quelle
1

JavaScript, 60 Bytes

s=>[...s.toUpperCase()].reduce((a,b)=>a+b.charCodeAt()-64,0)

Wenn das Programm bei ungültigen Eingaben einen Fehler zurückgeben muss , dann 80 Bytes:

s=>/[^a-z]/i.test(s)?_:[...s.toUpperCase()].reduce((a,b)=>a+b.charCodeAt()-64,0)

Wenn eine Eingabe ungültig ist, sagt die Konsole, dass sie _nicht definiert ist (es darf noch keine Variable namens definiert sein _).

ericw31415
quelle
1

Python 3, 58 55

print(sum(ord(x)%32for x in input()if x.isalpha()or z))

ohne wörterbuch oder gestohlene idee aber trotzdem wenig hilfreicher fehler;)

thx @ Eᴀsᴛᴇʀʟʏ

Testen Sie hier .

Alexander Nigl
quelle
Ich denke, Sie können ein Byte speichern, indem Sie zu Python 2 wechseln und dabei print<SPACE>sum(ord(.......die 2 Klammern um den Ausdruck entfernen.
8.
@ EᴀsᴀIᴛᴇʀʟʏ das ist richtig, aber als Eingabe muss in Klammern und ich möchte nicht Python 2 fördern;)
Alexander Nigl
PYTHON 2 IST LEBEN !! und ich denke auch nicht, dass die Eingabe in Klammern gesetzt werden müsste?
8.
@ EᴀsᴀIᴛᴇʀʟʏ sry meinte ich zitiert. input()in python3 ist raw_input()in python2
Alexander Nigl
Oh, ich habe es vergessen. Hm.
9.
1

C 98 Bytes

 int a(char *s){int b=0;while(*s){if(!isalpha(*s))throw 1;b+=(toupper(*(s++))-64);}printf("%d",b);}
Adam Spindler
quelle
1

F # (keine Validierung) 79 57 Zeichen

let a w=w|>Seq.fold(fun a b->a+(int b)-65)0|>printfn"%i"
Smetad Anarkist
quelle
1

C # mit Validierung: 108 Zeichen (mit 12 für Fehlermeldung):

var s=Console.ReadLine();Console.Write(s.All(Char.IsLetter)?s.Sum(x=>x&'_'-'@').ToString():"Invalid input");

C # ohne Validierung: 60 53 Zeichen:

Console.Write(Console.ReadLine().Sum(x=>x&'_'-'@'));
driis
quelle
1
Im zweiten Fall ohne Validierung können Sie die Zeichen noch weiter reduzieren, indem Sie die Variablendeklaration s entfernen und Console.ReadLine () inline verwenden.
Hermiod
1

Perl (42 31)

perl -F -pale '$c+=ord(uc$_)-64for@F;$_=$c'

Ich hoffe, dass das Zählen von F, p, a und l als 1 Zeichen richtig war.

memowe
quelle
1

JavaScript, 68 Bytes

Damit kann man mit ziemlicher Sicherheit mehr golfen

w=>[...w.toLowerCase()].map(v=>v.charCodeAt()-96).reduce((a,b)=>a+b)

Mit Dictionary Check (nur Node.js & Unix Descendants) 195 Bytes

Verwendet /usr/share/dict/wordsund kann definitiv verkürzt werden (siehe Warnmeldung)

w=>(require("fs").readFile("/usr/share/dict/words",(e,t)=>!(t+"").split`
`.includes(w=w.toLowerCase())&&console.warn(w+" not found in dict")),[...w].map(v=>v.charCodeAt()-96).reduce((a,b)=>a+b))
BürgermeisterMonty
quelle
Bei einer Fehlermeldung tun Sie dies console.error()nicht console.warn().
ericw31415
Aber die Challenge soll warnen (5. (Optional) Überprüfen Sie, ob das Wort nach der Wertung in einem Wörterbuch steht, und drucken Sie eine Warnung aus, wenn dies nicht der Fall ist.) Nicht
umständlich
@SpeedyNinja Ich denke, es zählt immer noch, das ist nicht wirklich der Punkt der Herausforderung ...
Rɪᴋᴇʀ
@ EᴀsᴀIᴛᴇʀʟʏ es ist 1 Zeichen kürzer;)
MayorMonty
@SpeedyNinja Du hast recht, ich habe falsch verstanden.
ericw31415