Aby sprawdzić, czy lista liczb całkowitych nieujemnych jest zrównoważona , można sobie wyobrazić umieszczenie odpowiednich wag na tablicy, a następnie spróbować zrównoważyć tablicę na osi obrotu, tak aby podsumowane względne wagi po lewej i prawej stronie osi były takie same. Względny ciężar jest podawany przez pomnożenie ciężaru przez jego odległość od osi obrotu (patrz prawo dźwigni ).
(Źródło: wikipedia )
Ten obraz odpowiada liście [100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
. Ta lista jest zrównoważona, ponieważ 5
ma odległość 20 do osi obrotu, 100
odległość 1 i 5*20 = 100 = 100*1
.
Przykłady
3 1 5 7
#########
^
W tym przypadku punkt obrotu znajduje się bezpośrednio pod 5
, 3
ma odległość 2 i 1
oraz 7
odległość 1. Tak więc obie strony po lewej i prawej stronie osi obrotu sumują się do 7
( 3*2 + 1*1
po lewej i 7*1
po prawej stronie), a zatem lista [3, 1, 5, 7]
jest zrównoważona.
Należy jednak pamiętać, że oś przestawna nie musi być umieszczana pod jednym z elementów listy, ale może również znajdować się pomiędzy dwoma elementami listy:
6 3 1
#######
^
W tym przypadku odległości stają się 0.5, 1.5, 2.5, ...
i tak dalej. Ta lista jest również zrównoważona, ponieważ 6*0.5 = 3 = 3*0.5 + 1*1.5
.
Oś może być umieszczona tylko dokładnie pod jedną liczbą lub dokładnie pośrodku między dwiema liczbami, a nie np. W dwóch trzecich między dwiema liczbami.
Zadanie
Biorąc pod uwagę listę liczb całkowitych nieujemnych w dowolnym rozsądnym formacie, wypisz truthy
wartość, jeśli listę można zrównoważyć, a falsy
wartość w przeciwnym razie.
Możesz założyć, że lista wejściowa zawiera co najmniej dwa elementy i że co najmniej jeden element jest różny od zera.
To jest golf golfowy wyzwanie dla , więc wygrywa odpowiedź z najmniejszą liczbą bajtów w każdym języku.
Prawdziwe przypadki testowe
[1, 0]
[3, 1, 5, 7]
[6, 3, 1]
[100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
[10, 4, 3, 0, 2, 0, 5]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[7, 7, 7, 7]
Falsy Testcases
[1, 2]
[3, 6, 5, 1, 12]
[0, 0, 2, 0, 1, 0]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[6, 3, 2, 4, 0, 1, 2, 3]
[4, 0, 0, 2, 3, 5, 2, 0, 1, 2, 3, 0, 0, 1, 2, 4, 3, 1, 3, 0, 0, 2]
[100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5]
Znaleziono wiele powiązanych wyzwań, podczas gdy to wyzwanie było piaskownicą : czy jest to liczba zrównoważona? , Indeks równowagi sekwencji , Równowaga zestawu wag na huśtawce , Równoważenie słów , Czy przewrócę się? i Gdzie należy czop?
You can assume that the input list contains at least two elements and that at least one element is non-zero.
Odpowiedzi:
Pyth,
1210 bajtówWypróbuj online
Zaoszczędzono 2 bajty dzięki panu Xcoder i Erikowi Outgolfer.
Wyjaśnienie
źródło
y
zamiast*2
!%ys*VQUQs
Wolfram Language (Mathematica) , 36 bajtów
Jest to problem środka masy w układzie współrzędnych z punktem początkowym w jednym z punktów, a następnie określasz, czy CM spada na punkt sieci, gdzie szerokość sieci = 1/2.
Wypróbuj online!
źródło
05AB1E , 6 bajtów
Wypróbuj online!
W jaki sposób?
źródło
[1,1]
(powinno być prawdą). Wygląda na to, że ukrytego dublowania tak naprawdę nie ma.Galaretka , 6 bajtów
Wypróbuj online!
Wygląda na to, że Dziurawa Zakonnica zwróciła uwagę na bezcelowość.
Korzystanie z metody Pyth firmy Mnemonic.
Zwraca dodatnią liczbę całkowitą (prawda) lub zero (fałsz).
źródło
LḶ
zamiast tego (chociaż to się udałoby we wszystkich przypadkach testowych). EDYCJA: Oooh, teraz, kiedy znów o tym myślę, wydaje się, że ... ( b | a ⇔ b | a + b duh)R , 34 bajty
Wypróbuj online!
Pobiera dane wejściowe jako wektor. Porty pamięciowy na odpowiedź . Zwraca
1x1
macierz.źródło
Japt , 10 bajtów
Wypróbuj online!
Wyjaśnienie:
Zwraca
1
za prawdę,0
za fałsz.źródło
Python 2 , 41 bajtów
Wyjście odbywa się za pomocą kodu wyjścia, więc 0 to prawda, a 1 to fałsz.
Wypróbuj online!
źródło
Julia ,
3127 bajtów4 bajty zapisane dzięki @Dennis
Wypróbuj online!
źródło
Ruby , 47 bajtów
Zaoszczędzono 2 bajty dzięki Mr. Xcoder
Wypróbuj online!
źródło
C,
140137 bajtówWypróbuj online!
źródło
Python 3 , 51 bajtów
Wypróbuj online!
źródło
Perl 6 , 23 bajtów
Sprawdź to
Wykorzystuje algorytm z różnych innych pozycji.
Rozszerzony:
źródło
Japt,
11108 bajtówPierwotnie zainspirowany rozwiązaniem Mnemonica
Spróbuj
13 bajty zapisane dzięki ETHproductions.Wyjaśnienie
Domniemane wejście tablicy
U
. Zmniejsz przez dodanie (x
), mnożenie każdego elementu przez jego indeks 0 (*
) w procesie. Sprawdź, czy wynik jest równomiernie podzielny (v
) przez sumę oryginalnego wejścia (Ux
), przy czym każdy element jest mnożony przez 0,5 (*½
).źródło
m* x*2 vUx
. To sprawia, że zastanawiam się, czym* x*2
można to jeszcze bardziej zmniejszyć ...x*
i sprawdzić, czy można go podzielić przezUx*½
:)XY{X*Y}
)C # , 71 bajtów
Grał w golfa
Bez golfa
Pełny kod
Prasowe
71 bytes
- Wstępne rozwiązanie.Notatki
Mogłem mieć, lub nie, rażąco „pożyczyłem” rozwiązanie Dennis Python 2 ...
źródło
Haskell , 39 bajtów
Wypróbuj online!
źródło
APL (Dyalog) , 15 bajtów
Wypróbuj online!
Wygląda mi bardzo niechlujnie ...
źródło
Python 2 ,
7875 bajtówdzięki Mr. Xcoder za -3 bajty
Wypróbuj online!
źródło
0 in
. Także nie trzeba za0
wrange(0,len(l)*2)
..Julia 0.6 , 25 bajtów
Wypróbuj online!
źródło
PHP ,
139128 bajtówWypróbuj online!
die
dzięki manassehkatzźródło
die(1)
idie(0)
zaoszczędzisz 4 bajty za pomocą kodu exit zamiast drukowany napis.Szybki , 76 bajtów
Wypróbuj online!
źródło
Perl 5 , 55 + 1 (
a
) = 56 bajtówWypróbuj online!
źródło