Zorluğa yakın kod: Tam sayıların toplamı


39

Bu basit bir zorluktur: Bir tam sayı dizisi verildiğinde, içindeki tüm tam sayıların toplamını bulun.

Ancak bir bükülme ile. Puanınız, kodunuz ile aşağıdaki ifade arasındaki (meydan okuma) Levenshtein mesafesidir :

Bir tam sayı kümesi verildiğinde, içindeki tüm tam sayıların toplamını bulun.

Girişte yeni satırlar veya takip boşlukları olmadığını varsayabilirsiniz.

Örnek giriş / çıkış:

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

Levenshtein mesafesi için çevrimiçi bir hesap makinesini burada bulabilirsiniz: http://planetcalc.com/1721/


4
Elimde olmadan düşünemiyorum bu
Johne

7
Vay, çok yaratıcılık çocuklar xD ... öksürük yorum

1
Bunun başka bir zorlukla ancak aynı Levenshtein mesafe sorumlusu ile devam etmesi gerektiğini mi düşünüyorsunuz? Bunun net bir şekilde değerlendirilip değerlendirilmediğinden emin değil.

1
@NicoA kesinlikle! Belki de tek sorun bu görevin çok kolay olmasıydı.
Maltysen

2
@ NicoA Eğer öyleyse, izin verilmediğinin tanımlanmasında çok dikkatli olun. Örneğin, birçok dil ham dizgilerin etrafta yüzmesini sağlar.
xnor

Yanıtlar:


58

Python, mesafe 3

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

Bu, sumbenzer bir kümeyi toplayabilen yerleşik işlevi verir sum({3,5,7})==17. Kalan kısımlar yorumlandı. Bu, 3 düzenleme ile 3 mesafesine sahiptir:

  • İlk ekle #
  • Yeni satır ekle
  • Sonra boşluk değiştirin sumile#

3
İngilizceye benzeyen harika sözdiziminin bir diğer kullanışlı özelliği
qwr

1
Benim tek sorum, bu programın tam bir program olmadığı ve nasıl kullanılacağıdır (teoride), kodunuzda bile ihtiyacınız yok çünkü yerleşik bir programdır
Beta Decay

1
@BetaDecay Bu, işlevlerin varsayılan olarak izin verdiği ve işlevlerin değişmezlerine izin verilen kurallar nedeniyle çalışır .
xnor

54

Julia, uzaklık 27 26

Yorum yok!

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

Bu, bir Givendiziyi kabul eden ve öğelerinin toplamını döndüren bir işlev oluşturur . Pek çok Julia yerleşikinin ilgili adları olduğundan (ancak buradaki hesaplama ile ilgisi yoktur), yalnızca noktalı virgülle ayrılmış birkaç tane listeleyebiliriz. Listelenen son şey olmadıkları sürece iade edilmezler. Son bölüm aslında toplamı ve üç işlevi içeren bir dizi yapar ve ilk elemanı, toplamı seçer.


Hiç bir yorum kesinlikle mücadelenin özünde değildir. Aferin.
Christopher Wirt,

@ChristopherWirt Teşekkürler! :)
Alex A.

4
Bir gelişme önerebilir miyim? Given=(a;set;of=integer; find;th;[sum,of,all,integer, in][])- "Verilen" sonra hala aynı çalışır, ancak bu 18'lik bir mesafe vardır
Glen O

22

APL, mesafe 6 3

3 mesafe kaydedildi ...? Dennis'e teşekkürler!

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

Bu verilen bir diziyi ( +/) toplar . Cümlenin geri kalanı, bir yorum ( ) kullanılarak sonuna eklenir .


1
İhtiyacın yok {ve ⍵}. +/zaten geçerli bir işlev.
Dennis,

@Dennis Awesome, öneri için çok teşekkürler!
Alex A.

10

GolfScript, 5

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

Bu, yorum kullanmayan tam bir programdır (ancak birçok isim).

Çevrimiçi olarak Web GolfScript'te deneyin .


9

R, Mesafe 37 36 34

Yorum kullanmadan :)

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

Dikkat başında bir boşluk var.


8

Mathematica, mesafe 17

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

Herhangi bir yorum ya da no-op kullanmıyor, bunun yerine tüm kelimeleri değişken olarak ilan ediyor ve ardından sıfır ile çarparak onlardan kurtuluyor.

Ayrıca girdi olarak bir tam sayı kümesi alan tek cevap olma avantajına da sahiptir .

Giriş {1,2,3}, çıkışı 6beklendiği gibi sağlar.

Ne yazık ki, Mathematica Sumişlevi söz konusu görevi yerine getirmiyor, bu nedenle daha fazla sayıda bayt gerektiriyor.


Given a set of integers find the sum of all *0+Total@Input[]mesafe 14
Sızdıran Rahibe,

6

Java - 43 41

Denedim.

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: S.


Bir düzenleme mesafesini kaydetmek için fonksiyondaki argümanınızı a'dan r'ye değiştirebileceğinizi düşünüyorum.
Öğe118

@ Element118 Güzel yakalamak. Ayrıca, yöntem adının daha iyi sıralanması için döndüğümde dönüş türünü değiştirdim.
Anubian Noob

2
snippet'in başlangıcı olarak "int a_" kullanamaz mıydınız? (
int'den

6

RProgN , Mesafe 2.

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

RProgN'de, a, set, find ve sum komutlarının tümüdür. Diğer her şey varsayılan olarak sözdiziminde yoksayılır. a, alfabeyi yığına iter, bu da toplamın başarısız olmasına neden olur. Set hiçbir zaman yeterli argümanlara sahip değildir, bu yüzden daima hata yapar, hata yapar. Bul ya yanlış sayıda argüman var ya da alfabeyi işe yaramayan giriş yığınıyla karşılaştırmaya çalışıyor.

a ve set, aralarındaki boşluğu kaldırarak 'sabitlenebilir', aset bir fonksiyon değildir, bu yüzden göz ardı edilir. Bul, sadece başlangıçta eklenen fazladan bir karaktere sahiptir, bu da tanınmamasına ve göz ardı edilmesine neden olur. Giriş yığınının içeriğini uygun şekilde toplayan, yalnızca toplama bırakılır.

Sonunda, RProgN bir şeyler kazanabilir!

Çevrimiçi Deneyin!


4

CJam, 7 6 5

{:+}e# a set of integers, find the sum of all integers in it.

Bu, diziden yığından çıkan ve karşılığında bir tamsayı bırakan isimsiz bir fonksiyondur.

Mesafeyi 1 kısaltmak için @AboveFire'a teşekkürler .

Çevrimiçi deneyin.


4

Matlab, mesafe 29 28

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

Herhangi bir yorum kullanmadan :-)

Kod anonim bir işlev biçimindedir. Girişin sayıların bir vektörü (1D-array) olduğunu farz ediyorum.

Örnek:

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

O , 5

M] + o "Bir tam sayı kümesi göz önüne alındığında, içindeki tüm tam sayıların toplamını bulun.

Sayılar onaltılık ve ters negatif gösterimde olmalıdır:

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

Çevrimiçi deneyin


1
Yay bağlantısı çalışıyor!
Maltysen

Güzel demo! Yine de, buna IDE denebilecek bir fazlalık yok mu?
kirbyfan64sos

@ kirbyfan64sos Tamamen, ancak sözdizimi vurgulama ve ne gibi daha fazla özellik eklemek istiyorum. Şimdilik sadece bir tercüman.
faz

O esolangs sayfasına bir link daha yararlı olacağını düşünüyorum.
mbomb007

@ mbomb007 Ama bu korkunç güncel değil; Oradakilerin yarısı işe yaramaz ve bu belgelenen dilin sadece bir kısmı.
faz

3

K, 60 5

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

Sanırım semboller Leve-ne olursa olsun mesafe ile iyi gitmiyor ...

Hahaha. Başlangıçta, LeveXXX mesafesinin ne olduğu konusunda hiçbir fikrim yoktu, bu yüzden 60 aldım. O zaman, faydalı yorumlar sayesinde 5'e düştü.


Sembolleri kullandığın için değil, Levenshtein mesafesi ekleme, silme, yer değiştirme sayısıdır. Böylece orijinal dizgeden 60 silme işlemine sahipsiniz.
Maltysen

Semboller değil, sadece kodunuz o kadar kısa ki tümcenin uzunluğu - kodunuzun uzunluğu = 60. Ouch.

2
Sadece "Levenshtein" in doğru yazılışını elde etmek için yukarı kaydırma yapabileceğini biliyorsun, değil mi? ;)
Alex A.

@AlexA. Bu şekilde komik. :)
kirbyfan64sos

2
Onu suçlamıyorum. Sadece kopyalayıp yapıştırmadan önce hecelemeyi 10 kez kontrol etmem gerekti.

3

F #, mesafe 21

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

Bir fonksiyonun içinde boşluklar olan bir isim vermek için çift tik kullanma kabiliyetini sevmelisin.

Kullanımı:

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

6


3

Pip, mesafe 3

Önemsiz no-yorumlar-ama-çok-no-no-ops golflangıcı kulübüne katılmak ...

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

Pip için GitHub deposu

Kod pratikte kendisini belgeliyor; belki s/in/using/daha doğru bir açıklama için. Komut satırı argümanları olarak verilen tamsayılar g, buraya eklenip katlanan ve otomatik olarak yazdırılan listeye okunur . Geriye kalan her şey, sadece op olmayan değişkenlerdir.

İlk başta s, fşikayet etmeden çalıştığım için biraz şaşırdım , çünkü fana fonksiyona atıfta bulunuyor ve bir kod bloğunun menzilini anlamıyor. Ama sonra farkettim: ,range operatörü, bir fonksiyon argümanı verildiğinde, sadece başka bir fonksiyon inşa eder (Pip'deki birçok operatörde olduğu gibi). Yani bence s, fdeğerlendirir {Given a set of integers, find the sum of all integers in " ",$+g}. (Bu daha sonra zaten atılır.)

Son bir nokta: bu kod, Ghenüz hiçbir şeye atanmadığım Pip sürümüyle çalışır . Gelecekteki bazı sürümlerde Gikili veya üçlü bir operatör yaparsam , o zaman bir mesafe-4 sürümü gerekli olacaktır. givenBunun yerine kullanmak Givengüzel çalışırdı.


3

Haskell, mesafe 11

Yorum yok!

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

Kullanımı:

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

3

Cubix , Mesafe 9

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

Çevrimiçi deneyin!

Bu küp üzerine sarılır

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

Operasyon kodu

  • I+i Bir tamsayı girin, TOS'a ekleyin ve sonra bir karakter girin.
  • ?Test karakteri değeri. -1 (girişin sonu) için sola veya başka bir şey için sağa yönlendirme (0 giriş yapılamaz)
    • ;O@ pop tos, çıkış toplamı ve çıkış
    • <;u yönlendirmek, pop to TOS ve u dönüşü başlatmak


1

PHP4.1, mesafe 25

Bu, oldukça uzun bir süre ve gerçekten geç kalıyor.

Ama yine de, işte burada:

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

Bunun çalışması için, tuşunu kullanarak POST / GET / COOKIE / session üzerine bir dizi iletmeniz yeterlidir f_all_integers_in_i.


2
Yay trolling yorum yok!
Anubian Noob

1

Pyt , mesafe 1

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

Tüm alfanümerik karakterler Pyt’de kullanılamaz ve bir listenin toplamı yalnızca bir karakter alır::

Çevrimiçi deneyin!


0

C ++ 17, mesafe 44 29

Variadic Jenerik Lambda FTW

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

Önceki çözüm

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



0

Ly , skor 4

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

Sondaki yeni satırı not alın.

Çevrimiçi deneyin!

Kod oldukça açıklayıcı. &+Ly'nin özetleme operatörü, #yorum ise. Bir yorum satırına sahip bir programın sonlandırılmasının, yorumlayıcıda aslında bir özellik çağıracağım bir hata olan Ly'nin örtük çıktısını "yorumlayacağı" nedeniyle izleyen bir yeni satır eklemek zorunda olmam talihsiz bir durum.


0

dc, 14

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

yorumlar:

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

1 sayı girerseniz yığının boş olduğundan şikayet eder, ancak yine de çalışır ve 0 kaldırılması 2 fark kazandırır.


0

Excel VBA, Mesafe: 11

[a:a]ActiveSheet nesnesindeki aralıktan girdi alan ve VBE anlık penceresine çıkış yapan anonim VBE acil pencere işlevi

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

0

Beyin Flakı , 20

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

Çevrimiçi deneyin!

açıklama

Orijinal metinde parantez olmadığından, Brain-Flak'ta problemine neden olur. Ancak bu hala Brain-Flak'taki cevaplar gibi, bu cevabı önemsiz yapmaz.

Birinin ilk sezgisi muhtemelen aşağıdaki kod olacaktır.

({{}})

Hangisi çalışır ... yığında sıfır olmadıkça , bu durumda sıfıra kadar toplar. Bu sorunu aşmak için yığının boş olmadığını kontrol etmek için yığının yüksekliğini kullanmamız gerekir. Bu böyle ayarlanabilir

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

Bu işe yarıyor, ama yanlış bir şey var. Popları ve halkalardaki baskıları susturmaya devam ediyoruz, ancak neredeyse eşit olduklarından onları iptal etmenin bir yolu olmalı. Eğer denersek

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

nHer seferinde sona eriyoruz . Öyleyse işte hile, zaten netrafta oturmuş bir sitemiz var, işleri dengelemek için onu zorluyoruz.

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

1
Sadece, 2^8ppcg cevabınız için sizi tebrik etmek istedim
Taylor Scott


0

Jöle , Mesafe: 2

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

Çevrimiçi deneyin!

Jelly yalnızca ana bağlantıyı (son satır) değerlendirir ve açık komutlar diğer bağlantıları (diğer satırlar) çalıştırır.

Son satır Sgirdiyi toplar.

İlk satır gerçeklenmedi çünkü ana linkte referans yok.


0

Aksi! 4.2.2.9 (+ Araçlar), scratchblocks3 sözdizimi, mesafe 35

Bu bir fonksiyondur. integers, find the sum of all inteGirdi.

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

Bu nasıl girdi alıyor? Girişin kodun içine yapıştırılması mı gerekiyor? Genellikle bu tür bir girişe izin vermeyiz, bunun yerine girişin STDIN'den alınmasını veya gönderiminiz bir işlevse, argüman olarak iletilmesini gerektirir.
Buğday Sihirbazı

Hayır, bu bir fonksiyondur. integers, find the sum of all intebir argümandır, sadece scratchblocks3 sözdizimindeki normal değişkenlerden ayırt edilmez, bu yüzden açıklığa kavuşturdum
Silas Reel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.