N'den uzakta en büyük n konumunu bulun


29

Bu sorunun devamı .

Görev

Olumlu bir tamsayı dizisi verildiğinde, bunun için en büyük k öğesini bulun :

Orada var olan bazı pozitif tam mesafesi n dizideki eleman bulunduğu böylece, n  yerler sola veya sağa gelen k eşittir n .

Dizinin, bu koşulu sağlayan en az bir eleman içermesi garanti edilir.

En kısa kod (bayt cinsinden) kazanır. İstediğiniz I / O formatını seçebilirsiniz.

Örnek

Giriş verilen

[4, 6, 7, 9, 3, 6, 5, 7, 2]

Uygun değerler:

  • 4Gibi bir orada olduğunu 7onun sağında 7 pozisyonları bulunduğu
  • Birincisi 6, 3sağında 3 tane konum var.
  • 3Gibi bir orada olduğunu 4onun solunda 4 pozisyonları bulunduğu
  • 5Gibi bir orada olduğunu 2onun sağında 2 pozisyonları bulunduğu
  • İkincisi 7, olduğu gibi 3solda 3 konumludur.

Bu değerlerden en büyüğüdür 7.

Test durumları

[1, 13] → 13
[2, 9, 8, 3, 72, 2] → 8
[5, 28, 14, 5, 6, 3, 4, 7] → 14
[1, 3, 5, 15, 4, 1, 2, 6, 7, 7] → 7
[5, 1, 3, 5, 2, 5, 5, 8, 5, 1, 5, 1, 2, 3] → 5
[5, 12, 2, 5, 4, 7, 3, 3, 6, 2, 10, 5, 5, 5, 4, 1, 8, 5] → 10

Örnekte iki (fazladan gereksiz olsa da) durum: ilk 6 (tekrar) doğru olduğu için beş beş konum var; veya ikinci 7 (tekrar) olduğu için solunda altı altı pozisyon var.
Jonathan Allan,

1. Telefonumda, başlık "Uzaktaki en büyük sayı konumlarını bulun" olarak görünüyor. 2. Belirtilen koşul, k'nın (k'ya bağlı olmayan bir özellik) olduğu şeklindedir. Kesinlikle yanlış olmalı.
Peter Taylor

@ PeterTaylor "bu" "bu eleman" da k anlamına gelir.
Taemyr

1
@ Taemyr, bu iki nedenden dolayı anlam ifade etmiyor: öncelikle, k'nin bir eleman olduğu söylenmiyor ; ve ikincisi, “ şartı sağlayan “ en büyük elemanı bulmamız ”istendiği için “ bu eleman ”şartın dışında bir öncül vardır.
Peter Taylor

2
Belki de “bu şekilde en büyük k öğesini bulun” diyerek tüm kafa karışıklıklarını önleyebilir ve ardından tanımda bu öğenin yerine k kullanabilirsiniz ?
Martin Ender

Yanıtlar:


3

Jöle , 9 bayt

Jạþ`=ḅa¹Ṁ

Çevrimiçi deneyin! veya tüm test durumlarını doğrulayın .

Nasıl çalışır

Jạþ`=ḅa¹Ṁ  Main link. Argument: A (array)

J          Indices; yield [1, ..., len(A)].
   `       Use the previous return value as left and right argument:
 ạþ        Absolute difference table; take the absolute value of the difference
           of each pair of indices, yielding a 2D array.
    =      Compare each absolute difference with the corresponding item of A.
     ḅ     Base; convert each Boolean list from base i to integer, where i is the
           corresponding item of A. The value of i is not important; we only care
           if the list contains a 1, which will result in a non-zero integer.
       ¹   Identity; yield A.
      a    Logical AND; replace non-zero values with the corresponding items of A.
        Ṁ  Take the maximum.

1
Hmm, bununla ilgili politikanın ne olduğundan emin değilsiniz, ancak aynı kullanıcı tarafından aynı program dilinde ayrı cevaplarda iki farklı yaklaşımınız var. 9- ve 10 bayt snippet'lerin her ikisinin de aynı programlama dili olduğu için aynı cevaba yerleştirilmesi daha uygun olmaz mıydı? Aynı programlama dilinde birden çok kullanıcının birden çok cevabı anlayabiliyorum, ancak aynı kullanıcının aynı programlama dilinde farklı yaklaşımları düzenlemeler olarak daha uygun olacağını şahsen düşünüyorum. Sadece benim düşüncem.
Kevin Cruijssen

5
Bu benim ilk meta sorumdu ve fikir birliği, farklı yaklaşımların farklı cevaplarda yayınlanması gerektiği gibi görünüyordu. Bu durumda, yaklaşımlarımın sonunda en fazla ortak noktadan başka bir şey yok, bu yüzden ayrı bir görev için gittim.
Dennis,

8

05AB1E , 21 bayt

vyN+Ny-})¹gL<Ãv¹yè})Z

açıklama

v      }               # for each num in input
 yN+                   # push index + num
    Ny-                # push index - num
        )              # wrap stack in a list
         ¹gL<Ã         # remove indices outside the range of input
              v¹yè})   # get list of elements in input at the remaining indices
                    Z  # get max

Çevrimiçi deneyin!


Muhtemelen her zaman kullanıyorsun, ama ben sadece "listedeki yığını topla" yı fark ettim. Temiz.
GreenAsJade

@GreenAsJade: Evet, en çok kullandığım komutlardan biri :)
Emigna

7

Haskell, 61 57 55 bayt

f x=maximum[a|(n,a)<-x,(i,b)<-x,b==abs(n-i)]
f.zip[0..]

Kullanım örneği: (f.zip[0..]) [5,28,14,5,6,3,4,7]-> 14.

(Daha fazla veya daha az) tanımının doğrudan bir uygulama: Her dizin için ngiriş listesinin xkeep a := x!!nbir indeks varsa inerede b := x!!ieşittir abs(n-i). Maksimum bul.

Düzenleme: @xnor iki bayt kaydetti. Teşekkürler!


Kullanmadığınızdan x, içinde bir işlev tanımlamak zve oluşturmak için daha kısa olmalıdır zip[0..].
xnor

6

Jöle , 10 bayt

,N+JFfJị¹Ṁ

Çevrimiçi deneyin! veya tüm test durumlarını doğrulayın .

Nasıl çalışır

,N+JFfJị¹Ṁ  Main link. Argument: A (array)

,N          Pair A with -A (element-wise negative).
   J        Yield the indices of A [1, ..., len(A)].
  +         Add the elements of A (and their negatives) with the corr. indices.
    F       Flatten the resulting 2D array.
     fJ     Filter indices; remove invalid indices (not in [1, ..., len(A)]) from
            the generated array. The result is the list of all indices of eligible
            elements of A.
       ị¹   Retrieve the corresponding elements of A.
         Ṁ  Take the maximum.

5

Python 3, 85 80 72 Bayt

lambda l,e=enumerate:max(i for p,i in e(l)for s,j in e(l)if j==abs(s-p))

Düzenleme: @Dennis sayesinde -8 Bayt


5

EXCEL: 32 30 bayt

=MAX(IF(A:A-ROW(A:A)<0,A:A,0))

Hala bu kadar kısa kaldığıma inanamıyorum ...

Nasıl kullanılır:
bunu HERHANGİ bir hücreye yapıştırın Sütun A hücrelerini hariç tutun. Yapıştırdıktan sonra, hala düzenlerken control+ shift+ tuşlarına basarak enterdoğru şekilde girin.
Değerlerinizi A sütununa yerleştirin, hücre başına 1 değer (CSV girişine göre).

Bunun nasıl çalıştığını öğrenmek istiyorsanız , Excel'deki golf sorularına ilişkin ipuçları için ek bir ipucu yayınladım .


Bu mükemmel golfleri çok seviyorum - kim düşündü !!
GreenAsJade,

4

JavaScript (ES6), 61 bayt

a=>Math.max(...a.filter((_,i)=>a.some((e,j)=>e==i-j|e==j-i)))

4

Perl, 45 bayt

İçin +2 içerir -ap

STDIN üzerindeki bir satıra numaralar verin:

largest.pl <<< "5 12 2 5 4 7 3 3 6 2 10 5 5 5 4 1 8 5"

largest.pl:

#!/usr/bin/perl -ap
($_)=sort{$b-$a}map@F[$^P=$n-$_,$n+++$_],@F

^PDeğişmez kontrol karakteriyle değiştirilerek bir bayt daha kazanılabilir , ancak bu STDERR'de son perls konusunda bir uyarıya yol açar.

Devraldı largest number + array length < 2^32


3

Pyth, 19 17 bayt

@ Pietu1998'e -2 bayt için teşekkürler

eS@LQ@UQs.e,-kb+b

STDIN'deki bir listenin girişini alan ve sonucu basan bir program.

Çevrimiçi deneyin

Nasıl çalışır

eS@LQ@UQs.e,-kb+b  Program. Input: Q
         .e        Map over Q (implicit input fill) with elements as b and indices as k:
            -kb     k-b
               +b   k+b (Implicit fill with k)
           ,        2-element list of those (possible indices)
        s          Flatten that
      UQ           Yield [0, 1, 2, 3..., len(Q)-1]
     @             Filter the flattened list by presence in the above, removing invalid
                   indices
  @LQ              Index into Q at those indices
 S                 Sort that
e                  Yield the last element of that, giving the maximum
                   Implicitly print

}#aynıdır @. Ayrıca, ,-kb+bkson kparçayı yeniden düzenlerseniz, Pyth otomatik olarak yerleştirdiğinden beri sonuncuyu kaldırabilirsiniz .
PurkkaKoodari

@ Pietu1998 Teşekkürler. Numaralandırmanın örtülü doldurulmasından haberim yoktu; Bu, başka bir harita tipi fonksiyon için işe yarar mı?
TheBikingViking

Herhangi bir lambda için çalışır, ilk lambda değişkeni ile tüm lambdaların kalanını otomatik olarak doldurur.
PurkkaKoodari 22:16

3

MATL, 13 Bayt

ttn:tYTq=a)X>

Giriş bir sütun vektörü olmalıdır. Yani, giriş [1; 2; 3] gibi noktalı virgülle ayrılmış veya sonunda [1,2,3] 'gibi bir transpozit kene ile ayrılmış virgül vardır.

Çevrimiçi deneyin!

Tüm test durumları: (A) , (B) , (C) , (D) , (E) , (F)

2 karakterden tasarruf etmek için MATL sohbet odasında önerileriniz için Suever'a teşekkür ederiz .

Açıklama:

Genel strateji, temel kavramın açıklandığı Octave / MATLAB cevabımla aynıdır: https://codegolf.stackexchange.com/a/94161/42247

Bu MATL cevabındaki özel kod aşağıdaki gibi oluşturulmuştur:

Yöntemin çekirdeği, girişleri abs (ij) olan Toeplitz matrisinin yapımıdır. Toeplitz matrisini ilk önce MATL'nin toeplitz komutu YT ile abs (i-1) +1 girişleri ile oluşturduk:

n:tYT % Equivalent to @(v)toeplitz(1:length(v))

Bunun nasıl çalıştığını görmek için, giriş vektörünü bu kod snippet'ine 'v' olarak çağıralım. 'N' v uzunluğunu bulur, '': 'vektör 1: uzunluk (v)' yi oluşturur. Daha sonra 't' başka bir 1 kopyasını çıkarır: yığında uzunluk (v); bu ekstra kopyaya MATL'deki YT fonksiyonunda iyi bilinen bir hata nedeniyle ihtiyaç duyulmaktadır (toeplitz'in MATL eşdeğeri ()), burada 1 yerine girişin iki kopyasını bekler. O zaman YT bu vektörün iki kopyasını alır. : istifin uzunluğu (v), ve onlardan abs (ij) +1 Toeplitz matrisini yapar.

Şimdi Toeplitz matrisini abs (ij) girişleriyle almak için bu matristen 1 çıkartmamız ve bu abs (ij) Toeplitz matrisinin girişin sütun kopyalarını içeren tüm sütun vektörlerinin matrisine eşit olduğu ij konumlarını bulmamız gerekiyor. vektör v. Bu şu şekilde yapılır:

t n:tYT q=
% t [code] q= is equivalent to @(v) [code](v)-1 == v

İlk 't' girişin fazladan bir kopyasını çıkarır ve yığında saklar. 'N: tYT', toeplitz matrisini daha önce açıklandığı gibi yapar ve istifin içine çıkarır. Daha sonra 'q', Toeplitz matrisinden 1 çıkarır ve '=', abs (ij) matrisi ile sütunları girişin kopyaları olan vektör arasındaki elementel eşitlik karşılaştırmasını yapar. Bir sütun vektörünü bir matrisle karşılaştırarak, MATLAB / MATL'ın operatör yayın kurallarından (karşılaştırma yapılmadan sütun vektörünün herhangi bir komut vermeden bir matris yapmak için kopyalandığını) örtük olarak kullandığımızı unutmayın.

Son olarak, yukarıda oluşturulan matris farkındaki ij 'girişinin 1'e eşit olduğu bir j sütununun olduğu satır indekslerini bulmamız gerekir, sonra bu endekslere karşılık gelen giriş vektörünün değerini alın, sonra da maksimum değeri alın. Bu aşağıdaki üç adımda:

1) Sıfır olmayan bir satır için endeksleri bulun:

tn:tYTq= a
% [code] a is equivalent to @(v) any([code](v))

2) Bu indekslere karşılık gelen giriş vektörünün elemanlarını çıkarın:

t tn:tYTq= a ) X>
% t [code] ) is equivalent to @(v) v([code](v)]

3) Maksimum elemanı bulun ve iade edin:

t tn:tYTq= a ) X>
% [code] X> is equivalent to @(v) max(v).

20.2.2 sürümünde işlevin davranışı YTdeğişmiştir . Şimdi varsayılan olarak 1 giriş kullanır (genel olarak daha kullanışlıdır). Bu size burada 1 bayt kazandıracak (daha önce kaldır ), dilde değişiklik yapılması zorunluluğu içerdiğinden istismar edilemez. Ancak şu anda TIO'da yayınlanan yeni sürümde cevabınızın artık geçerli olmadığı sonucuna varıldıtYT
Luis Mendo

Bağlantılı kodu düzenleyebilir ve not bırakabilir veya bu bağlantıyı daha eski sürümleri destekleyen MATL Online tercümanına kullanabilirsiniz. Maalesef diğer bağlantıları da güncellemeniz gerekiyor.
Verdiğimiz

Bundan bağımsız olarak yapabilirsiniz değiştirilmesi bayt 1 kurtarmak n:tarafındanf
Luis Mendo

2

Ruby, 66 bayt

->a{i=-1;a.map{|e|i+=1;[a[j=i+e]||0,a[0>(k=i-e)?j:k]||0].max}.max}

2

Octave / MATLAB, 40 Bayt

@(v)max(v(any(toeplitz(1:nnz(v))-v==1)))

Giriş bir sütun vektörü olmalıdır.

3 byte tasarruf önerileri için Luis Mendo'ya teşekkürler (Yoruma bakınız)

4 bayt daha fazla tasarruf sağlayan önerileriniz için Suever'e teşekkür ederiz (~~ (sum ()) 'u any () ile değiştirin)

Açıklama:

Bir giriş vektörü v verildiğinde, bu problem aşağıdaki ayrık denklemin tüm çözümlerini i, j,

abs(i-j) = v(i),   i,j both in 1..k,

Burada abs () mutlak değer fonksiyonudur. Bu denklemin çözümlendiği her v (i), maksimize edebileceğimiz aday çözümlerden biridir.

Ayrık bir i ve j işlevi olarak, sol taraf için tüm olasılıklar şuna benzeyen toeplitz matrisinde düzenlenebilir:

[0, 1, 2, 3, 4]
[1, 0, 1, 2, 3]
[2, 1, 0, 1, 2]    <--- abs(i-j)
[3, 2, 1, 0, 1]
[4, 3, 2, 1, 0]

Ve sağ taraf i'ye bağlı olmadığından, tüm olasılıklar sütunların girdilerin kopyaları olduğu bir matris halinde düzenlenebilir.

[v(1), v(1), v(1), v(1), v(1)]
[v(2), v(2), v(2), v(2), v(2)]
[v(3), v(3), v(3), v(3), v(3)]   <--- v(i)
[v(4), v(4), v(4), v(4), v(4)]
[v(5), v(5), v(5), v(5), v(5)]

Denklemin tüm çözümlerini bulmak için, bu iki matrisi çıkarıp sıfırın bulunduğu yerleri buluruz. Sıfırın olduğu satırlar, i'nin olduğu yerde, yani abs (ij) = v (i) olacak şekilde aj'ın olduğu endekslere karşılık gelir.

Diğer numaralar:

  • Mutlak değer işlevini artı bir, abs (ij) +1'i oluşturmak için daha az karakter alır, daha sonra doğru (değiştirilmemiş) mutlak değer işlevini oluşturmak yerine farkın 1 olduğu yerleri kontrol eder.
  • V'nin sütun kopyalarını örtülü olarak yapmak için otomatik operatör yayınını kullanır
  • Girdilerin uzunluğunu n () yerine nnz () ile alır, bu da girdilerin sorunlu ifadede pozitif olduğu söylenir.

Giriş formatı varsayılan olarak esnektir. vBir sütun vektörü olarak alabilir , cevabında sadece bunu belirtin. Ayrıca, yerine findgöre ~~iki bayt tasarruf etmek
Luis Mendo

@LuisMendo Teşekkürler, gönderinizi önerilerinizi içerecek şekilde düzenledim!
Nick Alger

Farklı diller için (veya aynı dilde çok farklı bir yaklaşım) başka bir cevap göndermelisiniz . Dil ile ilgili herhangi bir sorunuz olursa bir MATL sohbet odası var
Luis Mendo

BTW, MATL’deki toeplitz( YT) bir hata nedeniyle, varsayılan olarak iki girişi kullanır (biri değil)
Luis Mendo

Tamam iyi. MATL'ye çevirdim ve buraya başka bir cevap daha yolladım
Nick Alger

1

Mathematica, 69 bayt

Max@MapIndexed[{If[#2[[1]]>#,a[[#2-#]],{}],a[[#2+#]]~Check~{}}&,a=#]&

Anonim işlev Girdi olarak tam sayıların bir listesini alır ve çıktı olarak bir tamsayı döndürür. Oluşturulan mesajları yoksay.


1

Scala, 94 bayt

a=>a.zipWithIndex.filter(p=>a.zipWithIndex.exists(x=>x._1==Math.abs(p._2-x._2))).unzip._1.max

1

PHP, 128 Bayt

<?foreach(($i=$_GET[i])as$k=>$v){$k-$v<0?:!($i[$k-$v]>$m)?:$m=$i[$k-$v];if($k+$v<count($i))if($i[$k+$v]>$m)$m=$i[$k+$v];}echo$m;

1

Java 7, 125 123 bayt

int c(int[]a){int r=0,i=0,l=a.length,x;for(;i<l;r=l>(x=i+a[i])?a[x]>r?a[x]:r:r,r=(x=i-a[i++])>0?a[x]>r?a[x]:r:r);return r;}

@Mco sayesinde 2 bayt kaydedildi .

Ungolfed (sıralama) ve test kodu:

Burada dene.

class M{
  static int c(int[] a){
    int r = 0,
        i = 0,
        l = a.length,
        x;
    for(; i < l; r = l > (x = i + a[i])
                      ? a[x] > r
                         ? a[x]
                         : r
                      : r,
                 r = (x = i - a[i++]) > 0
                      ? a[x] > r
                         ? a[x]
                         : r
                      : r);
    return r;
  }

  public static void main(String[] a){
    System.out.println(c(new int[]{ 1, 13 }));
    System.out.println(c(new int[]{ 2, 9, 8, 3, 72, 2 }));
    System.out.println(c(new int[]{ 5, 28, 14, 5, 6, 3, 4, 7 }));
    System.out.println(c(new int[]{ 1, 3, 5, 15, 4, 1, 2, 6, 7, 7 }));
    System.out.println(c(new int[]{ 5, 1, 3, 5, 2, 5, 5, 8, 5, 1, 5, 1, 2, 3 }));
    System.out.println(c(new int[]{ 5, 12, 2, 5, 4, 7, 3, 3, 6, 2, 10, 5, 5, 5, 4, 1, 8, 5 }));
  }
}

Çıktı:

13
8
14
7
5
10

1
X & y'ye ihtiyacınız yok. Onlardan birini tekrar kullan (-2). Ayrıca r'yi devasa bir üçlü halinde ayarlayabileceğinizi de sanmıyorum, çünkü her iki vakayı da her zaman sol ve sağ test etmek zorundasınız.
mrco 23:16

1
@mrco Teşekkürler, kaldırıldı ,y. Ve gerçekten de eğer üçlü hakkında da aynı sonuca vardım. Tabii ki mümkün, ancak daha uzun süre yaparak iki kez kontrol yapacaksınız.
Kevin Cruijssen

1

Java, 118 bayt

int f(int[]a){int t=0,i,j,z=0,l=a.length;while(t<l*l){i=t/l;j=t++%l;z=a[i]>z&&((i<j?j-i:i-j)==a[j])?a[i]:z;}return z;}

PPCG'ye Hoşgeldiniz! :)
Martin Ender

1

Python, 58 bayt

Tony S.'nin Ruby cevabına dayanarak . Bu cevap Python 2 ve 3'te çalışır. Golf önerileri hoş geldiniz.

lambda n:max([n[i+v]for i,v in enumerate(n)if i+v<len(n)])

Ungolfing

def f(array):
    result = []
    for index, value in enumerate(array):
        if index + value < len(array):
            result.append(array[index + value])
    return max(result)

1

Yakut 56 bayt

En küçük yakut çözümüm.

->n{x=[];i=0;n.map{|v|x<<n[v+i]&&v+i<n.size;i+=1};x.max}

Raylar konsolunda test edilmesi oldukça kolaydır

a = ->n{x=[];i=0;n.map{|v|x<<n[v+i]&&v+i<n.size;i+=1};x.max}
a[[1, 13]
=> 13
a[[2, 9, 8, 3, 72, 2]]
=> 8
a[[5, 12, 2, 5, 4, 7, 3, 3, 6, 2, 10, 5, 5, 5, 4, 1, 8, 5]]
=> 10

Bu 63 baytta başladı, önerilerin azaltılmasına yardımcı olan önerileriniz için teşekkür ederiz!


.mapyerine kullanabilirsiniz.each
Cyoce

Ayrıca (x) if (y)değiştirilebilir(y)&&(x)
Cyoce

Bunun a<<byerine kullanabilirsiniza+=[b]
Sherlock9

@ Sherlock9 << hakkında unuttum. Bir + = [b] kullanmak, C&S'in önerisini && kullanarak kullanmamıştır. Şimdi var, teşekkürler!
Tony S.

1

Aslında , 17 bayt

Bu cevap aslında Python cevabımın limanı . Golf önerileri kabul edilir. Çevrimiçi deneyin!

;╗ñ♂Σ⌠╜l>⌡░⌠╜E⌡MM

Ungolfing

         Implicit input L.
;╗       Duplicate L and save a copy of L to register 0.
ñ        enumerate() the other copy of L.
♂Σ       sum() all the pairs of [index, value of n]. Call this list Z.
⌠...⌡░   Push values of Z where the following function returns a truthy value. Variable v_i.
  ╜        Push L from register 0.
  l        Push len(L).
  >        Check if len(L) > v_i.
⌠...⌡M   Map the following function over Z_filtered. Variable i.
  ╜        Push L from register 0.
  E        Take the ith index of L.
M        max() the result of the map.
         Implicit return.

0

T-SQL (sqlserver 2016), 132 bayt

golfed:

;WITH C as(SELECT value*1v,row_number()over(order by 1/0)n FROM STRING_SPLIT(@,','))SELECT max(c.v)FROM C,C D WHERE abs(D.n-C.n)=D.v

Ungolfed:

DECLARE @ varchar(max)='2, 9, 8, 3, 72, 2'

;WITH C as
(
  SELECT
    value*1v,
    row_number()over(order by 1/0)n
  FROM
    STRING_SPLIT(@,',')
)
SELECT
  max(c.v)
FROM
  C,C D
WHERE
  abs(D.n-C.n)=D.v

Keman


0

JavaScript (ES6), 56 54 bayt

let f =
    
l=>l.map((n,i)=>m=Math.max(m,l[i+n]|0,l[i-n]|0),m=0)|m

console.log(f([1, 13])); // → 13
console.log(f([2, 9, 8, 3, 72, 2])); // → 8
console.log(f([5, 28, 14, 5, 6, 3, 4, 7])); // → 14
console.log(f([1, 3, 5, 15, 4, 1, 2, 6, 7, 7])); // → 7
console.log(f([5, 1, 3, 5, 2, 5, 5, 8, 5, 1, 5, 1, 2, 3])); // → 5
console.log(f([5, 12, 2, 5, 4, 7, 3, 3, 6, 2, 10, 5, 5, 5, 4, 1, 8, 5])); // → 10


0

Clojure, 68 bayt

#(apply max(map(fn[i](get % i 0))(flatten(map-indexed(juxt - +)%))))

Örneğin (map-indexed (juxt - +) [3 4 1 2]), ([-3 3] [-3 5] [1 3] [1 5])( +/-değerini indeksle ), bunlar orijinal vektörden (aralık dışı varsayılan olarak 0) değerleri aramak için kullanılır ve maksimum değer bulunur. Hala biraz ayrıntılı geliyor ama en azından kullanmam gerek juxt:)

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.