Код, близький до виклику: Сума цілих чисел


39

Це просте завдання: Давши послідовність цілих чисел, знайдіть суму всіх цілих чисел у ньому.

Але з поворотом. Ваш бал - відстань Левенштейна між вашим кодом та наступною фразою (виклик):

Давши набір цілих чисел, знайдіть суму всіх цілих чисел у ньому.

Ви можете припустити, що у вхідних даних немає нових рядків або пробілів.

Приклад введення / виводу:

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

Онлайн-калькулятор відстані Левенштейн можна знайти тут: http://planetcalc.com/1721/


4
Я не можу не подумати про це
JohnE

7
Нічого собі, так багато творчості хлопців XD ... кашель коментар зловживає кашель

1
Як ви вважаєте, це повинно мати продовження з іншим викликом, але тим самим принципом дистанції Левенштейна? Не впевнений, чи це вважається гідним продовження чи ні.

1
@NicoA точно! Можливо, єдина проблема полягає в тому, що це завдання було занадто легким.
Мальтісен

2
@NicoA Якщо ви це зробите, будьте дуже обережні у визначенні того, що заборонено. Наприклад, багато мов дозволяють необмеженим рядкам плавати навколо.
xnor

Відповіді:


58

Пітон, відстань 3

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

Це дає вбудовану функцію sum, яка може підбити підсумок набору sum({3,5,7})==17. Решта частин коментуються. Це відстань 3 з 3 правками:

  • Додайте початкове #
  • Додати новий рядок
  • Замініть простір після sumна#

3
Ще одна корисна особливість чудового англійського синтаксису
qwr

1
Єдине моє запитання - як ним користуватися, оскільки це не повна програма, і (теоретично) вам навіть не потрібен ваш код, оскільки він є вбудованим
Beta Decay

1
@BetaDecay Це працює з-за правил, що функції дозволені за замовчуванням, і що функціональні літерали дозволені для функцій .
xnor

54

Юлія, відстань 27 26

Без коментарів!

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

Це створює функцію, яка називається, Givenяка приймає масив і повертає суму його елементів. Оскільки багато побудованих Джулії мають відповідні назви (але тут не мають значення для розрахунку), ми можемо лише перелічити кілька розділених крапками з комою. Поки вони не є останніми в списку, вони не повернуться. Остання частина фактично складає масив, що містить суму і три функції і вибирає перший елемент, суму.


Жодних коментарів, безумовно, більше в дусі виклику. Хороша робота.
Крістофер Вірт

@ChristopherWirt Дякую! :)
Олексій А.

4
Чи можу я запропонувати поліпшення? Given=(a;set;of=integer; find;th;[sum,of,all,integer, in][])- "Дано" тоді все ще працює те саме, але це має відстань 18
Глен О

22

APL, відстань 6 3

Збережено 3 відстані ...? дякую Деннісу!

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

Це підсумовує заданий масив ( +/). Залишок речення додається в кінці за допомогою коментаря ( ).


1
Вам не потрібно {і ⍵}. +/- це вже дійсна функція.
Денніс

@Dennis Awesome, велике спасибі за пропозицію!
Олексій А.

10

GolfScript, 5

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

Це повна програма, яка не використовує коментарів (але багато шумів).

Спробуйте його в Інтернеті в Web GolfScript .


9

R, відстань 37 36 34

Без використання коментарів :)

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

Зауважте, що на початку є пробіл.


8

Математика, відстань 17

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

Він не використовує жодних коментарів чи відмов, а натомість оголошує всі слова змінними, а потім позбавляється від них, множивши на нуль.

Це також має перевагу бути єдиною відповіддю, яка фактично приймає набір цілих чисел як свій вхід.

Вхід {1,2,3}забезпечує вихід, 6як очікувалося.

На жаль, Sumфункція Mathematica не виконує завдання у питанні, тому потребує більшої кількості байтів.


Given a set of integers find the sum of all *0+Total@Input[]відстань 14
Лина монашка

6

Ява - 43 41

Я намагався.

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.

Ява: P.


Я думаю, ви можете змінити свій аргумент у функції з a на r, щоб зберегти одну відстань редагування.
Елемент118

@ Element118 Гарний улов. Крім того, змінив тип повернення, коли я був у ньому, щоб мати лінійку імен методу краще.
Anubian Noob

2
Ви не можете використовувати "int a_" як початок фрагмента? (один пробіл перед int та 2 після нього перед a_
masterX244

6

RProgN , відстань 2.

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

У RProgN всі команди - a, set, find and sum. Все інше за замовчуванням ігнорується в синтаксисі. натискання алфавіту на стек, що призведе до відмови суми. Набір ніколи не має достатньо аргументів, тому завжди виходить з ладу, помиляючись. Find або має неправильну кількість аргументів, або намагається порівняти алфавіт із вхідним стеком, який не працює.

a і набір може бути "фіксованим", видаливши пробіл між тим часом, aset не є функцією, тому його ігнорують. Find просто містить додатковий символ, вставлений на початку, що також не розпізнається та ігнорується. Залишилася лише сума, яка зручно підсумовує вміст вхідного стеку.

Нарешті, RProgN може щось виграти!

Спробуйте в Інтернеті!



4

Матлаб, відстань 29 28

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

Без використання коментарів :-)

Код у формі анонімної функції. Я припускаю, що вхід - це вектор (1D-масив) чисел.

Приклад:

>> 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 "З огляду на набір цілих чисел, знайдіть у ньому суму всіх цілих чисел.

Цифри повинні бути в шістнадцятковій чи зворотному негативному позначенні:

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

Спробуйте в Інтернеті


1
Так, посилання працює!
Мальтісен

Гарна демонстрація! Це не називає це надмірним набором IDE?
kirbyfan64sos

@ kirbyfan64sos Повністю, але я хочу додати більше функцій, таких як підсвічування синтаксису та щось таке. Поки що це лише перекладач.
фаза

Я думаю, посилання на сторінку O esolangs було б корисніше.
mbomb007

@ mbomb007 Але це жахливо застаріло; половина речей там не працює, і це лише трохи мови, яка задокументована.
фаза

3

К, 60 5

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

Я здогадуюсь, що символи НЕ чудово йдуть на відстань, що не відповідає ...

Хахаха. Спочатку у мене не було ніякої відстані LeveXXX, тому я отримав 60. Потім, завдяки корисним коментарям, він впав до 5.


Справа не в тому, що ви використовуєте символи, відстань Левенштейна - це # додавання, видалення, заміни. тож у вас 60 видалення з початкового рядка.
Мальтісен

Це не символи, це лише те, що ваш код такий короткий, що довжина фрази - довжина вашого коду = 60.

2
Ви знаєте, що можете просто прокрутити вгору, щоб отримати правильний написання "Левенштейн", правда? ;)
Олексій А.

@AlexA. Це смішніше. :)
kirbyfan64sos

2
Я не звинувачую його. Мені довелося перевірити написання близько 10 разів, перш ніж я просто скопіював його.

3

F #, відстань 21

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

Ви повинні любити можливість використовувати подвійні галочки, щоб надати функції ім'я з пробілами в ньому.

Використання:

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

6


3

Піп, відстань 3

Приєднання до клубу тривіальних "без коментарів-але-багато-не-" відповідей на гольфланг ...

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

Сховище GitHub для Pip

Код практично сам документує; можливо s/in/using/для більш точного опису. Цілі числа, наведені як аргументи командного рядка, читаються у списокg , який тут складається на додавання та результат автоматично роздруковується. Більшість усього іншого - це лише змінні, які не існують.

Спочатку я трохи здивувався, що s, fпрацював без нарікань, оскільки fпосилатися на основну функцію, а прийняття діапазону кодового блоку не має сенсу. Але тоді я зрозумів: ,оператор діапазону, коли йому дають аргумент функції, просто будує іншу функцію (як це робить багато операторів у Pip). Тому я думаю, що s, fоцінює {Given a set of integers, find the sum of all integers in " ",$+g}. (Тоді все одно відкидають.)

Останній пункт: цей код працює з поточною версією Pip, в якій я ще нічого не призначав G. Якщо в якійсь майбутній версії я роблю Gдвійковий або потрійний оператор, тоді буде необхідна версія відстані-4. Використання givenзамість Givenбуло б добре працювати.


3

Хаскелл, відстань 11

Без коментарів!

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

Використання:

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

3

Кубікс , Відстань 9

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

Спробуйте в Інтернеті!

Це загортається на куб

      @ 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 .
      . . .
      . . .

Оперативний код є

  • I+i Введіть ціле число, додайте в TOS, а потім введіть символ
  • ?Значення символу тесту. Перенаправлення вліво на -1 (кінець введення) або праворуч на все інше (0 не можна вводити)
    • ;O@ поп TOS, сума виводу та вихід
    • <;u переадресація, поп TOS і поверніть на початок


1

PHP4.1, відстань 25

Цей досить довгий і справді пізно забігає.

Але все одно, ось це:

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

Щоб це працювало, потрібно просто передати його масиву через POST / GET / COOKIE / сеанс, використовуючи ключ f_all_integers_in_i.


2
Немає коментарів тролінг-так!
Anubian Noob


0

C ++ 17, відстань 44 29

Variadic Generic Lambda FTW

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

Попереднє рішення

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



0

Лі , оцінка 4

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

Зверніть увагу на останній рядок.

Спробуйте в Інтернеті!

Код досить зрозумілий. &+є оператором підбиття підсумків Ly, в той час #як коментар. Прикро, що мені доводиться включати останній рядок через те, що закінчення програми з рядком коментарів "коментує" неявний вихід Ly, який насправді є помилкою в інтерпретаторі, який я називаю функцією.


0

постійний струм, 14

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

коментарі:

?                   # 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

ТІО

він скаржиться на те, що стек порожній, якщо ви введете 1 число, але все ще працює, а видалення 0 зберігає 2 розл.


0

Excel VBA, Відстань: 11

Анонімна функція негайного вікна VBE, яка приймає вхід з діапазону [a:a]на об’єкт ActiveSheet і виводить на безпосереднє вікно VBE

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

0

Мозг-Флак , 20

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

Спробуйте в Інтернеті!

Пояснення

Оскільки в оригінальному тексті немає дужок, це зводиться до проблеми з у Brain-Flak. Але це все ще не робить цю відповідь тривіальною, так як відповіді в Брейн-Флак рідко є.

Першою інтуїцією, мабуть, став би наступний код

({{}})

Що працює ... якщо тільки на стеку немає нуля, в цьому випадку він просто підсумовує до нуля. Щоб подолати цю проблему, ми повинні використовувати висоту стека, щоб перевірити, чи стек не порожній. Це можна встановити так

([])    #{ 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 }

Цей працює, але тут щось не так. Ми продовжуємо замовчувати спливи та натискання в петлях, але вони майже рівні, тому повинен бути спосіб їх скасувати. Якщо ми спробуємо

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

Ми закінчуємо nкожен раз. Тож ось хитрість, у нас вже є nрозміщення, ми просто переміщуємо його в поштовх, щоб вирівняти речі.

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

1
Просто хотів привітати вас з вашою 2^8відповіді ppcg
Тейлор Скотт


0

Желе , відстань: 2

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

Спробуйте в Інтернеті!

Jelly оцінює лише основне посилання (останній рядок), а явні команди запускають інші посилання (інші рядки).

Останній рядок має S, який підсумовує вхід.

Перший рядок не виконується, оскільки в основному посиланні на нього немає посилання.


0

Оснастка! 4.2.2.9 (+ Інструменти), синтаксис скретчблоків3, відстань 35

Це функція. integers, find the sum of all inteє вхід.

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

Як це приймає внесок? Чи вхід повинен бути вставлений у код? Зазвичай ми не дозволяємо такого роду введення, але, швидше, вимагаємо, щоб введення було взято з STDIN або якщо ваше подання є функцією, щоб воно було передано як аргумент.
Пшеничний майстер

Ні, це функція. integers, find the sum of all inteце аргумент, він просто не відрізняється від регулярних змінних у синтаксисі scratchblocks3, саме тому я уточнив
Silas Reel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.