Kalkulator, który dodaje wartości char

18

Zadanie

Zbuduj kalkulator, który pobiera dowolny ciąg znaków z pliku, standardowego pliku itp. I sumuje wszystkie wartości znaków.

Przykład

Input
Hello World!

Output
1085

Zasady

Kalkulator musi akceptować tylko kodowanie ASCII.

Najkrótszy kod wygrywa.

Notatki

Jeśli chodzi o komentarz m.buettner, muszę powiedzieć, że nie myślałem o części wielobajtowej.
Więc zostawiam to również jako bonus.
Kalkulator powinien być uruchamiany tak, jak napisano, więc nie trzeba go modyfikować przed kompilacją lub interpretacją.

Premia

Dzięki Synthetica jest jeszcze jeden bonus,

Program, który ma najmniejszą moc wyjściową, gdy używasz kodu, gdy jego wejście wygrywa, otrzymuje gwiazdkę.

Nie chcę go całkowicie modyfikować.

Jeśli napiszesz ją dodatkowo, aby wyprowadzić (prawą) wartość w UTF-8, otrzymasz gwiazdkę.

Kod, który działa najszybciej na moim laptopie (Lenovo Yoga 13 Intel Core i5 3317U 1,7 GHz, 8 GB pamięci RAM, 128 GB SSD, Intel HD 4000, Windows 8) dostaje gwiazdkę.

Kody sieciowe będą uruchamiane najpierw w IE11 z chakrą, a następnie w FireFox 29.0.1 z SpiderMonkey

Kod systemu Linux będzie działał na Raspberry Pi z Raspbian.

Ciąg testowy jest następujący:

q/%8hnp>T%y?'wNb\},9krW &D9']K$n;l.3O+tE*$*._B^s!@k\&Cl:EO1zo8sVxEvBxCock_I+2o6 yeX*0Xq:tS^f)!!7=!tk9K<6#/E`ks(D'$z$\6Ac+MT&[s[]_Y(`<g%"w%cW'`c&q)D$0#C$QGf>?A$iawvc,}`9!('`c&q)D$0#C$QGf>?A$iawvc,}`9!(

Miłego kodowania :)

Bonusscoring

Mam zamiar zrobić punktację w tę sobotę, więc 07.06.14, wszystkie odpowiedzi po tej dacie nie dostaną punktów bonusowych;)

Możesz pobrać kod, którego użyję do testowania tutaj , możesz go rozwinąć i ulepszyć :)

Mała aktualizacja ze względu na bonus, mój laptop jest częściowo zepsuty, więc zrobię to prawdopodobnie w następny weekend, bardzo mi przykro z tego powodu :(

Knerd
źródło
3
Dostaję 1085 za Hello World!używanie dwóch różnych języków dla wartości ASCII na moim komputerze.
Kyle Kanos
1
Prawdopodobnie zapomniał dodać „!”. edytuj byłeś 3 sekundy szybciej ...
gxtaillon
1
Czy można wyjaśnić opinie negatywne?
Knerd
3
Domyślam się, że opinie negatywne wskazują, że nie jest to naprawdę dobry problem.
Kyle Kanos
5
@ Głównie @Knerd, ponieważ w większości języków jest to zbyt trywialne (jak widać na podstawie już przesłanych zgłoszeń)
Martin Ender

Odpowiedzi:

10

GolfScript, 4 znaki

{+}*

Wystarczy użyć operatora fold ( *), aby dodać wszystkie znaki.

Jeśli musi działać z pustym łańcuchem, 9 znaków:

{{+}*}0if

Dzięki @PeterTaylor za udostępnienie alternatywnej wersji 6-znakowej, która działa z pustym ciągiem znaków:

0\{+}/
Klamka
źródło
Nie działa na pusty ciąg.
Howard
@Howard Good point; edytowane.
Klamka
0\{+}/obsługuje pusty ciąg
Peter Taylor
1
@ Doorknob przepraszam za głupie pytanie, jak wprowadzić dane? Korzystam z golfscript.apphb.com
Knerd
2
@immibid Cyklop o dziwnie ukształtowanym oku. :-P (lub, w języku GolfScript, twarz „zamień i dodaj-każdy”!)
Klamka
7

APL (8)

+/⎕UCS⍞

Wyjaśnienie:

  • +/ suma
  • ⎕UCS wartości Unicode dla
  • wprowadzanie znaków
marinus
źródło
Jaki byłby wynik Hello World!?
Knerd
@Knerd: 1085. Byłoby niepoprawne, gdyby dał inny wynik. Sumuje wartości znaków kodowych Unicode.
marinus
ok, nie rozumiem, co to znaczy;)
Knerd
1
@knerd: oznacza odczytanie linii z klawiatury
marinus
Czy znasz darmowego interpretera APL?
Knerd
6

Haskell 36

main=interact$show.sum.map fromEnum
gxtaillon
źródło
Skąd to czyta tekst?
Knerd
standardowe $ printf "Hello World!" | ./charsum
gxtaillon
ok, nie mogłem uruchomić go na moim komputerze z systemem Windows, wypróbuję to na rpi, kiedy będę w domu
Knerd
Kiedy wykonuję twój kod, po prostu otrzymuję ciąg „Hello World!” jako wynik. Oto moja ECHO "Hello World! | ghci charsum.hs
komenda
1
użyj interacti showzamiast getContents>>=print:main=interact$show.sum.map fromEnum
Flonk
6

Narzędzia Shell + GNU, 29 bajtów

echo `od -An -tuC`|tr \  +|bc

Pobiera dane wejściowe ze standardowego wejścia:

$ printf "%s" 'Hello World!' | ./addchars.sh 
1085
$ 

Wynik własny: 2385


c, 52 bajty

c;main(p){while(~(p=getchar()))c+=p;printf("%d",c);}

Skompiluj z (wygenerowano niektóre ostrzeżenia):

gcc addchars.c -o addchars

Pobiera dane wejściowe ze standardowego wejścia:

$ printf "%s" 'Hello World!' | ./addchars 
1085 $ 

Wynik własny: 4354

Cyfrowa trauma
źródło
To świetna odpowiedź. CodeBlocks z kompilatorem GNU zawsze narzeka, jeśli zmienne nie mają typu, np. Int c, main (int p). Myślę więc, że powinny one zostać uwzględnione w twojej odpowiedzi.
bacchusbeale
@ Bacchusbeale Dodałem notatkę na temat ostrzeżeń dotyczących kompilacji, ale myślę, że jest to zazwyczaj par-for-the-golf podczas gry w c. Tak długo, jak kod kompiluje się i działa zgodnie z oczekiwaniami, ostrzeżenia mogą być ignorowane. Zobacz codegolf.stackexchange.com/a/2230/11259 i codegolf.stackexchange.com/a/2204/11259 . Oczywiście kod produkcyjny to zupełnie inna sprawa.
Digital Trauma
@DigitalTrauma, czy te wszystkie miejsca są rzeczywiście potrzebne? Czy Shell nie może zignorować białych znaków i użyć - do zaznaczenia nowych parametrów?
Ashwin Gupta
@AshwinGupta Czy mówisz o odpoleceniu? od -AntuCnie robi tego samego co od -An -tuC.
Cyfrowy uraz
@DigitalTrauma tak, byłem. Miałem na myśli, czy nie możesz zrobić od-An-tuClubod -An-tuC
Ashwin Gupta
6

JavaScript ( ES6 ) 51

alert([...prompt(x=0)].map(y=>x+=y.charCodeAt())|x)
nderscore
źródło
@nderscore Czy możesz wyjaśnić, co robi ...przedtem prompt? Czy to nowa rzecz w ES6, czy też jest w wersji wcześniejszej niż ES6?
WallyWest
1
@WallyWest Nazywa się to operatorem rozprzestrzeniania i jest częścią projektu ES6.
nderscore
@nderscore Więc jeśli rozumiem składnię operatora rozkładania, twoje użycie [...prompt(x=0)]wziął monit z domyślną wartością 0 (która później będzie używana w sumie) i zastosuje to wejście jako tablicę znaków ... ? Który technicznie byłby taki sam prompt(x=0).split(""), prawda?
WallyWest
1
@WallyWest prompt(x=0)oznacza „ustaw x na 0, zadzwoń promptz wartością ustawienia x na 0”, to znaczy 0. Byłoby to równoznaczne z zapisaniem(x=0,prompt(x))
Cyoce
6

gs2 , 1 bajt

d

d( 0x64/ sum) oczywiście sumuje wszystkie bajty na standardowym wejściu.

Lynn
źródło
5

Python 3-28 bajtów

print(sum(map(ord,input())))

Przykładowy przebieg:

$ ./sum_string.py <<< 'Hello World!'
1085

Pobiera dane wejściowe z stdin, maps ordfunkcja do niego, aby uzyskać wartość ASCII każdego znaku, sums it i prints.

podziemny monorail
źródło
Ninja'd, miałem dokładnie ten sam pomysł. +1 za to.
patrz
@ TheRare Tak samo zrobiłem, mimo że mój był dłuższy, ponieważ użyłem Python 2.7. Robię się zardzewiały;)
5ıʇǝɥʇuʎs
@Synthetica Zawsze używam Pythona 2.7, na który byłaby odpowiedźprint sum(map(ord,raw_input()))
patrz
1
@ TheRare Która była moją dokładną odpowiedzią;)
5ıʇǝɥʇuʎs
Nitpicking tutaj, ale możesz sprawić, by działał lepiej, zmieniając map(ord,input())na input().encode(). Obiekty bajtów mogą być nadal sumowane i mają tę samą długość.
cjfaure
5

8086 Zestaw (16 bitów) - 47 41 bajtów

Zawartość test.compliku to:

98 01 c3 b4 01 cd 21 3c 0d 75 f5 89 c7 c6 05 24
89 d8 b1 0a 4f 31 d2 f7 f1 80 ca 30 88 15 09 c0
75 f2 89 fa b4 09 cd 21 c3

Rzeczywista praca jest wykonywana w pierwszych 11 bajtach; Potrzebuję reszty, aby wydrukować wynik w notacji dziesiętnej.

Kod źródłowy (podaj jako dane wejściowe do debug.comasemblera DOS ):

a
; input the string; count the sum
    cbw
    add bx, ax
    mov ah, 1
    int 21
    cmp al, d
    jne 100
; Prepare for output: stuff an end-of-line marker
    mov di, ax
    mov [di], byte 24
    mov ax, bx
    mov cl, a
; 114
; Divide by 10; write digits to buffer
    dec di
    xor dx, dx
    div cx
    or  dl, 30
    mov [di], dl
    or  ax, ax
    jne 114
; Print the string
    mov dx, di
    mov ah, 9
    int 21
    ret

rcx 29
n test.com
w
q

Kilka uwag na temat kodu:

  • Obsługuje tylko jedną linię (do znaku końca linii 13); zawiesza się, jeśli nie ma końca linii
  • Obsługiwane są tylko znaki 7-bitowe (w przeciwnym razie wyniki są niepoprawne)
  • Wyjścia 0 dla pustego wejścia
  • Nie można obsłużyć wyjścia większego niż 64 KB
  • Instrukcja pod adresem 0x10d sama się zastępuje (czysty przypadek)
  • Muszę użyć emulatorów DOS, takich jak DosBox, do złożenia i uruchomienia tego programu
anatolig
źródło
Jak możesz to zrozumieć? oO
Knerd
5

CJam, 3 bajty (suma 260)

q1b

Możesz spróbować online .
Dzięki jimmy23013 za pomoc w odcięciu 2 znaków :)

Wyjaśnienie:

q     read the input into a string  
1b    convert from base 1, treating each character as its numeric value
aditsu
źródło
1
q1bjest krótszy.
jimmy23013
4

Befunge98, 6 bajtów, suma: 445

2j@.~+

Każdy tłumacz powinien mieć się dobrze. Używam CCBI .

Użyj w następujący sposób:

printf 'Hello World!' | ccbi calc.fg

Działa dla wielobajtowych znaków i pustych ciągów.

Wyjaśnienie

  • 2j- przeskocz przez kolejne dwie instrukcje ( @i .- patrz poniżej)
  • ~ - połóż następny znak na stosie
  • +- dodaj wartość kodu nowego znaku do bieżącej sumy. Wskaźnik instrukcji zawija się na początek i cykl się powtarza
  • gdy ~napotka EOF, odwraca kierunek wskaźnika i wykonywane są dwie „ukryte” instrukcje:
  • . - wydrukuj sumę
  • @ - wyjście
har-wradim
źródło
4

Rubin, 13 12 bajtów

p~9+gets.sum

sumjest wbudowaną funkcją, która sumuje znaki ciągu. Odejmuje 10, aby uwzględnić nowy wiersz na końcu getswartości zwracanej.

(Edytowany 4 lata później, aby zmienić x-10na ~9+x... wartość ~9jest -10, ale pozwala nam usunąć spację pi argument, oszczędzając bajt.)

Klamka
źródło
W ogóle nie znam Ruby, czy mógłbyś wyjaśnić swój kod?
Knerd
1
gets to funkcja, która odczytuje ciąg znaków ze standardowego wejścia do momentu odczytania nowej linii, zwraca ciąg znaków. String # sum dodaje wartości każdego znaku, który zwraca Fixnum. Fixnum # - to tylko odejmowanie. pto metoda wyprowadzania wartości debugowania czegoś w linii.
Kyle Smith
2

PowerShell - 27

[char[]]$args[0]|measure -s

Przykład

> SumChars.ps1 'Hello World!'

Count    : 12
Average  : 
Sum      : 1085
Maximum  : 
Minimum  : 
Property : 
Rynant
źródło
26, jeśli używasz [char[]]"$args"|measure -stak długo, jak długo jest tylko jeden wpis $ arg.
TessellatingHeckler
2

Julia - 11 7 znaków, suma wynikowa = 943 536

Ponieważ pytanie pozwala na wejście z dowolnego źródła, wybieram istniejącą zmienną. Załóżmy, że Azawiera ciąg, który chcemy ocenić.

sum(A)1

Jak się okazuje, możesz zsumować ciąg bezpośrednio, a on oceni ... Jednak ze względu na sposób, w jaki obsługiwane jest sumowanie znaków, jeśli w ciągu znajduje się nieparzysta liczba znaków, wyśle ​​znak, zamiast jakiejkolwiek liczby całkowitej. W związku z tym wymuszamy rzutowanie na int przez pomnożenie przez 1.

Stara wersja:

sum(A.data)

Wyjdzie w zapisie szesnastkowym (jeśli suma jest mniejsza niż 256, to będzie 0x?? , w przeciwnym razie będzie to 8 bajtów jako 0x????????). Jeśli zostanie użyty w kodzie, w którym wynik jest użyty, będzie działał jak każdy inny numer (w ten sposób Julia wyświetla bez znaku int).

Aby zobaczyć wartość wyniku w postaci dziesiętnej, załącz powyższe w int() , jak w int(sum(A.data)).

Dla każdego, kto nie zna Julii, przypisujesz Adokładnie to samo, co inne przypisania do zmiennych. Więc A="Hello World!"lub A="sum(n.data)". W przypadku, gdy musisz wstawić "lub 'znaki, istnieje wiele opcji, z których najłatwiejszym (ponieważ unika się potrzeby znajomości niuansów literałów ciągów Julii) A=readline(), a następnie po prostu wpisuje ciąg do STDIN (wygrał t obsługuje jednak nowe linie). Sekwencja zmiany znaczenia dla nowego wiersza jest, jak zwykle, \nale nie sądzę, że można tego użyć z readline ().

Glen O
źródło
+1 za cholernie sprytne rozwiązanie ^^ Czy możesz napisać, jak przypisać wartość testową do zmiennej n? W ogóle nie znam Julii;)
Knerd
@Knerd - Zredagowałem to. Mam nadzieję, że to pomaga.
Glen O
Wielkie dzięki. Próbuję to przetestować później :)
Knerd
Niewielka zmiana - zmieniono zmienną z nna, Aaby zmniejszyć wynikową sumę z 988 na 943.
Glen O
OK, znacznie większa zmiana - zdałem sobie sprawę, że możesz sumować ciąg bezpośrednio, zamiast wyodrębniać znaki .data; ale ponieważ są postaciami, dają wynik postaci dla nieparzystej liczby znaków. Mnożenie przez 1 poprawia to.
Glen O
2

K5, 2 bajty (funkcja), 5 bajtów (program)

Funkcjonować

+/

Program

+/0:`

Nie jestem pewien, czy K5 został utworzony przed, czy po opublikowaniu tego wyzwania. Niezależnie od tego ... TO JEST NIESAMOWITE !!

W K5, jeśli wykonujesz operacje arytmetyczne na łańcuchach, konwertuje znaki na ich kody ASCII. Więc to po prostu używa operatora sumy +/(właściwie to plus + ponad).

kirbyfan64sos
źródło
2

Matlab / Octave 4 bajty (premia: 405)

Ten kod jest anonimową funkcją, która wykonuje zadanie, pobiera ciąg znaków i zwraca wymaganą liczbę.

@sum
wada
źródło
Nie jestem pewien co do gs2odpowiedzi, ale przynajmniej przy takim samym podejściu jak odpowiedź Julii nadal powinienem pisać sum(A). Myślę, że sumsam nie jest w porządku (nie byłby nawet prawidłowym kodem =).
flawr
2

Idź (59 znaków)

func d(s string)(t int){for _,x:=range s{t+=int(x)};return}

Wszystko w Go jest domyślnie utf8. Tekst kodowy w `delimetrach przebiegających przez siebie daje wynik: 5399.

voutasaurus
źródło
Muszę powiedzieć, że jestem raczej zaskoczony, że nie math.Summożna go używać z mappodobnym
cat
2

Jolf, 2 bajty (niekonkurujące)

Wypróbuj tutaj!

ui
u  sum of
 i  the input string

Umm ... nie wiem co jeszcze powiedzieć.

Conor O'Brien
źródło
2

Gol> <> , 4 bajty (niekonkurujące)

Uwaga: ten język jest nowszy niż wyzwanie.

iEh+
randomra
źródło
Czy jest wymawiane jak „Golfish”?
kot
@ kot Tak, to golfish.
randomra
@randomra to „gol • ryba” czy „golf • ish”? Jak u ryby z golem, czy coś w rodzaju golfa?
Cyoce
2

JavaScript ES6, 41 bajtów

_=>[..._].map(y=>x+=y.charCodeAt(),x=0)|x

Dzięki @ETHproductions za 2 bajty zapisane!

Mama Fun Roll
źródło
1
Jak o _=>[..._].map(y=>x+=y.charCodeAt(),x=0)|x?
ETHproductions
2

Python, 24 bajty

Jest to krótsze niż jakiekolwiek dotychczasowe rozwiązanie Pythona: anonimowa funkcja anonimowa, która przyjmuje ciąg znaków jako argument i zwraca sumę.

lambda x:sum(x.encode())

Wypróbuj online!

Najpierw x.encode()przekształca go w bytesobiekt. Następnie sumdodaje wartości char-code. Ponieważ jest to funkcja lambda, wartością jest zwracana implikacja.

Dodatkowo można mieć lambda x:sum(map(ord,x))taką samą liczbę bajtów.

FlipTack
źródło
2

SML, 42 36

Właśnie dodałem inny język.

fun$x=foldl op+0(map ord(explode x))

Konwertuje ciąg znaków na tablicę znaków, oblicza liczbę ascii każdej wartości i oblicza sumę wszystkich liczb ascii.

ktoś
źródło
1
Możesz upuścić trochę spacji i prowadzące ;. 36 bajtów: tio.run/##DcpBCoAgEAXQq0zRQomiC7ivdYuWEWgRfB2xKby9uXzwHo/…
Laikoni
1

C 32

f(char*s){return*s?*s+f(s+1):0;}
bebe
źródło
main(int argc,char **argv){return(argc?main(0,&(argv[1])):(**argv?**argv+main(0,argv)+((*argv)++?0:0):0));}(107 znaków), choć z jakiegoś powodu ignoruje pierwszą postać. Ponadto kody wyjścia POSIX to tylko 8 bitów; w bashu echo $?.
zasady były trochę ogólne, więc nie użyłem głównego. Będę pracował nad czymś krótszym
bebe
@bebe Zmieniłem nieco zasady, aby wyjaśnić, co jest potrzebne;)
Knerd
1

D (funkcja: 60)

Zdecydowanie nie ma w nim wygrać.

Zakładając, że nie musi to być kompletny program

int c(string i){int s;foreach(e;i){s+=cast(int)e;}return s;}

Tak się nazywa

void main ()
{
    import std.stdio;
    auto hw = "Hello World!";
    writefln("%s = %d", hw, c(hw));
}

Wynik:

Hello World! = 1085

D (program: 133)

Nie liczy podziałów linii.

void main(){import std.algorithm,std.stdio;stdin.byLine.map!((a){int s;foreach(e;a){s+=cast(int)e;}return s;}).reduce!"a+b".writeln;}

Z większą ilością białych znaków i dłuższymi nazwami zmiennych dla czytelności

void main () {
    import std.algorithm, std.stdio;

    stdin.byLine
        .map!((line) {
                int sum;
                foreach (ch; line) {
                    sum += cast(int)ch;
                }
                return sum;
            })
        .reduce!"a+b"
        .writeln;
}

Aby wesprzeć podział wiersza na wejściu, mógłbym użyć byLine(KeepTerminator.yes)- w prawidłowy sposób, dla 20 znaków - lub dołączyć '\n'do mojej linii - który przerywa wprowadzanie jednowierszowe i może podawać nieprawidłową sumę w systemie Windows z powodu CRLF, dla 18 znaków.

Hugo Dubé
źródło
+1 za opublikowanie, nawet jeśli wiesz, że nie wygrasz
Knerd
1

JavaScript (ES6) 54 58

alert([].reduce.call(prompt(),(v,c)=>v+c.charCodeAt(0),0))

54 bajty dzięki nderscore :

alert([...prompt()].reduce((v,c)=>v+c.charCodeAt(),0))
rdzeń 1024
źródło
Działa dobrze, próbowałem już w es6fiddle.net
Knerd
Możesz po prostu użyć Firefoksa;)
core1024
1
Byłem w pracy, więc: D
Knerd
1
54:alert([...prompt()].reduce((v,c)=>v+c.charCodeAt(),0))
nderscore
1
Zrobiłem to teraz do 51 :) alert([...prompt(x=0)].map(y=>x+=y.charCodeAt())|x)
Zrobiłem
1

Delfy ( 87 83)

function x(s:string):int64;var c:char;begin x:=0;for c in s do x:=result+ord(c)end;

Bez golfa

function x(s:string):int64;
var
  c:char;
begin
  x:=0;
  for c in s do
    x:=result+ord(c)
end;

Pętle poprzez Sdodanie ordwartości znaku do wyniku. gdzie x == wynik

Edycje:

Zapisano 4 znaki, przechodząc na int64 i zmieniając dodawanie do sumy.

Teun Pronk
źródło
Czy masz bezpłatną wersję Delphi (wstaw tutaj swoją wersję)?
Knerd
Hm .. Nie bardzo przepraszam. Ale mogę wyjaśnić, gdzie się nie gra w golfa i zrobić kilka testów, jeśli chcesz. Free pascal ma mniej więcej tę samą składnię, więc możesz to zrobić.
Teun Pronk
Ok, sprawdzę to.
Knerd
1

k (8 znaków)

+/6h$0:0

Tłumaczenie Q.

sum `int$read0 0

Wartość bonusowa:

k)+/6h$0:0
+/6h$0:0
438i
skeevey
źródło
1

J (7)

Tak blisko, ale jak dotąd ... No cóż, chyba 7 jest wystarczająco przyzwoite, ponieważ ta odpowiedź akceptuje również puste ciągi. (Używam zmiennej jako danych wejściowych do wyrażenia from a file, stdin or whatever)

+/a.i.b

Wyjaśnienie:

a.

┌┬┐├┼┤└┴┘│─ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������

a. zawiera wszystkie znaki ASCII.

   'people' i. 'pow'
0 2 6

x i. yjest podobny do Pythona [x.index(i) for i in y].

   a. i. 'Hello World!'
72 101 108 108 111 32 87 111 114 108 100 33

Dlatego a. i. ykonwertuje yna tablicę wartości ASCII

   +/1 2 3 4 5 6
21

+/jest jak sum: +/1 2 3 4 5 6oznacza1+2+3+4+5+6

   +/ a. i. 'Hello World!'
1085

Cała sprawa w akcji

Aby otrzymać bonus:

   b=:'+/a.i.b'
   +/a.i.b
482

Chyba nieźle.

   b=:'0\{+}/'
   +/a.i.b
478

Cholera.

   A=:'+/a.i.A'
   +/a.i.A
449

Dzięki @algorytmshark

    A=:'+/3 u:A'
    +/3 u:A
413

Dzięki @marinus

.ıʇǝɥʇuʎs
źródło
+1 za świetne wyjaśnienie. Jedno małe pytanie, gdzie najlepiej wykonać J?
Knerd
1
@Knerd Od twórców ( jsoftware.com ) Chyba nie znam żadnych internetowych tłumaczy. (Ciekawostka: mają oficjalną konsolę dla Androida.) Jsoftware.com/download/j801
5ıʇǝɥʇuʎs
@Synthectica To jest fajne: D Teraz potrzebuję smartfona z Androidem: P
Knerd
Zmiana nazwy bna Awynik w 449.
algorytm
@ algorytmshark Och, racja! Będę na razie
domagał się
1

R, 35 znaków (suma 3086) 26 bajtów (suma 2305)

sum(utf8ToInt(readline()))

readline()jest o jeden znak dłuższy niż, scan(,"")ale scandomyślnie dzieli dane wejściowe na spacje.

Stosowanie:

> sum(utf8ToInt(readline()))
Hello World!
[1] 1085
> sum(utf8ToInt(readline()))
sum(utf8ToInt(readline()))
[1] 2305
> sum(utf8ToInt(readline()))
q/%8hnp>T%y?'wNb\},9krW &D9']K$n;l.3O+tE*$*._B^s!@k\&Cl:EO1zo8sVxEvBxCock_I+2o6 yeX*0Xq:tS^f)!!7=!tk9K<6#/E`ks(D'$z$\6Ac+MT&[s[]_Y(`<g%"w%cW'`c&q)D$0#C$QGf>?A$iawvc,}`9!('`c&q)D$0#C$QGf>?A$iawvc,}`9!(
[1] 14835
plannapus
źródło
1

Japt , 6 bajtów (niekonkurujące)

Ta odpowiedź nie jest konkurencyjna, ponieważ Japt został utworzony po opublikowaniu tego wyzwania.

U¬mc x

Dość proste. Wypróbuj online!

Jak to działa

U¬mc x  // Implicit: U = input string
U¬      // Split U into chars.
  mc    // Map each item to its char code.
     x  // Sum.
        // Implicit: output last expression
ETHprodukcje
źródło
Z ciekawości, dlaczego nie przypisałeś ¬jakiejś negacji?
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ Ponieważ się spieszyłem i po prostu przydzieliłem je tak, jak widziałem potrzebę, bez planowania. Mam zestaw, który jest bardziej sensowny i gotowy do wprowadzenia, poprzez zmianę jednego wiersza kodu, ale jestem ostrożny, ponieważ unieważnia prawie każdą istniejącą odpowiedź.
ETHproductions
To łatwa naprawa. Dodaj warunek do nagłówka (np. url/interpreter.html#new=1); cokolwiek bez niego używa starego zestawu znaków, a cokolwiek z nim korzysta z nowego zestawu znaków.
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ Dzięki, rozważę to.
ETHproductions
1

PlatyPar , 2 bajty (niekonkurujące)

us

Wypróbuj online !

ugeneruje tablicę wszystkich wartości znaków w ciągu wejściowym i sznajduje ich sumę.

Po uruchomieniu na siebie wraca 232.

Jest to podobne do odpowiedzi Conora Jolfa , z tym wyjątkiem, że używam bajtu do konwersji łańcucha znaków na tablicę kodów znaków (co jest jawne w Jolfie), podczas gdy używa bajtu do pobierania danych wejściowych (co jest niejawne w PlatyPar).

Cyoce
źródło