Znajdź największą liczbę n pozycji od n

29

Kontynuacja tego pytania .

Zadanie

Biorąc pod uwagę tablicę dodatnich liczb całkowitych, znajdź największy element k, dla którego:

Istnieje pewna dodatnia odległość całkowita n , tak że element w tablicy umieszczony n  miejsc po lewej lub prawej stronie od k jest równy n .

Tablica z pewnością zawiera przynajmniej jeden element spełniający ten warunek.

Najkrótszy kod (w bajtach) wygrywa. Możesz wybrać dowolny format we / wy.

Przykład

Biorąc pod uwagę wkład

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

Dopuszczalne wartości to:

  • 4, Jak tam jest 7położony 7 pozycji do swojego prawa
  • Pierwszy 6, ponieważ 3po jego prawej stronie znajdują się 3 pozycje
  • 3, Jak tam jest 4położony 4 pozycje po jego lewej stronie
  • 5, Jak tam jest 2usytuowany 2 pozycje do swojego prawa
  • Drugi 7, ponieważ 3po lewej stronie znajdują się 3 pozycje.

Z tych wartości największa jest 7.

Przypadki testowe

[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
Lynn
źródło
Dwa kolejne (aczkolwiek nieco zbędne) przypadki w tym przykładzie: pierwsze 6 (ponownie), ponieważ ma 5 pięciu pozycji po prawej; lub druga 7 (ponownie), ponieważ pozostało 6 sześciu pozycji.
Jonathan Allan,
1. W moim telefonie tytuł wygląda na „Znajdź największą liczbę pozycji z dala od”. 2. Podany warunek jest taki, że istnieje takie k (taka właściwość, która nie zależy od k). To na pewno musi być źle.
Peter Taylor
@PeterTaylor „to” w „tym elemencie” odnosi się do k.
Taemyr
1
@Taemyr, to nie ma sensu z dwóch powodów: po pierwsze dlatego, że k nie jest określone jako element; a po drugie dlatego, że jesteśmy proszeni o „ znalezienie największego elementu spełniającego ” warunek, więc „ ten element ” ma poprzednik poza warunkiem.
Peter Taylor
2
Może mógłbyś uniknąć wszelkich nieporozumień, mówiąc „znajdź największy element k taki, że”, a następnie użyj k zamiast tego elementu w definicji?
Martin Ender

Odpowiedzi:

3

Galaretka , 9 bajtów

Jạþ`=ḅa¹Ṁ

Wypróbuj online! lub zweryfikuj wszystkie przypadki testowe .

Jak to działa

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.
Dennis
źródło
1
Hmm, nie jestem pewien, jakie są zasady w tym zakresie, ale teraz masz dwa różne podejścia w osobnych odpowiedziach, w tym samym języku programu przez tego samego użytkownika. Czy nie byłoby wskazane umieszczenie fragmentów 9- i 10-bajtowych w tej samej odpowiedzi, ponieważ jest to ten sam język programowania i oba te elementy? Rozumiem wiele odpowiedzi w tym samym języku programowania przez wielu użytkowników, ale osobiście uważam, że różne podejścia tego samego użytkownika w tym samym języku programowania byłyby lepiej dostosowane do edycji. Tylko moja opinia.
Kevin Cruijssen
5
To było moje pierwsze meta-pytanie i wydawało się, że konsensus polega na tym, że różne podejścia powinny być umieszczane w różnych odpowiedziach. W tym przypadku moje podejście nie ma nic wspólnego poza maksimum na końcu, więc wybrałem osobny post.
Dennis
8

05AB1E , 21 bajtów

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

Wyjaśnienie

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

Wypróbuj online!

Emigna
źródło
Prawdopodobnie używasz go cały czas, ale zauważyłem tylko „zawijanie stosu na listę”. Schludny.
GreenAsJade
@GreenAsJade: Tak, to jedno z poleceń, których najczęściej używam :)
Emigna,
7

Haskell, 61 57 55 bajtów

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

Przykład użycia: (f.zip[0..]) [5,28,14,5,6,3,4,7]-> 14.

(Mniej więcej) bezpośrednia implementacja definicji: dla każdego indeksu nlisty wejściowej xnależy zachować, a := x!!njeśli istnieje indeks, w iktórym b := x!!ijest równy abs(n-i). Znajdź maksimum.

Edycja: @xnor zapisał dwa bajty. Dzięki!

nimi
źródło
Ponieważ nie używasz x, definiowanie funkcji zi komponowanie powinno być krótsze zip[0..].
xnor
6

Galaretka , 10 bajtów

,N+JFfJị¹Ṁ

Wypróbuj online!lub zweryfikuj wszystkie przypadki testowe .

Jak to działa

,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.
Dennis
źródło
5

Python 3, 85 80 72 bajty

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

Edycja: -8 bajtów dzięki @Dennis

Elvorfirilmathredia
źródło
5

EXCEL: 32 30 bajtów

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

Nadal nie mogę uwierzyć, że mam tak krótko ...

Sposób użycia:
wklej to w DOWOLNĄ komórkę Z WYJĄTKIEM komórek kolumny A. Po wklejeniu, podczas edycji, naciśnij control+ shift+, enteraby poprawnie wprowadzić.
umieść swoje wartości w kolumnie A, 1 wartość na komórkę (zgodnie z wpisem CSV).

Jeśli chcesz dowiedzieć się, jak to działa, zamieściłem dodatkową wskazówkę w moich Poradach dotyczących gry w golfa w pytaniu Excel .

Społeczność
źródło
Uwielbiam te doskonałe golfa - kto by pomyślał !!
GreenAsJade
4

JavaScript (ES6), 61 bajtów

a=>Math.max(...a.filter((_,i)=>a.some((e,j)=>e==i-j|e==j-i)))
Neil
źródło
4

Perl, 45 bajtów

Obejmuje +2 za -ap

Podaj liczby w wierszu na STDIN:

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

Jeszcze jeden bajt można uzyskać, zastępując ^P dosłownie znak kontrolny, ale prowadzi to do ostrzeżenia STDERR o ostatnich perlach.

Zakłada largest number + array length < 2^32

Ton Hospel
źródło
3

Pyth, 19 17 bajtów

Dzięki @ Pietu1998 za -2 bajty

eS@[email protected],-kb+b

Program, który pobiera dane z listy na STDIN i drukuje wynik.

Wypróbuj online

Jak to działa

eS@[email protected],-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
TheBikingViking
źródło
}#jest taki sam jak @. Ponadto, jeśli przestawisz ostatni bit ,-kb+bk, możesz usunąć ostatni, kponieważ Pyth automatycznie wstawia go.
PurkkaKoodari
@ Pietu1998 Thanks. Nie wiedziałem o domniemanym wypełnieniu dla wyliczenia; czy to działa w przypadku innych funkcji typu mapa?
TheBikingViking
Działa dla każdej lambda, automatycznie wypełnia resztę każdej lambda pierwszą zmienną lambda.
PurkkaKoodari
3

MATL, 13 bajtów

ttn:tYTq=a)X>

Dane wejściowe muszą być wektorem kolumny. Oznacza to, że dane wejściowe są oddzielone średnikami, jak [1; 2; 3], lub przecinki oddzielone transpozycją zaznaczenia na końcu, jak [1,2,3] ”.

Wypróbuj online!

Wszystkie przypadki testowe: (A) , (B) , (C) , (D) , (E) , (F)

Dzięki Suever za sugestie w czacie MATL, aby zapisać 2 znaki.

Wyjaśnienie:

Ogólna strategia jest taka sama jak moja odpowiedź Octave / MATLAB, w której wyjaśniono podstawową koncepcję: https://codegolf.stackexchange.com/a/94161/42247

Konkretny kod w tej odpowiedzi MATL jest zbudowany w następujący sposób:

Rdzeniem metody jest konstrukcja macierzy Toeplitza, której ij'ty wpis to abs (ij). Najpierw konstruujemy macierz Toeplitz z wpisami abs (i-1) +1 za pomocą polecenia TOTlitz MATL YT w następujący sposób:

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

Aby zobaczyć, jak to działa, wywołajmy wektor wejściowy do tego fragmentu kodu „v”. „N” znajduje długość v, a następnie „:” konstruuje wektor 1: długość (v). Następnie „t” tworzy kolejną kopię 1: długość (v) na stosie; ta dodatkowa kopia jest potrzebna z powodu dobrze znanego błędu w funkcji YT w MATL (odpowiednik MATL toeplitz ()), w którym oczekuje dwóch kopii danych wejściowych zamiast 1. Następnie YT bierze dwie kopie tego wektora 1 : length (v) poza stosem i tworzy z nich macierz abs (ij) +1 Toeplitz.

Teraz musimy odjąć 1 od tej macierzy, aby uzyskać macierz Toeplitz z wpisami abs (ij) i znaleźć lokalizacje ij, w których ta macierz Toeplitz abs (ij) jest równa macierzy wszystkich wektorów kolumn zawierających kopie kolumn danych wejściowych wektor v. Odbywa się to w następujący sposób:

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

Pierwsze „t” tworzy dodatkową kopię danych wejściowych i zapisuje je na stosie. „N: tYT” tworzy macierz toeplitz, jak opisano wcześniej, i wysyła ją do stosu. Następnie „q” odejmuje 1 od macierzy Toeplitza, a „=” dokonuje porównania równości elementarnej między macierzą abs (ij) a wektorem, którego kolumny są kopiami danych wejściowych. Zauważ, że porównując wektor kolumny z macierzą, domyślnie wykorzystujemy reguły nadawania przez operatora MATLAB / MATL (wektor kolumny w porównaniu jest kopiowany w celu utworzenia macierzy bez wydawania poleceń).

Na koniec musimy znaleźć indeksy wierszy i, w których znajduje się kolumna j, taka, że ​​ij'ty wpis w różnicy macierzy skonstruowanej powyżej wynosi 1, a następnie uzyskamy wartość wektora wejściowego odpowiadającego tym indeksom, a następnie weźmy maksimum. To w następujących trzech krokach:

1) Znajdź indeksy dla dowolnego wiersza zawierającego niezerową:

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

2) Wyodrębnij elementy wektora wejściowego odpowiadające tym indeksom:

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

3) Znajdź i zwróć maksymalny element:

t tn:tYTq= a ) X>
% [code] X> is equivalent to @(v) max(v).
Nick Alger
źródło
Zachowanie funkcji YTzmieniło się w wersji 20.2.2 . Teraz domyślnie używa 1 danych wejściowych (co jest ogólnie bardziej przydatne). Chociaż zaoszczędziłoby Ci to 1 bajt tutaj (usuń twcześniej YT), nie można go wykorzystać, ponieważ zmiana języka jest późniejsza niż wyzwanie. Ale powoduje to, że twoja odpowiedź nie jest już ważna w nowej wersji, która jest teraz dostępna w TIO
Luis Mendo
Możesz albo edytować połączony kod i zostawić notatkę, albo użyć tego linku do interpretera MATL Online, który obsługuje starsze wersje. Niestety musisz także zaktualizować inne linki. Przepraszamy za niedogodności
Luis Mendo
Niezależnie od tego, że można zaoszczędzić 1 bajt zastąpienie n:przezf
Luis Mendo
2

Rubin, 66 bajtów

->a{i=-1;a.map{|e|i+=1;[a[j=i+e]||0,a[0>(k=i-e)?j:k]||0].max}.max}
cia_rana
źródło
2

Octave / MATLAB, 40 bajtów

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

Dane wejściowe muszą być wektorem kolumny.

Podziękowania dla Luisa Mendo za sugestie oszczędzające 3 bajty (patrz komentarz)

Dzięki Suever za sugestie oszczędzające 4 bajty więcej (zastępując ~~ (sum ()) dowolnymi ())

Wyjaśnienie:

Biorąc pod uwagę wektor wejściowy v, problem ten jest równoważny ze znalezieniem wszystkich rozwiązań i, j następującego równania dyskretnego,

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

gdzie abs () jest funkcją wartości bezwzględnej. Każde v (i), dla którego rozwiązano to równanie, jest jednym z kandydujących rozwiązań, które możemy zmaksymalizować.

Jako dyskretna funkcja i i j, wszystkie możliwości lewej strony mogą być ułożone w matrycy toeplitz, która wygląda mniej więcej tak:

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

A ponieważ prawa strona nie zależy od i, wszystkie możliwości można ułożyć w macierz, w której wszystkie kolumny są kopiami danych wejściowych,

[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)]

Aby znaleźć wszystkie rozwiązania równania, odejmujemy te dwie macierze i znajdujemy lokalizacje, w których występuje zero. Wiersze, w których występuje zero, odpowiadają pożądanym indeksom i, w których istnieje aj, tak że abs (ij) = v (i).

Inne sztuczki:

  • Konstruowanie funkcji wartości bezwzględnej plus jeden, abs (ij) +1 wymaga mniej znaków, a następnie sprawdzenie lokalizacji, w których różnica wynosi 1, niż konstruowanie funkcji wartości bezwzględnej prawdziwej (nieprzesuniętej).
  • Używa automatycznego nadawania przez operatora, aby pośrednio tworzyć kopie kolumn v
  • Pobiera długość danych wejściowych za pomocą nnz () zamiast length (), co działa, ponieważ w opisie problemu mówi się, że dane wejściowe są dodatnie.
Nick Alger
źródło
Format wejściowy jest domyślnie elastyczny. Możesz przyjąć vjako wektor kolumny, po prostu zaznacz to w odpowiedzi. Ponadto, zastąpienie findprzez ~~Aby zapisać kolejne dwa bajty
Luis Mendo
@LuisMendo Dzięki, edytowałem post, aby uwzględnić Twoje sugestie!
Nick Alger,
W przypadku różnych języków (lub znacznie innego podejścia w tym samym języku) należy opublikować inną odpowiedź . Jeśli masz jakieś pytania dotyczące języka, jest pokój czatowy MATL
Luis Mendo,
BTW, z powodu błędu w MATL toeplitz( YT), domyślnie wykorzystuje dwa wejścia (nie jedno)
Luis Mendo
Ok fajnie. Przetłumaczyłem to na MATL i zamieściłem inną odpowiedź tutaj: codegolf.stackexchange.com/a/94183/42247
Nick Alger
1

Mathematica, 69 bajtów

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

Funkcja anonimowa. Pobiera listę liczb całkowitych jako dane wejściowe i zwraca liczbę całkowitą jako dane wyjściowe. Zignoruj ​​wygenerowane wiadomości.

LegionMammal978
źródło
1

Scala, 94 bajty

a=>a.zipWithIndex.filter(p=>a.zipWithIndex.exists(x=>x._1==Math.abs(p._2-x._2))).unzip._1.max
sprague44
źródło
1

PHP, 128 bajtów

<?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;
Jörg Hülsermann
źródło
1

Java 7, 125 123 bajty

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

2 bajty zapisane dzięki @mrco .

Niegolfowany (rodzaj) i kod testowy:

Wypróbuj tutaj.

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

Wydajność:

13
8
14
7
5
10
Kevin Cruijssen
źródło
1
Nie potrzebujesz x i y. Wystarczy ponownie użyć jednego z nich (-2). Nie sądzę też, aby można było ustawić r w ogromnej trójce - jeśli dlatego, że zawsze trzeba testować oba przypadki, lewy i prawy.
mrco
1
@mrco Dzięki, usunąłem ,y. I rzeczywiście doszedłem do tego samego wniosku dotyczącego pojedynczego trójskładnika jeśli. Oczywiście jest to możliwe, ale zrobisz to dwukrotnie, dzięki czemu będzie znacznie dłuższy.
Kevin Cruijssen
1

Java, 118 bajtów

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;}
Ekeko
źródło
Witamy w PPCG! :)
Martin Ender,
1

Python, 58 bajtów

Na podstawie Tony S. Ruby odpowiedź . Ta odpowiedź działa w Python 2 i 3. Sugestie dotyczące gry w golfa są mile widziane.

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)
Sherlock9
źródło
1

Ruby 56 bajtów

Moje najmniejsze rubinowe rozwiązanie.

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

Całkiem łatwy do przetestowania w konsoli szynowej

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

Zaczęło się to od 63 bajtów, dzięki za sugestie, które pomogą go przyciąć!

Tony S.
źródło
.mapzamiast tego możesz użyć.each
Cyoce,
(x) if (y)można również zastąpić(y)&&(x)
Cyoce
Możesz użyć a<<bzamiasta+=[b]
Sherlock9
@ Sherlock9 Zapomniałem o <<. Użycie + = [b] nie działało z sugestią Cyoce przy użyciu &&. Teraz tak jest, dzięki!
Tony S.
1

Właściwie 17 bajtów

Ta odpowiedź jest w rzeczywistości portem mojej odpowiedzi w języku Python . Sugestie dotyczące gry w golfa mile widziane. Wypróbuj online!

;╗ñ♂Σ⌠╜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.
Sherlock9
źródło
0

T-SQL (sqlserver 2016), 132 bajty

Gra w golfa:

;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

Nie golfowany:

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

Skrzypce

t-clausen.dk
źródło
0

JavaScript (ES6), 56 54 bajtów

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

Arnauld
źródło
0

Clojure, 68 bajtów

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

Na przykład (map-indexed (juxt - +) [3 4 1 2])jest ([-3 3] [-3 5] [1 3] [1 5])(indeks +/-jego wartości), są one używane do wyszukiwania wartości z oryginalnego wektora (domyślnie poza zakresem 0) i zostaje znaleziona maksymalna wartość. Nadal czuję się trochę gadatliwy, ale przynajmniej muszę to wykorzystać juxt:)

NikoNyrh
źródło