Definicja i zasady
Tablica golfy to tablica liczb całkowitych, w której każdy element jest większy lub równy średniej arytmetycznej wszystkich poprzednich elementów. Twoim zadaniem jest ustalenie, czy tablica dodatnich liczb całkowitych podanych jako dane wejściowe jest golfowa, czy nie.
Nie musisz obsługiwać pustej listy.
Możesz wybrać dowolne dwie różne niepuste wartości. Oni muszą być spójne i muszą być zgodne ze wszystkimi innymi decyzji problematycznych przepisów. To jest golf-golf , wygrywa najkrótszy kod w każdym języku!
Przypadki testowe i przykład
Na przykład następująca tablica:
[1, 4, 3, 8, 6]
Jest tablicą golfową, ponieważ każdy termin jest wyższy niż średnia arytmetyczna z tych poprzedzających. Przećwiczmy to krok po kroku:
Liczba -> Poprzedzające elementy -> Średnia -> Przestrzega reguły? 1 -> [] -> 0,0 -> 1 ≥ 0,0 (prawda) 4 -> [1] -> 1,0 -> 4 ≥ 1,0 (prawda) 3 -> [1, 4] -> 2,5 -> 3 ≥ 2,5 (prawda) 8 -> [1, 4, 3] -> 2. (6) -> 8 ≥ 2. (6) (Prawda) 6 -> [1, 4, 3, 8] -> 4,0 -> 6 ≥ 4,0 (prawda)
Wszystkie elementy spełniają warunek, dlatego jest to tablica golfowa. Zauważ, że dla celów tego wyzwania założymy, że średnia z pustej listy ( []
) wynosi 0
.
Więcej przypadków testowych:
Wejście -> Wyjście [3] -> Prawda [2, 12] -> Prawda [1, 4, 3, 8, 6] -> Prawda [1, 2, 3, 4, 5] -> Prawda [6, 6, 6, 6, 6] -> Prawda [3, 2] -> Fałsz [4, 5, 6, 4] -> Fałsz [4, 2, 1, 5, 7] -> Fałsz [45, 45, 46, 43] -> Fałsz [32, 9, 15, 19, 10] -> Fałsz
Należy pamiętać, że jest to logiczne 1 z CodeGolf-maraton hakerski a także zamieszczone na Anarchy Golf (że jeden jest uszkodzony) - Reposted przez histocrat , ale jestem oryginalny autor po obu stronach, a więc wolno odśwież je tutaj.
Odpowiedzi:
Python 2 , 37 bajtów
Wypróbuj online!
Wyjścia za pomocą kodu wyjścia: awarie (kod wyjścia 1) dla tablic golfowych, po prostu wyjście z kodem wyjścia 0 dla tablic innych niż golfy. ovs i Jonathan Frech zapisali 3 bajty.
Python 2 , 44 bajty
Wypróbuj online!
Bardziej tradycyjny wariant, który powraca
True
do tablic golfowychFalse
. Jonathan Frech zapisał 2 bajty.źródło
a==[]or
może byća and
.sum(a)<=len(a)*a.pop()*[]
w przypadku skrzynki podstawowej, co zawsze jest prawdąint < list
!Galaretka ,
65 bajtówWypróbuj online!
Jak to działa
źródło
ÆmƤµ⁼Ṣ
JavaScript (ES6),
3332 bajtyKod działa również na wartościach ujemnych, takich jak
[-3, -2]
. Zwracafalse
tablicę golfowątrue
dla innych tablic. Edycja: Zapisano 1 bajt dzięki @JustinMariner.źródło
!
ponieważ specyfikacja prosi tylko o dwie różne wartości, więc powracanie,false
gdy jest to golfowa tablica, jest w porządku.Wolfram Language (Mathematica) , 35 bajtów
Wypróbuj online!
Wyjścia
False
dla tablic golfowych iTrue
innych.źródło
MATL ,
98 bajtówWyjścia
0
dla tablic golfowych, w1
przeciwnym razie.Wypróbuj online!
Wyjaśnienie
Rozważ wejście
[1, 4, 3, 8, 6]
.źródło
Haskell ,
535048 bajtówWypróbuj online!
Edycja: -3 bajty dzięki Zgarb!
Wyjaśnienie
Powyższa wersja bez punktów jest odpowiednikiem następującego programu:
Biorąc pod uwagę wejście
s=[1,4,3,8,6]
,scanl1(+)s
oblicza sumy przedrostków[1,5,8,16,22]
izipWith(*)[1..](tail s)
spadnie pierwszy element i mnoży wszystkie inne elementy o indeksie:[4,6,24,24]
. Lista jest teraz Golfy jeśli prefiks parami kwoty są mniejsze lub równe wskaźnikowi elementy razy, które mogą być sprawdzone przez skompresowanie obie listy z(<=)
i sprawdzając, czy wszystkie wyniki sąTrue
zand
.źródło
C # (kompilator Visual C #) , 71 + 18 = 89 bajtów
dodatkowe 18 bajtów dla
using System.Linq;
Wypróbuj online!
źródło
using System.Linq;
, w rzeczywistości będzie to 89 bajtów, czasami wyrażonych jako „71 + 18 = 89”, aby pokazać, że 18 bajtów jest wymaganych, ale nie stanowi części rozwiązania, a jednocześnie końcowa liczba będzie ostatnią liczbą w linii tytułowej ( co jest pomocne w przypadku niektórych automatycznych parserów).APL (Dyalog) , 10 bajtów
Jest to anonimowa ukryta funkcja prefiksu (nazywana monadycznym pociągiem w kategoriach APL).
Wypróbuj wszystkie przypadki testowe w TIO!
Czy to jest
∧/
to prawda⊢
elementy≥
są większe lub równe+\
sumy skumulowane÷
podzielony przez⍳
liczby całkowite od 1 do∘
the≢
liczba elementów?
źródło
∘
wiąże rzeczy w ten sam sposób, w jaki „łączą się” w „policz koty”. To naprawdę nazywa się Compose .C (gcc) ,
626062 bajtówb=
).Wypróbuj online!
źródło
05AB1E , 5 bajtów
Wypróbuj online!
Szeroka pomoc Dennisa i Adnana dotarła do tej zredukowanej wersji. Naprawiono także błąd, aby to umożliwić, jeszcze raz dziękuję wam. Nie podoba mi się ta odpowiedź.
05AB1E , 10 bajtów
Wypróbuj online!
Długi, ponieważDgsO/
jest odpowiednikiem „średniej” w 05AB1E.Najwyraźniej
ÅA
jest to średnia arytmetyczna.źródło
+\÷J
(podzielę sumę skumulowaną przez indeksy) w galarecie. Czy to nie jest takie proste w 05AB1E? Edycja: Nevermind.ü+
wtedy tak naprawdę, że nie ma żadnych podziałów według indeksów innych niżg
uzyskanie długości tablicy,L
wypychanie1,2,...,n
i dzielenie w celu uzyskania średniej, która wciąż wynosi zasadniczo 5 bajtów..S_
jest DŁUGĄ drogą<=
, jeśli ktoś ma jakieś pomysły.÷W
działałby zamiastü.S_P
?ÅA
, więcηÅA÷W
działa teraz.APL (Dyalog) , 15 bajtów
Wypróbuj online!
W jaki sposób?
źródło
PowerShell , 60 bajtów
Wypróbuj online!
Staje wejście w dosłownym matrycy (na przykład
@(1, 4, 3, 8, 6)
) do$a
. Ustawia naszą$o
zmienną utput na1
. Następnie zapętla się$a
. Każdej iteracji używamy (ab) niejawnego rzutowania PowerShell*=
na wynik porównania logicznego z naszym$o
utput. Boolean polega na tym, czy bieżąca wartość$_
jest-g
powtórzonae
względem poprzednich warunków zsumowanych$a[0..$i++]
(-join'+'|iex
) podzielona przez liczbę terminów, które już widzieliśmy$i
. Tak więc, jeśli jakikolwiek krok na drodze jest fałszywy,$o
zostanie pomnożony przez0
. W przeciwnym razie pozostanie1
przez cały czas.Następnie po prostu umieszczamy
$o
na rurociągu i wynik jest niejawny.1
za prawdę i0
za falsey.źródło
Perl 5, 27 +2 (-ap) bajtów
Wypróbuj online
źródło
C # (.NET Core) , 74 bajty
Wypróbuj online!
Zwraca 0 dla wartości false i 1 dla wartości true.
3 bajty dłuższe niż rdzeń chryslovelaces odpowiedzi . Ale w sumie kilka bajtów jest krótszych, ponieważ mój wariant nie wymaga żadnych
using
instrukcji.źródło
Cubix , 35 bajtów
Wypróbuj online!
Nie jest to najbardziej wydajne wykorzystanie miejsca (6 no-ops w kodzie) Nie wytwarza danych wyjściowych dla tablicy golfowej,
1
dla tablicy innej niż golfowa.Rozwija się do następującej kostki:
Wyjaśnienie wkrótce, ale w zasadzie zawiera coś w rodzaju odpowiedzi MATL Luisa Mendo lub odpowiedzi Dennisa Julii .
Zobacz, jak działa!
źródło
Matlab i Octave,
4136 bajtów5 bajtów zaoszczędzonych dzięki Luisowi Mendo
Wypróbuj online!
źródło
a
zero. Ale to przydatna sztuczka w podobnych sytuacjach, trzeba o tym pamiętać.SQL (MySQL), 68 bajtów
Wypróbuj online!
Zwraca 1 dla tablic golfowych, a 0 w przeciwnym razie. Zajmuje wejście od nazwie tabeli ,
t
. Aby utworzyćt
, uruchom:i aby załadować wartości:
źródło
Rubinowy , 30 bajtów
Wypróbuj online!
Zainspirowany odpowiedzią Lynn . Rzuty
NoMethodError
dla golfy, wnil
przeciwnym razie zwraca .źródło
Python 2 , 52 bajty
Wypróbuj online!
Python 2 ,
50484442 bajtówand
.S=k=0
.or
a wartość logiczna porównania jakok
wartość przyrostowa.NameError
za pomocą niezdefiniowanej zmiennej zamiast aZeroDivisionError
.Wypróbuj online!
źródło
q / kdb + , 14 bajtów
Rozwiązanie:
Przykłady:
Wyjaśnienie:
Dość proste dzięki
avgs
wbudowanemu:źródło
Julia 0.6 , 29 bajtów
Zwraca false lub true .
Wypróbuj online!
źródło
R ,
3834 bajtówWypróbuj online!
źródło
y
w argumentach funkcjicumsum(x)
bezpośrednie użycie jest o 4 bajty krótsze. Szkoda,cummean
że nie istnieje w bazie R.Dodaj ++ , 54 bajty
Wypróbuj online!
Wersja nieoryginalna, 30 bajtów
Wypróbuj online!
Oba wyjścia 1 dla tablic golfowych, a 0 w przeciwnym razie
Jak oni pracują
Pierwsza wersja została stworzona przeze mnie, bez sprawdzania innych rozwiązań. Drugi został zainspirowany przez Dennisa komentarzem , więc jestem mniej zadowolony.
Pierwsza wersja
dbLR$
#
BF
B
€
g
k
{...}
I
K
U
Y
Z
g
k
l
u
iw
.¦+
AbL
/
0b]$
ABcB]
Bc
zip
ª!
i powrotu tej wartości.Druga wersja
¬+
J
BcB/
@0@B]
źródło
Pyth ,
1110 bajtów-1 bajt dzięki Mr. Xcoder
Wypróbuj online!
źródło
SI.OM._
(port rozwiązania cairdcoinheringaahing z Jelly, autorstwa Erika the Outgolfer), lub 10 bajtów przy twoim podejściu:.A.egb.O<Q
Java (OpenJDK 8) , 96 bajtów
Wiem, że to nie jest dobry język golfowy, ale wciąż próbowałem!
Tablica wejściowa jako pierwszy argument liczb całkowitych oddzielonych przecinkami do przetestowania.
Zwraca 1 dla wartości true, 0 dla wartości false.
Wypróbuj online!
źródło
Java 7, 100 bajtów
Gra w golfa:
Nie golfowany:
Wypróbuj online
Zwraca 0 dla tablic golfowych i 1 dla tablic golfowych. Nieco dłużej niż odpowiedź Java 8.
źródło
PHP, 44 bajty
pobiera dane z argumentów wiersza poleceń, wychodzi z
0
(ok) dla tablicy golfy, z1
innym.Uruchom
-nr
lub wypróbuj online .źródło
J, 19 bajtów
+/\ % #\
średnie z przedrostków:#\
daje 1..n}:0,
dodaj 0 na początku i usuń ostatni[>:
czy oryginalny element listy element po elemencie = = do przesuniętej listy średnich?*/
czy wszystkie elementy są większe, tzn. czy poprzednia lista to1
s?Wypróbuj online!
źródło
AWK , 39 bajtów
Wypróbuj online!
Zauważ, że łącze TIO ma 5 dodatkowych bajtów,
i=s=0
aby umożliwić wprowadzanie wielu wierszy.źródło
Japt , 10 bajtów
Wymyślono dwa 10-bajtowe rozwiązania, które nie wydają się poprawiać.
Spróbuj
Wyjaśnienie
Alternatywny
Spróbuj
źródło