Máy tính có thêm giá trị char


18

Bài tập

Xây dựng một máy tính, lấy bất kỳ chuỗi nào, từ tệp, stdin hoặc bất cứ thứ gì, và cộng tất cả các giá trị của ký tự.

Thí dụ

Input
Hello World!

Output
1085

Quy tắc

Máy tính cần chấp nhận mã hóa ASCII.

Mã ngắn nhất sẽ thắng.

Ghi chú

Liên quan đến nhận xét của m.buettner, tôi cần nói rằng, tôi đã không nghĩ đến phần đa bào.
Vì vậy, tôi để nó như là một điều tiền thưởng là tốt.
Máy tính nên được chạy dưới dạng văn bản, do đó không cần phải sửa đổi trước khi biên dịch hoặc phiên dịch.

Tặng kem

Nhờ Synthetica , đây là một phần thưởng nữa,

Chương trình có đầu ra thấp nhất khi bạn sử dụng mã của nó khi đầu vào của nó thắng được một ngôi sao.

Tôi không muốn sửa đổi nó hoàn toàn.

Nếu bạn viết nó bổ sung để xuất giá trị (phải) trong UTF-8, bạn sẽ có một ngôi sao.

Mã thực thi nhanh nhất trên Máy tính xách tay của tôi (Lenovo Yoga 13 Intel Core i5 3317U 1.7Ghz, RAM 8GB, SSD 128 GB, Intel HD 4000, Windows 8) được đánh dấu sao.

Mã web sẽ chạy đầu tiên trong IE11 với luân xa và sau đó là FireFox 29.0.1 với SpiderMonkey

Mã Linux sẽ chạy trên Raspberry Pi với Raspbian.

Chuỗi kiểm tra là đây:

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

Hãy vui vẻ viết mã :)

Bonusscoring

Tôi dự định thực hiện việc ghi điểm vào thứ bảy này để ngày 07/06/14, tất cả các câu trả lời sau ngày đó sẽ không nhận được điểm thưởng;)

Bạn có thể tải xuống mã tôi sẽ sử dụng để thử nghiệm ở đây, vui lòng rẽ nhánh và cải thiện nó :)

Ít cập nhật vì tiền thưởng, máy tính xách tay của tôi bị hỏng một phần vì vậy tôi sẽ làm điều đó vào cuối tuần tới, tôi thực sự xin lỗi vì điều đó :(


3
Tôi nhận được 1085 cho Hello World!việc sử dụng hai ngôn ngữ khác nhau cho các giá trị ASCII trên máy tính của mình.
Kyle Kanos

1
Có lẽ anh ta đã quên thêm '!'. chỉnh sửa bạn nhanh hơn 3 giây ...
gxtaillon

1
Ai đó có thể giải thích các downvote?
Knerd

3
Tôi đoán là các downvote chỉ ra rằng nó không thực sự là một vấn đề tốt.
Kyle Kanos

5
@Knerd chủ yếu, bởi vì nó hơi quá tầm thường trong hầu hết các ngôn ngữ (như bạn có thể thấy từ độ dài của bài nộp bạn đã nhận được)
Martin Ender

Câu trả lời:


10

GolfScript, 4 ký tự

{+}*

Chỉ cần sử dụng toán tử gập ( *) để thêm tất cả các ký tự.

Nếu nó phải làm việc với chuỗi rỗng, 9 ký tự:

{{+}*}0if

Cảm ơn @PeterTaylor đã cung cấp phiên bản 6-char thay thế hoạt động với chuỗi trống:

0\{+}/

Không hoạt động trên chuỗi trống.
Howard

@ Điểm tốt; chỉnh sửa.
Doorknob

0\{+}/hỗ trợ chuỗi rỗng
Peter Taylor

1
@Doorknob xin lỗi vì câu hỏi ngu ngốc, làm cách nào để nhập dữ liệu? Tôi sử dụng golfscript.apphb.com
Knerd

2
@immibid Một chiếc xích lô có mắt hình kỳ lạ. :-P (hoặc, trong GolfScript, khuôn mặt "hoán đổi và thêm mỗi"!)
Doorknob

7

APL (8)

+/⎕UCS⍞

Giải trình:

  • +/ Tổng của
  • ⎕UCS giá trị unicode của
  • nhập ký tự

Kết quả sẽ là Hello World!gì?
Knerd

@Knerd : 1085. Sẽ không đúng nếu nó cho đầu ra khác. Nó tính tổng các giá trị của các điểm mã Unicode của các ký tự.
bến tàu

ok, tôi không hiểu ý nghĩa của nó;)
Knerd

1
@knerd: có nghĩa là đọc một dòng từ bàn phím
marinus

Bạn có biết một thông dịch viên APL miễn phí không?
Knerd

6

Haskell 36

main=interact$show.sum.map fromEnum

Nó đọc văn bản từ đâu?
Knerd

stdin. $ printf "Hello World!" | ./charsum
gxtaillon

ok, tôi không thể chạy nó trên máy Windows của mình, tôi sẽ thử nó trên rpi khi tôi ở nhà
Knerd

Khi tôi thực thi mã của bạn, tôi chỉ nhận được chuỗi "Hello World!" là đầu ra. Đây là dòng lệnh của tôi:ECHO "Hello World! | ghci charsum.hs
Knerd

1
sử dụng interactshowthay vì getContents>>=print:main=interact$show.sum.map fromEnum
Flonk

6

Công cụ Shell + GNU, 29 byte

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

Lấy đầu vào từ stdin:

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

Điểm số riêng: 2385


c, 52 byte

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

Biên dịch với (một số cảnh báo được tạo ra):

gcc addchars.c -o addchars

Lấy đầu vào từ stdin:

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

Điểm số riêng: 4354


Đây là câu trả lời tuyệt vời. CodeBlocks với trình biên dịch GNU luôn phàn nàn nếu các biến không có kiểu, ví dụ int c, main (int p). Vì vậy, tôi nghĩ rằng những điều này nên được bao gồm trong câu trả lời của bạn.
bacchusbeale

@bacchusbeale Tôi đã thêm một lưu ý về các cảnh báo tổng hợp, nhưng tôi nghĩ rằng đây thường là par-for-the-Course khi chơi golf trong c. Miễn là mã biên dịch và chạy như mong đợi, thì các cảnh báo có thể bị bỏ qua. Xem codegolf.stackexchange.com/a/2230/11259codegolf.stackexchange.com/a/2204/11259 . Tất nhiên mã sản xuất là một vấn đề hoàn toàn khác.
Chấn thương kỹ thuật số

@DigitalTrauma là tất cả những không gian thực sự cần thiết? Shell có thể không bỏ qua khoảng trắng và sử dụng dấu - để đánh dấu các tham số mới không?
Ashwin Gupta

@AshwinGupta Bạn đang nói về odlệnh? od -AntuCkhông làm như vậy od -An -tuC.
Chấn thương kỹ thuật số

@DigitalTrauma vâng tôi đã. Ý tôi là bạn không thể làm od-An-tuChayod -An-tuC
Ashwin Gupta

6

Javascript ( ES6 ) 51

alert([...prompt(x=0)].map(y=>x+=y.charCodeAt())|x)

@nderscore Bạn có thể giải thích những gì ...trước promptđó không? Đây có phải là một thứ ES6 mới hay nó là tiền ES6?
WallyWest

1
@WallyWest Nó được gọi là toán tử lây lan và nó là một phần của dự thảo ES6.
nderscore

@nderscore Vì vậy, nếu tôi hiểu cú pháp toán tử trải rộng, việc sử dụng của bạn [...prompt(x=0)]đã đưa ra lời nhắc với giá trị mặc định là 0 (sau này sẽ được sử dụng trong tổng số) và áp dụng đầu vào đó như một mảng các ký tự ... ? Mà về mặt kỹ thuật sẽ giống như prompt(x=0).split(""), phải không?
WallyWest

1
@WallyWest prompt(x=0)có nghĩa là "đặt x thành 0, gọi promptvới giá trị của cài đặt x thành 0", nghĩa là 0. Nó sẽ tương đương với việc viết(x=0,prompt(x))
Cyoce

6

gs2 , 1 byte

d

d( 0x64/ sum), tất nhiên, tổng hợp tất cả các byte trong đầu vào tiêu chuẩn.


5

Python 3 - 28 byte

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

Chạy ví dụ:

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

Nhận đầu vào từ stdin, maps ordchức năng cho nó để nhận giá trị ASCII của từng ký tự, sums và prints.


Ninja'd, tôi đã có cùng một ý tưởng. +1 cho điều đó.
xem

@TheRare Tôi cũng vậy, mặc dù của tôi dài hơn, vì tôi đã sử dụng Python 2.7. Tôi đang trở nên rỉ sét;)
ɐɔıʇǝɥʇuʎs

@Synthetica Tôi luôn sử dụng Python 2.7, trong đó câu trả lời sẽ cóprint sum(map(ord,raw_input()))
hãy xem

1
@TheRare Đó là câu trả lời chính xác của tôi;)
I14uʎs

Nitpicking ở đây, nhưng bạn có thể làm cho nó hoạt động tốt hơn bằng cách thay đổi map(ord,input())thành input().encode(). Các đối tượng byte vẫn có thể được tính tổng và nó vẫn giữ nguyên độ dài.
cjfaure

5

Hội 8086 (16 bit) - 47 41 byte

Nội dung của test.comtập tin là:

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

Công việc thực tế được thực hiện trong 11 byte đầu tiên; Tôi cần phần còn lại để in kết quả theo ký hiệu thập phân.

Mã nguồn (cung cấp làm đầu vào cho trình biên dịch DOS debug.com):

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

Một số lưu ý về mã:

  • Chỉ xử lý một dòng (tối đa ký tự cuối dòng 13); treo nếu không có dòng cuối
  • Chỉ hỗ trợ các ký tự 7 bit (kết quả không chính xác)
  • Đầu ra 0 cho đầu vào trống
  • Không thể xử lý đầu ra lớn hơn 64K
  • Hướng dẫn tại địa chỉ 0x10d ghi đè lên chính nó (trùng hợp thuần túy)
  • Phải sử dụng trình giả lập DOS như DosBox để lắp ráp và chạy chương trình này

Làm thế nào bạn có thể hiểu điều đó? oO
Knerd

5

CJam, 3 byte (tổng 260)

q1b

Bạn có thể thử nó trực tuyến .
Cảm ơn jimmy23013 vì đã giúp chặt 2 ký tự :)

Giải trình:

q     read the input into a string  
1b    convert from base 1, treating each character as its numeric value

1
q1bngắn hơn
jimmy23013

4

Befunge98, 6 byte, tổng: 445

2j@.~+

Bất kỳ thông dịch viên nên được tốt. tôi sử dụng CCBI .

Sử dụng như sau:

printf 'Hello World!' | ccbi calc.fg

Hoạt động cho ký tự đa bào và chuỗi trống.

Giải trình

  • 2j- nhảy qua hai hướng dẫn tiếp theo ( @. - xem bên dưới)
  • ~ - đặt char tiếp theo trên stack
  • +- thêm giá trị mã của char mới vào tổng hiện tại. Con trỏ lệnh kết thúc từ đầu và chu kỳ lặp lại
  • khi nào ~ gặp EOF, nó đảo ngược hướng của con trỏ và hai lệnh "ẩn" được thực thi:
  • . - in tổng
  • @ - lối ra

4

Ruby, 13 12 byte

p~9+gets.sum

sumlà một hàm dựng sẵn tính tổng các ký tự của chuỗi. Trừ 10 để tính đến dòng mới ở cuối getsgiá trị trả về.

(Đã chỉnh sửa 4 năm sau để thay đổi x-10thành ~9+x... giá trị ~9-10, nhưng nó cho phép chúng ta xóa khoảng trắng giữa pvà đối số của nó, lưu một byte.)


Tôi hoàn toàn không quen thuộc với Ruby, bạn có thể giải thích mã của mình được không?
Knerd

1
được là một hàm đọc một chuỗi từ tiêu chuẩn cho đến khi một dòng mới được đọc, nó trả về một Chuỗi. Chuỗi # sum thêm các giá trị của mỗi ký tự, trả về Fixnum. Fixnum # - chỉ là phép trừ. plà một phương thức để xuất giá trị gỡ lỗi của một cái gì đó trên một dòng.
Kyle Smith

2

PowerShell - 27

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

Thí dụ

> SumChars.ps1 'Hello World!'

Count    : 12
Average  : 
Sum      : 1085
Maximum  : 
Minimum  : 
Property : 

26 nếu bạn sử dụng [char[]]"$args"|measure -smiễn là chỉ có một mục nhập $ arg.
TessellatingHeckler

2

Julia - 11 7 ký tự, tổng kết quả = 943 536

Vì câu hỏi cho phép đầu vào đến từ bất kỳ nguồn nào bạn muốn, tôi chọn một biến hiện có. Giả sử Acó chứa chuỗi chúng tôi muốn đánh giá.

sum(A)1

Khi nó bật ra, bạn có thể tính tổng chuỗi trực tiếp và nó sẽ đánh giá ... tuy nhiên, do cách xử lý các ký tự, nếu có một số ký tự lẻ trong chuỗi, nó sẽ xuất ra một ký tự, chứ không phải là một số nguyên của bất kỳ loại. Như vậy, chúng ta buộc nó chuyển sang int bằng cách nhân với 1.

Phiên bản cũ:

sum(A.data)

Sẽ xuất ra một ký hiệu thập lục phân (nếu tổng nhỏ hơn 256, thì nó sẽ là 0x??, nếu không nó sẽ là 8 byte như 0x????????). Nếu được sử dụng trong mã nơi sử dụng kết quả, nó sẽ hoạt động giống như bất kỳ số nào khác (đó chỉ là cách Julia hiển thị số nguyên không dấu).

Để xem giá trị của kết quả ở dạng thập phân, hãy đính kèm ở trên int(), như trong int(sum(A.data)).

Đối với bất kỳ ai không biết Julia, bạn chỉ định Achính xác giống như cách bạn thực hiện các bài tập khác cho các biến. Vì vậy, A="Hello World!"hoặc A="sum(n.data)". Trong trường hợp bạn cần nhập "hoặc 'ký tự, có nhiều tùy chọn, dễ nhất trong số đó (vì nó cần sự hiểu biết về các sắc thái của chuỗi ký tự chuỗi Julia) A=readline(), tiếp theo là chỉ cần nhập chuỗi vào STDIN (won ' t xử lý các dòng mới, mặc dù). Trình tự thoát cho dòng mới, như thường lệ \n, nhưng tôi không tin rằng bạn có thể sử dụng nó với readline ().


+1 cho giải pháp thông minh chết tiệt này ^^ Bạn có thể đăng bài, làm thế nào để gán giá trị thử nghiệm cho biến nkhông? Tôi hoàn toàn không biết Julia;)
Knerd

@Knerd - Tôi đã chỉnh sửa nó. Hy vọng điều đó có ích.
Glen O

Tuyệt vời cảm ơn bạn. Tôi cố gắng kiểm tra nó sau :)
Knerd

Thay đổi nhỏ - biến đổi từ nđể Agiảm tổng kết quả từ 988 xuống 943.
Glen O

OK, thay đổi lớn hơn nhiều - Tôi nhận ra rằng bạn có thể tổng hợp chuỗi trực tiếp, thay vì trích xuất các ký tự .data; nhưng vì là nhân vật, họ tạo ra kết quả nhân vật cho số lượng ký tự lẻ. Nhân với 1 hiệu chỉnh đó.
Glen O

2

K5, 2 byte (chức năng), 5 byte (chương trình)

Chức năng

+/

Chương trình

+/0:`

Không chắc chắn nếu K5 được tạo ra trước hoặc sau khi thử thách này được đăng. Bất kể ... ĐÂY LÀ TUYỆT VỜI !!

Trong K5, nếu bạn thực hiện các phép toán số học trên các chuỗi, nó sẽ chuyển đổi các ký tự thành mã ASCII của chúng. Vì vậy, điều này chỉ sử dụng toán tử tổng +/(thực ra, nó cộng + hơn).


2

Matlab / Octave 4 byte (tiền thưởng: 405)

Mã này là một hàm ẩn danh, thực hiện công việc, nó sẽ lấy một chuỗi và trả về số lượng cần thiết.

@sum

Tôi không chắc chắn về gs2câu trả lời, nhưng ít nhất với cách tiếp cận tương tự như câu trả lời của Julia, tôi vẫn nên viết sum(A). Tôi nghĩ summột mình là không ổn (thậm chí sẽ không có mã hợp lệ =).
flawr

2

Đi (59 ký tự)

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

Mọi thứ trong Go là utf8 theo mặc định. Codetext trong `delmeter chạy qua chính nó cho ra một đầu ra: 5399.


Tôi phải nói rằng tôi khá ngạc nhiên khi không có math.Sumsử dụng với maphoặc tương tự
con mèo


2

Gol> <> , 4 byte (không cạnh tranh)

Lưu ý: ngôn ngữ này mới hơn thách thức.

iEh+

Có phải nó được phát âm như 'Golfish?'
con mèo

@cat Vâng, đó là golf.
ngẫu nhiên

@randomra là "gol • fish" hay "golf • ish"? Như trong một con cá với gol, hoặc một cái gì đó giống như golf?
Cyoce

2

Javascript ES6, 41 byte

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

Cảm ơn @ETHproductions đã lưu 2 byte!


1
Thế còn _=>[..._].map(y=>x+=y.charCodeAt(),x=0)|x?
Sản phẩm ETH

2

Python, 24 byte

Điều này ngắn hơn bất kỳ giải pháp Python nào cho đến nay: một hàm ẩn danh chưa được đặt tên, lấy chuỗi này làm đối số và trả về tổng.

lambda x:sum(x.encode())

Hãy thử trực tuyến!

Đầu tiên, x.encode()biến nó thành một bytesđối tượng. Sau đó, sumthêm các giá trị mã char. Vì đây là hàm lambda, giá trị được trả về.

Ngoài ra, người ta có thể có lambda x:sum(map(ord,x))cùng số byte.



1

C 32

f(char*s){return*s?*s+f(s+1):0;}

main(int argc,char **argv){return(argc?main(0,&(argv[1])):(**argv?**argv+main(0,argv)+((*argv)++?0:0):0));}(107 ký tự) mặc dù nó bỏ qua ký tự đầu tiên vì một số lý do. Ngoài ra, mã thoát POSIX chỉ có 8 bit; trong bash, echo $?.

các quy tắc hơi rộng một chút vì vậy tôi đã không sử dụng chính. tôi sẽ làm việc trên một cái gì đó ngắn hơn có lẽ
bebe

@bebe Tôi đã thay đổi các quy tắc một chút, để làm rõ những gì cần thiết;)
Knerd

1

D (chức năng: 60)

Chắc chắn không phải trong nó để giành chiến thắng.

Giả sử nó không cần phải là một chương trình hoàn chỉnh

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

Gọi như vậy

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

Đầu ra:

Hello World! = 1085

D (chương trình: 133)

Không tính ngắt dòng.

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

Với nhiều khoảng trắng hơn và tên biến dài hơn để dễ đọc

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

Để hỗ trợ ngắt dòng trong đầu vào, tôi có thể sử dụng byLine(KeepTerminator.yes)- cách chính xác, cho 20 ký tự - hoặc nối thêm '\n'vào dòng của tôi - phá vỡ đầu vào một dòng và có thể đưa ra tổng sai trên Windows vì CRLF, cho 18 ký tự.


+1 để đăng ngay cả khi bạn biết rằng bạn sẽ không giành chiến thắng
Knerd

1

JavaScript (ES6) 54 58

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

54 byte nhờ nderscore :

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

Việc lành, tôi đã thử nó bây giờ trong es6fiddle.net
Knerd

Bạn chỉ có thể sử dụng Firefox;)
core1024

1
Tôi đang ở nơi làm việc nên: D
Knerd

1
54:alert([...prompt()].reduce((v,c)=>v+c.charCodeAt(),0))
nderscore

1
Giảm xuống còn 51 ngay bây giờ :)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;

Ung dung

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

Vòng lặp thông qua Sviệc thêm ordgiá trị của char vào kết quả. trong đó x == kết quả

Chỉnh sửa:

Đã lưu 4 ký tự bằng cách chuyển sang int64 và thay đổi cộng vào tổng.


Bạn có phiên bản Delphi miễn phí (chèn phiên bản của bạn vào đây) không?
Knerd

Hừm .. Không thực sự xin lỗi. Nhưng tôi có thể giải thích un-golfed những gì xảy ra ở đâu và làm một số testcase nếu bạn muốn. Free pascal có ít nhiều cùng một cú pháp để bạn có thể làm điều đó.
Teun Pronk

Ok, tôi sẽ kiểm tra xem.
Knerd

1

k (8 ký tự)

+/6h$0:0

Q dịch

sum `int$read0 0

Giá trị tiền thưởng:

k)+/6h$0:0
+/6h$0:0
438i

1

J (7)

Rất gần, nhưng cho đến nay ... Ồ, tôi đoán 7 là đủ tốt, vì câu trả lời này cũng chấp nhận chuỗi rỗng. (Tôi đang căn cứ vào việc sử dụng một biến làm đầu vào cho cụm từ from a file, stdin or whatever)

+/a.i.b

Giải trình:

a.

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

a. chứa tất cả các ký tự ASCII.

   'people' i. 'pow'
0 2 6

x i. ytương tự như trăn [x.index(i) for i in y].

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

Do đó, a. i. ychuyển đổi ythành một mảng các giá trị ASCII của nó

   +/1 2 3 4 5 6
21

+/giống như sum: +/1 2 3 4 5 6có nghĩa là1+2+3+4+5+6

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

Toàn bộ hành động

Đối với phần thưởng:

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

Không tệ, tôi đoán thế.

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

Chà, chết tiệt.

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

Cảm ơn @alerskymshark

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

Cảm ơn @marinus


+1 cho lời giải thích tuyệt vời. Một câu hỏi nhỏ, tôi có thể thực hiện J ở đâu tốt nhất?
Knerd

1
@Knerd Từ các nhà sản xuất ( jsoftware.com ) Tôi đoán, tôi không biết bất kỳ thông dịch viên trực tuyến nào. (Fun thực tế: họ có một giao diện điều khiển chính thức dành cho Android.) Jsoftware.com/download/j801
ɐɔıʇǝɥʇuʎs

@Synthectica Thật tuyệt: D Bây giờ tôi cần một điện thoại thông minh Android: P
Knerd

Đổi tên bthành Akết quả với số điểm 449.
thuật toán đánh dấu

@alerskymshark ơi, đúng rồi! Tôi sẽ tuyên bố ngôi sao đó ngay bây giờ;)
14

1

R, 35 ký tự (tổng số 3086) 26 byte (tổng số 2305)

sum(utf8ToInt(readline()))

readline()theo mặc định là một ký tự dài hơn scan(,"")nhưng scanphân chia đầu vào trên khoảng trắng.

Sử dụng:

> 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

1

Japt , 6 byte (không cạnh tranh)

Câu trả lời này không cạnh tranh vì Japt được tạo ra sau khi thử thách này được đăng.

U¬mc x

Khá đơn giản. Hãy thử trực tuyến!

Làm thế nào nó hoạt động

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

Vì tò mò, tại sao bạn không gán ¬cho một sự phủ định nào đó?
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ Vì tôi đang vội và chỉ định họ khi tôi thấy cần, không có kế hoạch trước. Tôi có một bộ có ý nghĩa hơn sẵn sàng để được tung ra, bằng cách thay đổi một dòng mã, nhưng tôi không hài lòng về điều đó bởi vì nó vô hiệu hóa gần như mọi câu trả lời hiện có.
Sản phẩm điện tử

Đó là một sửa chữa dễ dàng. Thêm một điều kiện vào tiêu đề (ví dụ, url/interpreter.html#new=1); bất cứ thứ gì không có nó đều sử dụng bộ ký tự cũ và bất cứ thứ gì sử dụng bộ ký tự mới.
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ Cảm ơn, tôi sẽ xem xét điều đó.
Sản phẩm điện tử

1

PlatyPar , 2 byte (không cạnh tranh)

us

Hãy thử trực tuyến !

utạo ra một mảng của tất cả các giá trị charcode trong chuỗi đầu vào và stìm tổng của chúng.

Khi chạy trên chính nó, nó trở lại 232.

Điều này tương tự như câu trả lời Jolf của Conor , ngoại trừ việc tôi sử dụng một byte để chuyển đổi chuỗi thành một chuỗi các ký tự (được ẩn trong Jolf), trong khi anh ta sử dụng một byte để truy xuất đầu vào (được ẩn trong PlatyPar).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.