Kalkulator yang menambahkan nilai char

18

Tugas

Bangun kalkulator, yang mengambil string apa pun, dari file, stdin atau apa pun, dan menambahkan semua nilai karakter.

Contoh

Input
Hello World!

Output
1085

Aturan

Kalkulator harus menerima pengkodean ASCII saja.

Kode terpendek menang.

Catatan

Mengenai komentar m.buettner, saya harus mengatakan, saya tidak memikirkan bagian multibyte.
Jadi saya meninggalkannya sebagai bonus juga.
Kalkulator harus dijalankan seperti yang tertulis, jadi tidak perlu memodifikasi sebelum kompilasi atau interpretasi.

Bonus

Berkat Synthetica , ini satu bonus lagi,

Program yang memiliki output terendah ketika Anda menggunakan kodenya saat inputnya menang mendapat bintang.

Saya tidak ingin memodifikasinya secara lengkap.

Jika Anda menulisnya tambahan untuk menampilkan nilai (kanan) di UTF-8, Anda mendapatkan bintang.

Kode yang dieksekusi tercepat di Laptop saya (Lenovo Yoga 13 Intel Core i5 3317U 1.7Ghz, 8GB RAM, 128GB SSD, Intel HD 4000, Windows 8) mendapatkan bintang.

Kode web akan berjalan pertama di bawah IE11 dengan chakra dan kemudian di FireFox 29.0.1 dengan SpiderMonkey

Kode Linux akan berjalan pada Raspberry Pi dengan Raspbian.

Teststring adalah ini:

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!(

Selamat bersenang-senang menulis kode :)

Bonusscoring

Saya berencana melakukan penilaian pada hari Sabtu ini sehingga tanggal 07.06.14, semua jawaban setelah tanggal tersebut tidak akan mendapatkan poin bonus;)

Anda dapat mengunduh kode yang akan saya gunakan untuk pengujian di sini, silakan garpu dan memperbaikinya :)

Sedikit pembaruan karena bonus, laptop saya rusak sebagian jadi saya akan melakukannya mungkin akhir pekan depan, saya benar-benar minta maaf untuk itu :(

Knerd
sumber
3
Saya mendapatkan 1085 karena Hello World!menggunakan dua bahasa berbeda untuk nilai ASCII di komputer saya.
Kyle Kanos
1
Dia mungkin lupa menambahkan '!'. sunting Anda 3 detik lebih cepat ...
gxtaillon
1
Bisakah seseorang menjelaskan downvotes?
Knerd
3
Dugaan saya adalah bahwa downvotes menunjukkan bahwa itu bukan masalah yang baik.
Kyle Kanos
5
@Knerd terutama, karena itu agak terlalu sepele di sebagian besar bahasa (seperti yang Anda lihat dari panjang pengiriman yang sudah Anda dapatkan)
Martin Ender

Jawaban:

10

GolfScript, 4 karakter

{+}*

Cukup gunakan operator lipat ( *) untuk menjumlahkan semua karakter.

Jika harus bekerja dengan string kosong, 9 karakter:

{{+}*}0if

Terima kasih kepada @PeterTaylor untuk menyediakan versi 6-char alternatif yang bekerja dengan string kosong:

0\{+}/
Gagang pintu
sumber
Tidak berfungsi pada string kosong.
Howard
@Howard Poin bagus; diedit.
Gagang Pintu
0\{+}/mendukung string kosong
Peter Taylor
1
@ Doorknob maaf atas pertanyaan bodoh, bagaimana cara saya memasukkan data? Saya menggunakan golfscript.apphb.com
Knerd
2
@ Imbib A cyclop dengan mata berbentuk aneh. :-P (atau, dalam GolfScript, wajah "tukar-dan-tambah-setiap"!)
Gagang Pintu
7

APL (8)

+/⎕UCS⍞

Penjelasan:

  • +/ jumlah dari
  • ⎕UCS nilai unicode dari
  • input karakter
marinus
sumber
Untuk apa hasilnya Hello World!?
Knerd
@Knerd: 1085. Itu tidak benar jika memberikan output lain. Ini menjumlahkan nilai-nilai dari codepoint Unicode karakter.
marinus
ok, saya tidak mengerti apa artinya;)
Knerd
1
@knerd: berarti membaca garis dari keyboard
marinus
Apakah Anda tahu penerjemah APL yang gratis?
Knerd
6

Haskell 36

main=interact$show.sum.map fromEnum
gxtaillon
sumber
Dari mana ia membaca teks?
Knerd
stdin. $ printf "Hello World!" | ./charsum
gxtaillon
ok, saya tidak bisa menjalankannya di mesin Windows saya, saya akan mencobanya di rpi ketika saya di rumah
Knerd
Ketika saya mengeksekusi kode Anda, saya hanya mendapatkan string "Hello World!" sebagai Output. Ini adalah perintah saya:ECHO "Hello World! | ghci charsum.hs
Knerd
1
gunakan interactdan showbukannya getContents>>=print:main=interact$show.sum.map fromEnum
Flonk
6

Alat Shell + GNU, 29 byte

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

Mengambil input dari stdin:

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

Skor sendiri: 2385


c, 52 byte

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

Kompilasi dengan (beberapa peringatan dihasilkan):

gcc addchars.c -o addchars

Mengambil input dari stdin:

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

Skor sendiri: 4354

Trauma Digital
sumber
Ini jawaban yang bagus. CodeBlocks dengan kompiler GNU selalu mengeluh jika variabel tidak memiliki tipe mis. Int c, main (int p). Jadi saya pikir ini harus dimasukkan dalam jawaban Anda.
bacchusbeale
@ bacchusbeale Saya menambahkan catatan tentang peringatan kompilasi, tapi saya pikir ini umumnya par-for-the-course saat bermain golf di c. Selama kode dikompilasi dan berjalan seperti yang diharapkan, maka peringatan dapat diabaikan. Lihat codegolf.stackexchange.com/a/2230/11259 dan codegolf.stackexchange.com/a/2204/11259 . Tentu saja kode produksi adalah masalah yang sama sekali berbeda.
Digital Trauma
@DigitalTrauma semua ruang itu sebenarnya diperlukan? Bisakah Shell tidak mengabaikan spasi putih dan menggunakan - untuk menandai parameter baru?
Ashwin Gupta
@AshwinGupta Apakah Anda berbicara tentang odperintah? od -AntuCtidak melakukan hal yang sama seperti od -An -tuC.
Trauma Digital
@ DigitalTrauma ya saya. Maksud saya tidak bisa Anda lakukan od-An-tuCatauod -An-tuC
Ashwin Gupta
6

Javascript ( ES6 ) 51

alert([...prompt(x=0)].map(y=>x+=y.charCodeAt())|x)
nderscore
sumber
@nderscore Bisakah Anda menjelaskan apa yang dilakukan ...sebelum prompt? Apakah ini hal ES6 baru atau pra-ES6?
WallyWest
1
@WallyWest Ini disebut operator penyebaran dan itu bagian dari konsep ES6.
nderscore
@nderscore Jadi Jika saya memahami sintaksis operator spread, penggunaan Anda [...prompt(x=0)]telah mengambil prompt dengan nilai default 0 (yang kemudian digunakan untuk jumlah), dan menerapkan input itu sebagai array karakter ... ? Yang secara teknis akan sama dengan prompt(x=0).split(""), kan?
WallyWest
1
@WallyWest prompt(x=0)berarti "set x ke 0, panggil promptdengan nilai pengaturan x ke 0", yang berarti, 0. Ini akan setara dengan menulis(x=0,prompt(x))
Cyoce
6

gs2 , 1 byte

d

d( 0x64/ sum), tentu saja, merangkum semua byte dalam input standar.

Lynn
sumber
5

Python 3 - 28 byte

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

Contoh dijalankan:

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

Mendapat input dari stdin, maps ordfungsinya untuk mendapatkan nilai ASCII dari setiap karakter, sums dan prints.

monmon bawah tanah
sumber
Ninja'd, saya punya ide yang sama persis. +1 untuk itu.
seequ
@ TheRare Begitu juga saya, meskipun milik saya lebih lama, karena saya menggunakan Python 2.7. Saya mulai berkarat;)
ɐɔıʇǝɥʇuʎ
@ Sintetica Saya selalu menggunakan Python 2.7, yang jawabannya pastiprint sum(map(ord,raw_input()))
lihat
1
@TheRare Yang merupakan jawaban tepat saya;)
ɐɔıʇǝɥʇuʎs
Nitpicking di sini, tetapi Anda dapat membuatnya tampil lebih baik dengan mengubah map(ord,input())ke input().encode(). Objek byte masih bisa dijumlahkan, dan panjangnya tetap sama.
cjfaure
5

8086 Assembly (16-bit) - 47 41 byte

Isi test.comfile adalah:

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

Pekerjaan aktual dilakukan dalam 11 byte pertama; Saya perlu sisanya untuk mencetak hasilnya dalam notasi desimal.

Kode sumber (berikan sebagai input ke debug.comassembler 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

Beberapa catatan pada kode:

  • Hanya menangani satu baris (hingga karakter end-of-line 13); hang jika tidak ada ujung-of-line
  • Hanya 7-bit karakter yang didukung (hasilnya salah kalau tidak)
  • Output 0 untuk input kosong
  • Tidak dapat menangani output yang lebih besar dari 64K
  • Instruksi pada alamat 0x10d menimpa dirinya sendiri (kebetulan murni)
  • Harus menggunakan emulator DOS seperti DosBox untuk merakit dan menjalankan program ini
anatolyg
sumber
Bagaimana Anda bisa mengerti itu? oO
Knerd
5

CJam, 3 byte (jumlah 260)

q1b

Anda dapat mencobanya secara online .
Terima kasih jimmy23013 untuk membantu memenggal 2 karakter :)

Penjelasan:

q     read the input into a string  
1b    convert from base 1, treating each character as its numeric value
aditsu
sumber
1
q1blebih pendek.
jimmy23013
4

Befunge98, 6 byte, jumlah: 445

2j@.~+

Setiap penerjemah harus baik-baik saja. Saya menggunakan CCBI .

Gunakan sebagai berikut:

printf 'Hello World!' | ccbi calc.fg

Bekerja untuk karakter multibyte dan string kosong.

Penjelasan

  • 2j- melompati dua instruksi berikutnya ( @dan .- lihat di bawah)
  • ~ - Letakkan char berikutnya di stack
  • +- tambahkan nilai kode char baru ke jumlah saat ini. Penunjuk instruksi membungkus ke awal dan siklus berulang
  • ketika ~menemukan EOF, ia membalik arah penunjuk dan dua instruksi "tersembunyi" dijalankan:
  • . - cetak jumlahnya
  • @ - keluar
har-wradim
sumber
4

Ruby, 13 12 byte

p~9+gets.sum

sumadalah fungsi bawaan yang merangkum karakter string. Kurangi 10 untuk memperhitungkan baris baru di akhir getsnilai pengembalian.

(Diedit 4 tahun kemudian untuk mengubah x-10ke ~9+x... nilai ~9is -10, tetapi ini memungkinkan kami menghapus ruang di antara pdan argumennya, menghemat satu byte.)

Gagang pintu
sumber
Saya sama sekali tidak terbiasa dengan Ruby, bisakah Anda menjelaskan kode Anda?
Knerd
1
dapatkan adalah fungsi yang membaca string dari standar sampai baris baru dibaca, mengembalikan string. String # sum menambahkan nilai dari setiap karakter, yang mengembalikan Fixnum. Fixnum # - hanya pengurangan. padalah metode untuk menghasilkan nilai debug dari sesuatu pada suatu baris.
Kyle Smith
2

PowerShell - 27

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

Contoh

> SumChars.ps1 'Hello World!'

Count    : 12
Average  : 
Sum      : 1085
Maximum  : 
Minimum  : 
Property : 
Rynant
sumber
26 jika Anda menggunakan [char[]]"$args"|measure -sselama hanya ada satu entri $ arg.
TessellatingHeckler
2

Julia - 11 7 karakter, jumlah yang dihasilkan = 943 536

Karena pertanyaan memungkinkan input berasal dari sumber apa pun yang Anda inginkan, saya memilih variabel yang ada. Asumsikan yang Aberisi string yang ingin kami evaluasi.

sum(A)1

Ternyata, Anda dapat menjumlahkan string secara langsung, dan itu akan mengevaluasi ... namun, karena cara penjumlahan karakter ditangani, jika ada jumlah ganjil karakter dalam string, itu akan menampilkan karakter, daripada bilangan bulat dalam bentuk apa pun. Karena itu, kami memaksanya untuk melakukan int dengan mengalikan dengan 1.

Versi lama:

sum(A.data)

Akan menghasilkan notasi heksadesimal (jika jumlahnya kurang dari 256, itu akan menjadi 0x??, jika tidak maka akan menjadi 8 byte sebagai 0x????????). Jika digunakan dalam kode di mana hasilnya digunakan, itu akan beroperasi sama seperti nomor lainnya (hanya bagaimana Julia menampilkan ints yang tidak ditandatangani).

Untuk melihat nilai hasil dalam desimal, lampirkan di dalam int(), seperti pada int(sum(A.data)).

Bagi siapa pun yang tidak mengenal Julia, Anda menetapkan dengan cara yang Apersis sama Anda melakukan tugas lain ke variabel. Jadi, A="Hello World!"atau A="sum(n.data)". Dalam kasus di mana Anda perlu memasukkan "atau 'karakter, ada beberapa pilihan, yang paling mudah (karena itu menghindari kebutuhan akan pengetahuan tentang nuansa string literal Julia) A=readline(), diikuti dengan hanya mengetikkan string ke dalam STDIN (tidak akan t menangani baris baru). Urutan melarikan diri untuk baris baru adalah, seperti biasa \n, tetapi saya tidak yakin Anda dapat menggunakannya dengan readline ().

Glen O
sumber
+1 untuk solusi pintar sialan ^^ Bisakah Anda memposting, bagaimana cara menetapkan nilai tes ke variabel n? Saya tidak tahu Julia sama sekali;)
Knerd
@Knerd - Saya sudah mengeditnya. Semoga bisa membantu.
Glen O
Terima kasih banyak. Saya mencoba untuk mengujinya nanti :)
Knerd
Perubahan kecil - beralih variabel dari nke Auntuk mengurangi jumlah yang dihasilkan dari 988 ke 943.
Glen O
OK, perubahan yang jauh lebih besar - Saya menyadari bahwa Anda dapat menjumlahkan string secara langsung, daripada mengekstraksi karakter dengan .data; tetapi karena mereka karakter, mereka menghasilkan hasil karakter untuk jumlah karakter ganjil Perkalian dengan 1 mengoreksi itu.
Glen O
2

K5, 2 byte (fungsi), 5 byte (program)

Fungsi

+/

Program

+/0:`

Tidak yakin apakah K5 dibuat sebelum atau setelah tantangan ini diposting. Apapun ... INI MENGAGUMKAN !!

Di K5, jika Anda melakukan operasi aritmatika pada string, itu mengubah karakter ke kode ASCII mereka. Jadi ini hanya menggunakan jumlah operator +/(sebenarnya, itu plus + lebih).

kirbyfan64sos
sumber
2

Matlab / Oktaf 4 byte (bonus: 405)

Kode ini adalah fungsi anonim, yang berfungsi, akan mengambil string, dan mengembalikan nomor yang diperlukan.

@sum
cacat
sumber
Saya tidak yakin tentang gs2jawabannya, tetapi setidaknya dengan pendekatan yang sama dengan jawaban Julia, saya masih harus menulis sum(A). Saya pikir sumsendirian tidak ok (bahkan tidak akan menjadi kode yang valid =).
flawr
2

Go (59 karakter)

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

Semuanya di Go adalah utf8 secara default. Codetext di `delimeters dijalankan dengan sendirinya memberikan output: 5399.

voutasaurus
sumber
Saya harus mengatakan saya agak terkejut tidak ada math.Sumuntuk digunakan dengan mapatau serupa
kucing
2

Jolf, 2 byte (tidak bersaing)

Coba di sini!

ui
u  sum of
 i  the input string

Umm ... aku tidak tahu harus berkata apa lagi.

Conor O'Brien
sumber
2

Gol> <> , 4 byte (tidak bersaing)

Catatan: bahasa ini lebih baru daripada tantangannya.

iEh+
randomra
sumber
Apakah dilafalkan seperti 'Golfish?'
kucing
@ kucing Ya, ini golf.
randomra
@randomra apakah "ikan • gol" atau "golf • ish" itu? Seperti ikan dengan gol, atau sesuatu seperti golf?
Cyoce
2

Javascript ES6, 41 byte

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

Berkat @ETHproduk untuk 2 byte disimpan!

Mama Fun Roll
sumber
1
Bagaimana dengan _=>[..._].map(y=>x+=y.charCodeAt(),x=0)|x?
ETHproduk
2

Python, 24 byte

Ini lebih pendek daripada solusi Python sejauh ini: fungsi anonim tanpa nama, yang mengambil string sebagai argumen, dan mengembalikan jumlahnya.

lambda x:sum(x.encode())

Cobalah online!

Pertama, x.encode()mengubahnya menjadi bytesobjek. Kemudian, sumtambahkan nilai-nilai kode-char. Karena ini adalah fungsi lambda, nilainya adalah implikasi yang dikembalikan.

Selain itu, orang dapat memiliki lambda x:sum(map(ord,x))untuk jumlah byte yang sama.

FlipTack
sumber
2

SML, 42 36

Hanya menambahkan bahasa lain.

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

Mengubah String menjadi char array, menghitung angka ascii dari setiap nilai dan menghitung jumlah semua angka ascii.

seseorang
sumber
1
Anda dapat menjatuhkan beberapa spasi dan memimpin ;. 36 bytes: tio.run/##DcpBCoAgEAXQq0zRQomiC7ivdYuWEWgRfB2xKby9uXzwHo/…
Laikoni
1

C 32

f(char*s){return*s?*s+f(s+1):0;}
bebe
sumber
main(int argc,char **argv){return(argc?main(0,&(argv[1])):(**argv?**argv+main(0,argv)+((*argv)++?0:0):0));}(107 karakter) meskipun mengabaikan karakter pertama karena beberapa alasan. Selain itu, kode keluar POSIX hanya 8 bit; dalam bash echo $?,.
aturannya agak luas jadi saya tidak menggunakan main. saya akan mengerjakan sesuatu yang lebih pendek mungkin
bebe
@ Bebe saya sedikit mengubah aturan, untuk memperjelas apa yang dibutuhkan;)
Knerd
1

D (fungsi: 60)

Jelas bukan untuk memenangkannya.

Dengan asumsi itu tidak perlu menjadi program yang lengkap

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

Disebut seperti itu

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

Keluaran:

Hello World! = 1085

D (program: 133)

Tidak menghitung jeda baris.

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;}

Dengan lebih banyak ruang putih dan nama variabel yang lebih panjang untuk dibaca

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;
}

Untuk mendukung jeda baris dalam input, saya bisa menggunakan byLine(KeepTerminator.yes)- cara yang benar, untuk 20 karakter - atau menambahkan '\n'ke baris saya - yang memecah input baris tunggal dan dapat memberikan jumlah yang salah pada Windows karena CRLF, untuk 18 karakter.

Hugo Dubé
sumber
+1 untuk dikirim bahkan jika Anda tahu, bahwa Anda tidak akan menang
Knerd
1

JavaScript (ES6) 54 58

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

54 byte berkat nderscore :

alert([...prompt()].reduce((v,c)=>v+c.charCodeAt(),0))
core1024
sumber
Bekerja dengan baik, saya mencobanya sekarang di es6fiddle.net
Knerd
Anda bisa menggunakan Firefox;)
core1024
1
Saya sedang bekerja jadi: D
Knerd
1
54:alert([...prompt()].reduce((v,c)=>v+c.charCodeAt(),0))
nderscore
1
Sekarang turun menjadi 51 sekarang :)alert([...prompt(x=0)].map(y=>x+=y.charCodeAt())|x)
nderscore
1

Delphi ( 87 83)

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

Tidak disatukan

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

Loop melalui Smenambahkan ordnilai char ke hasilnya. di mana x == hasil

Suntingan:

Disimpan 4 karakter dengan beralih ke int64 dan mengubah penambahan ke jumlah.

Teun Pronk
sumber
Apakah Anda memiliki versi gratis Delphi (masukkan versi Anda di sini) yang tersedia?
Knerd
Hm .. Tidak terlalu menyesal. Tapi saya bisa menjelaskan un-golfed apa yang terjadi di mana dan melakukan beberapa testcases jika Anda mau. Pascal gratis memiliki kurang lebih sintaks yang sama sehingga Anda bisa melakukannya.
Teun Pronk
Ok, aku akan memeriksanya.
Knerd
1

k (8 karakter)

+/6h$0:0

Terjemahan Q

sum `int$read0 0

Nilai bonus:

k)+/6h$0:0
+/6h$0:0
438i
skeevey
sumber
1

J (7)

Begitu dekat, namun sejauh ini ... Oh well, saya kira 7 cukup baik, karena jawaban ini juga menerima string kosong. (Saya mendasarkan penggunaan variabel sebagai input pada frasa from a file, stdin or whatever)

+/a.i.b

Penjelasan:

a.

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

a. berisi semua karakter ASCII.

   'people' i. 'pow'
0 2 6

x i. ymirip dengan python [x.index(i) for i in y].

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

Karenanya, a. i. ykonversikan yke array nilai ASCII-nya

   +/1 2 3 4 5 6
21

+/seperti sum: +/1 2 3 4 5 6berarti1+2+3+4+5+6

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

Semuanya beraksi

Untuk bonus:

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

Tidak buruk, kurasa.

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

Baiklah, sial.

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

Terima kasih @algorithmshark

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

Terima kasih @marinus

ɐɔıʇǝɥʇu
sumber
+1 untuk penjelasan yang bagus. Satu pertanyaan kecil, di mana saya bisa menjalankan J terbaik?
Knerd
1
@Knerd Dari pembuat ( jsoftware.com ) Saya kira, saya tidak tahu ada penerjemah online. (Fakta menyenangkan: mereka memiliki konsol resmi untuk Android.) Jsoftware.com/download/j801
Junıʇǝɥʇuʎs
@ Sintectica Itu keren: D Sekarang saya butuh smartphone Android: P
Knerd
Mengganti nama bmenjadi Ahasil dalam skor 449.
algorithmshark
@algorithmshark Oh, benar! Saya akan mengklaim bahwa bintang untuk saat ini;)
ɐɔıʇǝɥʇuʎs
1

R, 35 karakter (jumlah 3086) 26 byte (jumlah 2305)

sum(utf8ToInt(readline()))

readline()lebih dari satu karakter scan(,"")tetapi scanmembagi input pada spasi secara default.

Pemakaian:

> 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
sumber
1

Japt , 6 byte (tidak bersaing)

Jawaban ini tidak bersaing karena Japt dibuat setelah tantangan ini diposting.

U¬mc x

Cukup mudah. Cobalah online!

Bagaimana itu bekerja

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
Produksi ETH
sumber
Karena penasaran, mengapa Anda tidak menetapkan ¬semacam negasi?
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ Karena saya sedang terburu-buru dan hanya menugaskan mereka ketika saya melihat kebutuhan, tanpa perencanaan ke depan. Saya memiliki satu set yang lebih masuk akal siap untuk diluncurkan, dengan mengubah satu baris kode, tetapi saya ragu tentang itu karena akan membatalkan hampir setiap jawaban yang ada.
ETHproduk
Itu perbaikan yang mudah. Tambahkan conditional ke header (misalnya, url/interpreter.html#new=1); apa pun tanpa itu menggunakan set karakter lama, dan apa pun dengan itu menggunakan set karakter baru.
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ Terima kasih, saya akan pertimbangkan itu.
ETHproduk
1

PlatyPar , 2 byte (tidak bersaing)

us

Cobalah online !

umenghasilkan larik semua nilai karakter sandi dalam string input, dan smenemukan jumlah mereka.

Saat dijalankan dengan sendirinya, ia kembali 232.

Ini mirip dengan jawaban Conor's Jolf , kecuali bahwa saya menggunakan byte untuk mengubah string menjadi array kode karakter (yang tersirat dalam Jolf), sedangkan ia menggunakan byte untuk mengambil input (yang tersirat dalam PlatyPar).

Cyoce
sumber