Biorąc pod uwagę tablicę liczb całkowitych, a
która zawiera n liczb całkowitych i jedną liczbę całkowitą x
; usuń jak najmniej elementów z, a
aby suma była a
równa x
. Jeśli żadna kombinacja nie a
może się utworzyć x
, zwróć wartość fałszowania.
Jak wskazano w komentarzu, jest to maksymalny zestaw z sumą x , przepraszam za mój mniejszy mózg matematyczny. Zapomniałem wielu warunków od czasu college'u.
Przykłady (Prawda):
f([1,2,3,4,5,6,7,8,9,10], 10) = [1,2,3,4]
f([2,2,2,2,2,2,2,2,2], 10) = [2,2,2,2,2]
f([2,2,2,2,-2,-2,-2,-4,-2], -8) = [2,2,-2,-2,-2,-4,-2]
f([-2,-4,-2], -6) = [-4,-2] OR [-2,-4]
f([2,2,2,4,2,-2,-2,-2,-4,-2], 0) = [2,2,2,4,2,-2,-2,-2,-4,-2]
(Bez zmian)
f([], 0) = []
(Sprawa niezmienionej sumy zerowej)
Przykłady (Falsy, dowolna spójna wartość niebędąca tablicą):
Nie można zrobić sprawy: f([-2,4,6,-8], 3) = falsy (E.G. -1)
Przypadek zerowej sumy: f([], non-zero number) = falsy (E.G. -1)
- Uwaga: jakakolwiek wartość
[-1]
nie może być poprawna w przypadku fałszowania, ponieważ jest to potencjalna prawda.
Zasady:
- Dane wejściowe mogą być pobierane w formie tablic lub jako lista argumentów, przy czym ostatnia lub pierwsza istota
x
. - Wyjściem może być dowolna lista liczb całkowitych. EG
1\n2\n3\n
lub[1,2,3]
. - Każda wartość może być używana jako wskaźnik fałszowania, inna niż tablica liczb całkowitych.
- Twój kod musi maksymalizować rozmiar tablicy końcowej, kolejność nie ma znaczenia.
- EG Dla
f([3,2,3],5)
obu[2,3]
i[3,2]
są jednakowo ważne. - EG Bo
f([1,1,2],2)
możesz wrócić tylko[1,1]
tak, jak[2]
jest krótszy.
- EG Dla
- Zarówno suma, jak
a
i wartośćx
będą mniejsze2^32-1
i większe niż-2^32-1
. - To jest golf golfowy , wygrana o najniższej liczbie bajtów.
- Jeśli istnieje wiele subarrays tej samej wielkości, które są ważne, jest to nie do zaakceptowania wyjściu wszystkich z nich. Musisz wybrać jeden i wyprowadzić go.
Daj mi znać, jeśli został opublikowany, nie mogłem go znaleźć.
Znalazłem takie posty : Powiązane, ale zamknięte , ...
źródło
Odpowiedzi:
Brachylog , 8 bajtów
Wypróbuj online!
Comiesięczna odpowiedź Brachylog. Zwraca,
false.
jeśli nie jest to możliwe.Wyjaśnienie
źródło
Python 2 ,
108104 bajtówWypróbuj online!
-4 bajty, dzięki Jonathan Allan
Python 2 ,
108106 bajtówWypróbuj online!
-2 bajty, dzięki Janathan Frech
źródło
range(-len(a),1)
i,-l
aby uratować 2, alelambda a,n:[x for l in range(len(a)+1)for x in combinations(a,l)if sum(x)==n][-1]
oszczędzasz 4.05AB1E , 9 bajtów
Wypróbuj online!
źródło
Japt
-h
, 11 bajtówWypróbuj online!
źródło
Pyth , 8 bajtów
8-byter ( Spróbuj! ) - Wyprowadza tylko jedno możliwe rozwiązanie. W przypadku nierozwiązywalnych danych wejściowych nie wypisuje niczego do STDOUT, który jest pustym łańcuchem, co technicznie rzecz biorąc mówi falsey w Pyth, ale zapisuje do STDERR. Dziękujemy FryAmTheEggman za zasugerowanie tego (ignorowanie STDERR i skupianie się tylko na wyjściu STDOUT), oszczędzając w ten sposób 1 bajt.
9-byter ( Spróbuj! ) - Wyprowadza tylko jedno możliwe rozwiązanie, zawinięte w listę singletonów, jak domyślnie dozwolone (np
([1...10], 10) -> [[1,2,3,4]]; ([], 0) -> [[]]
.). Dla wejść nierozwiązywalnych, zwraca[]
, co jest falsey w Pyth.10-byter ( Try it! ) - Aby uzyskać wyraźniejszy wynik, bez korzystania z reguły singleton-list i używania
0
zamiast[]
wartości fałszowania.Wyjaśnienie
Najpierw kod oblicza zestaw energetyczny listy danych wejściowych (wszystkie możliwe uporządkowane podkolekcje). Następnie zachowuje tylko te kolekcje, których suma jest równa liczbie wejściowej. Należy zauważyć, że kolekcje są generowane od najkrótszych do najdłuższych, dlatego skupiamy się na ostatniej. Aby to uzyskać:
lst[-1:]
w miejscelst[-1]
aby uniknąć błędów z wyrzucane wejść nierozwiązywalnych.źródło
[]
jest falsy? Schludny. Dlaczego Pyth to robi[]
?f([], 0) = []
?Galaretka , 7 bajtów
Wypróbuj online!
Wyjaśnienie wyników w zakresie TIO.
źródło
Perl 6 ,
3837 bajtówWypróbuj online!
Funkcja curry.
źródło
;
ogóle konieczne?$^x
się$_
.)Brachylog , 4 bajty
Wypróbuj online!
Prawie równoważne z Fatalize
h⊇.+~t?∧
, z wyjątkiem znacznie krótszego, dzięki funkcji predykatu składu, która zgodnie z historią edycji referencji była w toku do 8 stycznia, od opublikowania odpowiedzi o ponad dwa miesiące.⟨⊇+⟩
jest kanapką , rozwijającą się do{[I,J]∧I⊇.+J∧}
, gdzie nawiasy klamrowe są w tym przypadku nieistotne, ponieważ kanapka i tak jest na swojej linii.Znacznie mniej dramatyczna transformacja odpowiedzi Fatalize, która wykorzystuje te same predykaty z tymi samymi zmiennymi, ale wychodzi o bajt krótszy z różnej organizacji:
Brachylog , 7 bajtów
Wypróbuj online!
(Ponadto, jeśli ktoś chce zobaczyć coś dziwnego, zmień dowolny znak podkreślenia w testach na myślniki).
źródło
Pyth , 14 bajtów
Wypróbuj online!
źródło
Czysty , 89 bajtów
Wypróbuj online!
Definiuje funkcję
$ :: Int -> [Int] -> (Maybe [Int])
zwracającą,Nothing
jeśli nie ma odpowiedniej kombinacji elementów, i(Just [elements...])
inaczej.źródło
JavaScript (ES6), 108 bajtów
Pobiera dane wejściowe jako
(array)(n)
. Zwraca tablicę lubfalse
.Wypróbuj online!
źródło
Zaczęło się to fajnie i małe, ale przykuły mnie przypadki. Cokolwiek się stanie, jestem dumny z pracy, którą w to włożyłem.
Python 3 ,
169 161154 bajtówWypróbuj online!
źródło
range(x)
generuje(0...x-1)
? Więcrange(len(a))
nie dajesz możliwości pozostawienia tablicy bez zmian?if a==[] and x==0
używaćif sum(a)==x
. Następnie możesz również usunąć+1
zrange
.R ,
10080 bajtówWypróbuj online!
20 bajtów zapisanych dzięki digEmAll
Zwraca
FALSE
za niemożliwe kryteria.źródło
Attache , 28 bajtów
Wypróbuj online!
Alternatywy
34 bajty :
f[x,y]:=({y=Sum@_}\Radiations@x)@0
30 bajtów :
First@${y&`=@Sum\Radiations@x}
29 bajtów :
{(_&`=@Sum\_2)@0}#/Radiations
29 bajtów :
${({y=Sum@_}\Radiations@x)@0}
29 bajtów :
`@&0@${y&`=@Sum\Radiations@x}
29 bajtów :
{_}@@${y&`=@Sum\Radiations@x}
Wyjaśnienie
źródło
APL (NARS), 65 znaków, 130 bajtów
↓ jest używane, ponieważ pierwszym elementem zestawu zbiorów byłby jeden zbiór nieważności (tutaj ⍬ Zilde), który chce się wyeliminować, ponieważ wydaje się, że + / ⍬ wynosi zero ...
Za brak znalezienia lub błąd zwróci ⍬ lub drukowany tekst:
test:
źródło