Mã gần với thách thức: Tổng các số nguyên


39

Đây là một thách thức đơn giản: Cho một chuỗi các số nguyên, tìm tổng của tất cả các số nguyên trong đó.

Nhưng với một twist. Điểm của bạn là khoảng cách Levenshtein giữa mã của bạn và cụm từ sau (Thử thách):

Cho một tập hợp các số nguyên, tìm tổng của tất cả các số nguyên trong đó.

Bạn có thể cho rằng không có dòng mới hoặc dấu cách trong đầu vào.

Ví dụ đầu vào / đầu ra:

Input: 1 5 -6 2 4 5
Output: 11
Input: 1 -2 10
Output: 9

Một máy tính trực tuyến cho khoảng cách Levenshtein có thể được tìm thấy ở đây: http://planetcalc.com/1721/


4
Tôi không thể không nghĩ về điều này
JohnE

7
Wow, rất nhiều người sáng tạo xD ... ho bình luận kẻ lạm dụng ho

1
Bạn có nghĩ rằng điều này nên có phần tiếp theo với một thử thách khác nhưng cùng hiệu trưởng khoảng cách Levenshtein không? Không chắc chắn nếu điều này được coi là phần tiếp theo xứng đáng hay không.

1
@NicoA chắc chắn! Có lẽ vấn đề duy nhất là nhiệm vụ này quá dễ dàng.
Maltysen

2
@NicoA Nếu bạn làm thế, hãy thật cẩn thận trong việc xác định những gì không được phép. Ví dụ, nhiều ngôn ngữ cho phép các chuỗi thô nổi xung quanh.
xnor

Câu trả lời:


58

Con trăn, khoảng cách 3

#Given a set of integers, find the 
sum#of all integers in it.

Điều này cung cấp cho hàm tích hợp sum, có thể tổng hợp một tập hợp như thế nào sum({3,5,7})==17. Các phần còn lại được bình luận. Điều này có khoảng cách 3, với 3 lần chỉnh sửa:

  • Thêm chữ cái đầu #
  • Thêm một dòng mới
  • Thay thế không gian sau sumbằng#

3
Một tính năng hữu ích khác của cú pháp giống tiếng Anh tuyệt vời
qwr

1
Câu hỏi duy nhất của tôi là làm thế nào để sử dụng nó vì đây không phải là một chương trình đầy đủ và (về lý thuyết) bạn thậm chí không cần mã của mình bởi vì nó được tích hợp sẵn
Beta Decay

1
@BetaDecay Điều này hoạt động vì các quy tắc mà các chức năng được cho phép theo mặc định và nghĩa đen của chức năng được phép cho các chức năng .
xnor

54

Julia, khoảng cách 27 26

Miễn bình luận!

Given(a)=(Set;of;integer; find; [sum(a),all,integer,in][1])

Điều này tạo ra một hàm gọi là Givenchấp nhận một mảng và trả về tổng các phần tử của nó. Vì rất nhiều nội dung của Julia có tên liên quan (nhưng không liên quan đến tính toán ở đây), chúng tôi chỉ có thể liệt kê một vài dấu phân cách bằng dấu chấm phẩy. Miễn là chúng không phải là thứ cuối cùng được liệt kê, chúng sẽ không được trả lại. Phần cuối cùng thực sự tạo ra một mảng chứa tổng và ba hàm và chọn phần tử đầu tiên, tổng.


Không có bình luận chắc chắn là nhiều hơn trong tinh thần của thách thức. Làm tốt lắm.
Christopher Wirt

@ChristopherWirt Cảm ơn! :)
Alex A.

4
Tôi có thể đề nghị một cải tiến? Given=(a;set;of=integer; find;th;[sum,of,all,integer, in][])- "Đã cho" sau đó vẫn hoạt động như nhau, nhưng điều này có khoảng cách 18.
Glen O

22

APL, khoảng cách 6 3

Đã lưu 3 khoảng cách ...? cảm ơn Dennis!

+/⍝en a set of integers, find the sum of all integers in it.

Điều này tổng hợp một mảng nhất định ( +/). Phần còn lại của câu được thêm vào cuối bằng cách sử dụng một nhận xét ( ).


1
Bạn không cần {⍵}. +/đã là một chức năng hợp lệ.
Dennis

@Dennis Tuyệt vời, cảm ơn rất nhiều vì lời đề nghị!
Alex A.

10

GolfScript, 5

~{Given a set of integers+ find the sum of all integers in it}*

Đây là một chương trình đầy đủ không sử dụng bình luận (nhưng rất nhiều noops).

Dùng thử trực tuyến trong Web GolfScript .


9

R, Khoảng cách 37 36 34

Không sử dụng ý kiến ​​:)

 as.integer ( sum (scan(,integer( ) )))

Lưu ý có một khoảng trống ở đầu.


8

Toán học, khoảng cách 17

Given a set of integers find the sum of all integers in it*0+Total@Input[]

Nó không sử dụng bất kỳ bình luận hoặc không có ý kiến ​​nào, mà thay vào đó tuyên bố tất cả các từ là biến, và sau đó loại bỏ chúng bằng cách nhân với số không.

Nó cũng có lợi ích là câu trả lời duy nhất thực sự lấy một bộ số nguyên làm đầu vào.

Đầu vào {1,2,3}cung cấp đầu ra 6như mong đợi.

Thật không may, Sumhàm Mathicala không thực hiện nhiệm vụ trong câu hỏi, do đó cần một số lượng byte lớn hơn.


Given a set of integers find the sum of all *0+Total@Input[]khoảng cách 14
Leaky Nun

6

Java - 43 41

Tôi đã thử.

float a_set_of(int[] r){return IntStream.of(r).sum()}//n it.
Given a set of integers, find the sum of all integers in it.

Java: P.


Tôi nghĩ bạn có thể thay đổi đối số của mình trong hàm từ a sang r để lưu một khoảng cách chỉnh sửa.
Element118

@ Element118 Bắt đẹp. Cũng thay đổi kiểu trả về trong khi tôi ở đó để có tên phương thức xếp hàng tốt hơn.
Anubian Noob

2
bạn không thể sử dụng "int a_" làm phần đầu của đoạn trích? (một khoảng
trắng

6

RProgN , Khoảng cách 2.

Given aset of integers, ;find the sum of all integers in it.

Trong RProgN, a, set, find và sum là tất cả các lệnh. Mọi thứ khác được mặc định bỏ qua trong cú pháp. a đẩy bảng chữ cái lên ngăn xếp, điều này sẽ khiến tổng không thành công. Đặt không bao giờ có đủ đối số, vì vậy luôn luôn thất bại, lỗi. Tìm hoặc có số lượng đối số sai hoặc cố gắng so sánh bảng chữ cái với ngăn xếp đầu vào, không hoạt động.

Cả a và set đều có thể được 'cố định' bằng cách xóa khoảng trắng giữa lúc đó, aset không phải là một hàm, vì vậy nó bị bỏ qua. Tìm chỉ có một ký tự phụ được chèn vào lúc bắt đầu, khiến nó cũng không được nhận ra và bỏ qua. Chỉ còn lại tổng, thuận tiện tính tổng các nội dung của ngăn xếp đầu vào.

Cuối cùng, RProgN có thể giành được thứ gì đó!

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



4

Matlab, khoảng cách 29 28

Given_a_set_of_integers=@(findthe)sum(all(1)*findthe)

Không sử dụng bất kỳ ý kiến ​​:-)

Mã này ở dạng một hàm ẩn danh. Tôi giả sử đầu vào là một vectơ (mảng 1D) của các số.

Thí dụ:

>> Given_a_set_of_integers=@(findthe)sum(all(1)*findthe)
Given_a_set_of_integers = 
    @(findthe)sum(all(1)*findthe)

>> Given_a_set_of_integers([1 5 -6 2 4 5])
ans =
    11

3

Ô , 5

M] + o "Cho một tập hợp các số nguyên, tìm tổng của tất cả các số nguyên trong đó.

Các số phải ở dạng thập lục phân và ký hiệu phủ định ngược:

  • -6 => 6_
  • -4 => 4_
  • -10 => A_

Dùng thử trực tuyến


1
Yay các liên kết hoạt động!
Maltysen

Bản demo đẹp! Không phải là gọi nó là một loại quá mức IDE, mặc dù?
kirbyfan64sos

@ kirbyfan64sos Hoàn toàn, nhưng tôi muốn thêm nhiều tính năng hơn như tô sáng cú pháp và không có gì. Bây giờ, nó chỉ là một thông dịch viên.
giai đoạn

Tôi nghĩ rằng một liên kết đến trang O esolangs sẽ hữu ích hơn.
mbomb007

@ mbomb007 Nhưng đó là lỗi thời khủng khiếp; một nửa những thứ trên đó không hoạt động, và đó chỉ là một chút ngôn ngữ được ghi lại.
giai đoạn

3

K, 60 5

+/ / Given a set of integers, find the sum of all integers in it.

Tôi đoán các biểu tượng KHÔNG đi độc đáo với Leve - bất cứ khoảng cách nào ...

Hahaha. Ban đầu, tôi không có khoảng cách LeveXXX là bao nhiêu, vì vậy tôi đã nhận được 60. Sau đó, nhờ những bình luận hữu ích, nó đã giảm xuống còn 5.


Không phải là bạn đang sử dụng các ký hiệu, khoảng cách Levenshtein là #of bổ sung, xóa, thay thế. vì vậy bạn có 60 xóa từ chuỗi ban đầu.
Maltysen

Nó không phải là ký hiệu, chỉ là mã của bạn quá ngắn đến độ dài của cụm từ - độ dài của mã của bạn = 60. Ouch.

2
Bạn biết bạn chỉ có thể cuộn lên để có cách viết đúng chính tả của "Levenshtein", phải không? ;)
Alex A.

@AlexA. Nó vui hơn theo cách này. :)
kirbyfan64sos

2
Tôi không trách anh ấy. Tôi đã phải kiểm tra chính tả khoảng 10 lần trước khi tôi chỉ sao chép nó.

3

F #, khoảng cách 21

let ``Given a set of integers, find the sum of all integers in it`` x = Seq.sum x

Gotta yêu thích khả năng sử dụng dấu tick kép để đặt tên cho hàm với khoảng trắng trong đó.

Sử dụng:

[1;2;3] |> ``Given a set of integers, find the sum of all integers in it`` |> printfn "%i"

6


3

Pip, khoảng cách 3

Tham gia câu lạc bộ những câu trả lời không có ý kiến ​​tầm thường nhưng rất nhiều câu trả lời ...

Given a set of integers, find the sum of all integers in $+g

Kho GitHub cho Pip

Các mã thực tế tài liệu chính nó; có thể s/in/using/cho một mô tả chính xác hơn. Các số nguyên được đưa ra dưới dạng đối số dòng lệnh được đọc vào danh sách g, ở đây được gấp lại khi thêm vào và kết quả được in tự động. Hầu hết mọi thứ khác chỉ là các biến, không có biến.

Ban đầu tôi hơi ngạc nhiên khi s, flàm việc mà không phàn nàn, vì fđề cập đến chức năng chính và lấy phạm vi của một khối mã không có ý nghĩa gì. Nhưng sau đó tôi nhận ra: ,toán tử phạm vi, khi được đưa ra một đối số hàm, chỉ cần xây dựng một hàm khác (cũng như nhiều toán tử trong Pip). Vì vậy, tôi nghĩ rằng s, fđánh giá để {Given a set of integers, find the sum of all integers in " ",$+g}. (Dù sao thì cũng bị loại bỏ.)

Điểm cuối cùng: mã này hoạt động với phiên bản hiện tại của Pip, trong đó tôi chưa được gán Gcho bất cứ điều gì. Nếu trong một số phiên bản tương lai tôi tạo Gmột toán tử nhị phân hoặc ternary, thì phiên bản khoảng cách 4 sẽ là cần thiết. Sử dụng giventhay vì Givensẽ làm việc độc đáo.


3

Haskell, khoảng cách 11

Miễn bình luận!

const sum"Given a set of integers, find the sum of all integers in it."

Sử dụng:

> const sum"Given a set of integers, find the sum of all integers in it." $ [1..10]
55

3

Hình khối , Khoảng cách 9

@ivOn a ;et I+ i?tegers, fu;d <he sum of all integers in it.

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

Điều này kết thúc vào khối

      @ i v
      O n a
      ; e t
I + i ? t e g e r s , f
u ; d < h e s u m o f a
l l i n t e g e r s i n
      i t .
      . . .
      . . .

Mã phẫu thuật là

  • I+i Nhập một số nguyên, thêm vào TOS sau đó nhập một ký tự
  • ?Kiểm tra giá trị nhân vật. Chuyển hướng trái sang -1 (kết thúc đầu vào) hoặc phải cho bất kỳ điều gì khác (0 không thể là đầu vào)
    • ;O@ pop Tosh, tổng đầu ra và thoát
    • <;u chuyển hướng, bật Tosh và bắt đầu khởi động


1

PHP4.1, khoảng cách 25

Đây là một cái khá dài và thực sự muộn trong quá trình chạy.

Nhưng dù sao, đây là:

<?=$n_a_set_of_integers_fi=array_sum($f_all_integers_in_i);

Để làm việc này, bạn chỉ cần truyền cho nó một mảng qua POST / GET / COOKIE / phiên, sử dụng khóa f_all_integers_in_i.


2
Không có bình luận troll yay!
Anubian Noob

1

Pyt , khoảng cách 1

Given a set of integers, find the Ʃum of all integers in it.

Tất cả các ký tự chữ và số đều không có ký tự trong Pyt và tổng danh sách chỉ mất một ký tự:

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


0

C ++ 17, khoảng cách 44 29

Biến thể chung Lambda FTW

[](auto...t){return(t+...);}//the sum of all integers in it.

Giải pháp trước

template<class...t>int s(t...l){return(...+l);}//gers in it.



0

, điểm 4

&+#Given a set of integers, find the sum of all integers in it.

Lưu ý các dòng mới.

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

Các mã là khá tự giải thích. &+là tổng điều hành của Ly, trong khi #là một nhận xét. Thật không may là tôi phải đưa vào một dòng mới theo dõi do việc kết thúc một chương trình bằng một dòng bình luận sẽ "bình luận" đầu ra ngầm của Ly, đây thực sự là một lỗi trong trình thông dịch mà tôi đang gọi là một tính năng.


0

đc, 14

?[+z1 <f]d  sf xp#egers, find the sum of all integers in it.

bình luận:

?                   # read numbers
 [                  # start macro
  +                 # add up last two things on stack
   z1 <f            # if stack size is more than 1, execute macro at register 'f'
        ]           # end macro
         d          # dupe it
            sf      # saving one copy to register 'f'
               x    # and executing another
                p   # printing result

TIO

nó phàn nàn về ngăn xếp trống nếu bạn nhập 1 số, nhưng vẫn hoạt động và xóa 0 lưu 2 diff.


0

VBA Excel, Khoảng cách: 11

Hàm cửa sổ tức thời VBE ẩn danh nhận đầu vào từ phạm vi [a:a]trên đối tượng ActiveSheet và xuất ra cửa sổ ngay lập tức VBE

?[Sum(a:a)] 'f integers, find the sum of all integers in it.

0

Brain-Flak , 20

(([]){[{}]{}([])}{})ers, find the sum of all integers in it.

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

Giải trình

Vì không có dấu ngoặc đơn trong văn bản gốc, điều này dẫn đến một vấn đề về trong Brain-Flak. Nhưng điều đó vẫn không khiến câu trả lời này trở nên tầm thường, vì hiếm khi câu trả lời trong Brain-Flak là như vậy.

Trực giác đầu tiên của một người có lẽ sẽ là đoạn mã sau

({{}})

Mà hoạt động ... trừ khi có một số 0 trên ngăn xếp trong trường hợp nó chỉ tính tổng cho đến số không. Để giải quyết vấn đề này, chúng ta phải sử dụng chiều cao ngăn xếp để kiểm tra xem ngăn xếp đó có trống không. Điều này có thể được thiết lập như thế này

([])    #{ Push stack height }
(       #{ Start Push }
{       #{ Loop until zero }
 <{}>   #{ Silently Pop the last height }
 {}     #{ Grab a value from the stack }
 <([])> #{ Silently push the stack height again }
}       #{ End loop }
{}      #{ Remove last stack height }
)       #{ Push the result }

Cái này hoạt động, nhưng có cái gì đó sai với nó. Chúng tôi tiếp tục im lặng các cửa sổ bật lên và các cú đẩy trong các vòng lặp nhưng chúng gần như bằng nhau vì vậy cần có cách để loại bỏ chúng. Nếu chúng ta cố gắng

([])({[{}]{}([])}{})

Chúng tôi kết thúc nmỗi lần. Vì vậy, đây là mẹo, chúng tôi đã có một nđịa điểm xung quanh, chúng tôi chỉ cần đưa nó vào đẩy để cân bằng mọi thứ.

(([]){[{}]{}([])}{})

1
Chỉ muốn chúc mừng bạn về 2^8câu trả lời ppcg của bạn
Taylor Scott


0

Thạch , Khoảng cách: 2

Given a set of integers, find the sum of all integers in it.
S

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

Jelly chỉ đánh giá liên kết chính (dòng cuối cùng) và các lệnh rõ ràng sẽ chạy các liên kết khác (các dòng khác).

Dòng cuối cùng có S, tổng hợp đầu vào.

Dòng đầu tiên không được thực thi vì không có tham chiếu đến nó trong liên kết chính.


0

Chộp lấy! 4.2.2.9 (+ Công cụ), cú pháp Scratchblocks3, khoảng cách 35

Đây là một chức năng. integers, find the sum of all intelà đầu vào.

for each(et)of(integers, find the sum of all inte
change[s v]by(et
end
report(s

Làm thế nào để có đầu vào này? Là đầu vào được cho là dán vào mã? Thông thường chúng tôi không cho phép loại đầu vào đó mà yêu cầu đầu vào đó được lấy từ STDIN hoặc nếu nội dung gửi của bạn là một hàm, thì nó được truyền dưới dạng đối số.
Phù thủy lúa mì

Không, nó là một chức năng. integers, find the sum of all intelà một đối số, nó chỉ không được phân biệt với các biến thông thường trong cú pháp Scratchblocks3, đó là lý do tại sao tôi làm rõ
Silas reel
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.