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

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.

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!


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!


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.

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


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 .


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

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


3

Pyth, 19 17 bajtów

Dzięki @ Pietu1998 za -2 bajty

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

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

Wypróbuj online

Jak to działa

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

}#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).

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}

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.

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.


1

Scala, 94 bajty

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

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;

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

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

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)

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ąć!


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

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


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


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.