Napisz program lub funkcję, która pobiera tablicę liczb całkowitych nieujemnych jako dane wejściowe i generuje zestaw wektorów / tablic z elementami tablicy wejściowej w kolejności, podziel tak, aby każdy wektor sumował się do 15. Jeśli suma pierwszego N elementów nie „uderza w 15”, wówczas liczbę, która przeszła 15, należy odciąć, a reszta będzie pierwszym elementem następnego wektora. Trwa to do momentu dotarcia do końca tablicy wejściowej. Jeśli suma końcowego wektora jest mniejsza niż 15, to na końcu należy dodać liczbę, aby suma wzrosła.
Myślę, że zasady łatwiej zrozumieć, patrząc na przykłady:
Input: 3 7 5 10
Output:
3 7 5 <- Sum is 15
10 5 <- 5 is added to make the sum 15
Input: 2 4 5 9 2 3 5 0 2 4 5 0 3
Output:
2 4 5 4 <- Sum 15. 9 is split in two.
5 2 3 5 <- The first 5 is the remainder of 9
0 2 4 5 0 3 1 <- The last number is added to make the sum 15
Input: 1 1 1
Output:
1 1 1 12 <- The number 12 is added to make the sum 15
Input: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Output:
1 2 3 4 5
6 7 2 <- 2 is the first part of 8
6 9 <- 6 is the remainder of 8
10 5 <- 5 is first part of 11
6 9 <- 6 is remainder of 11. 9 is first part of 12
3 12 <- 3 is remainder of 12. 12 is first part of 13
1 14 <- 1 is remainder of 13. 14 is 14
15
15 <- 15 is first part of 16
1 14 <- 1 is remainder of 16. 14 is first part of 17
3 12 <- 3 is remainder of 17. 12 is added to make the sum 15
Input: 20 20
Output:
15
5 10 <- 5 is remainder from the first 20
10 5 <- 10 is remainder from second 20. 5 is added to make the sum = 15.
Zarówno format wejściowy, jak i wyjściowy są opcjonalne. Cokolwiek jest najlepsze w twoim języku.
Najkrótszy kod w bajtach wygrywa.
Tabela liderów
Fragment kodu na dole tego postu generuje katalog na podstawie odpowiedzi a) jako listy najkrótszych rozwiązań dla każdego języka oraz b) jako ogólnej tabeli wyników.
Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:
## Language Name, N bytes
gdzie N
jest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Jeśli chcesz umieścić w nagłówku wiele liczb (np. Ponieważ twój wynik to suma dwóch plików lub chcesz osobno wymienić kary za flagi tłumacza), upewnij się, że rzeczywisty wynik jest ostatnią liczbą w nagłówku:
## Perl, 43 + 2 (-p flag) = 45 bytes
Możesz także ustawić nazwę języka jako link, który pojawi się we fragmencie:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
źródło
[[3, 7, 5], [10, 5]]
byłby prawidłowy wynik dla pierwszego przypadku testowego?Input: 100 Output: 15; 15; 15; 15; 15; 15; 10 5
Odpowiedzi:
Pyth, 37 bajtów
Wyjaśnił
To był mój pierwszy pyth, więc sugeruj ulepszenia.
Przykład:
Wkład
Wydajność
Uwaga: Ogromne podziękowania dla Isaacga za kilka bajtów porady na temat zmniejszania rozmiaru i tworzenia pyta w pierwszej kolejności! Głosuj poniżej jego komentarze :)
źródło
.?
zamiastE
, ale zapomniałem zaktualizować dokumenty. Przepraszam za to.=Z+ZN
i=+ZN
są takie same. To trochę jak Python+=
. Podobnie,=Z-ZK
->=-ZK
. Ponadto nie potrzebujesz)
na końcu - jest wypełniany automatycznie. WreszcieFNQ
iVQ
są takie same.I>Z0
jeIZ
-Z
nie może być ujemne, więc tak naprawdę sprawdzasz, czyZ
nie jest zero, a zero jest fałszem, podczas gdy wszystkie inne liczby są prawdziwe.Java -
229200192181172170168 bajtówJuż się zaczęło, nie dla wygranej, ale dla zabawy :)
Wszelkie sugestie są mile widziane.
Zapisano 8 bajtów dzięki @ThomasKwa
Zapisano 20 bajtów dzięki @corsiKa
Zapisano 2 bajty dzięki @Ypnypn
Zapisano 2 bajty dzięki @ user902383
170 bajtów
172 bajty
181 bajtów
192 bajty
200 bajtów
229 bajtów
źródło
Python 3 - 1̶7̶7̶ 1̶3̶8̶ 1̶6̶6̶ 1̶3̶3̶ 113
Edytuj 5 Naprawdę gra w golfa dzięki @poke * usuniętym podziałom linii itp
Edytuj 4 Wydruk z aliasem i zastąpił znak a = - =, aby zapisać bajt. Dzięki @poke i @elzell. Przeniesiono również eval wejściowy do pętli for, aby zapisać 2 bajty z przydziału
Edytuj 3 Znaleziono oszczędności w różnych OO w ciągu sekundy if
Edytuj 2 Naprawiono błąd
Edycja 1 Zmieniono dane wejściowe w postaci „[1,2,3,4,5 ...]” i zaimplementowano pierwsze dwa komentarze, wielkie dzięki @Morgan Thrapp
Pierwszy plakat tutaj. Dane wejściowe to wiersz poleceń z wpisami oddzielonymi spacjami, dane wyjściowe to wpisy w wierszu, z nową linią między grupami.
źródło
print
tak często, należy go zapisać jako zmienną:p=print
. Oszczędza ci kolejne 14 znaków.if s>i:s-=i;p(e-s);p();e=s
Dla drugiej. To oszczędza ci łamania linii i wcięć.Haskell,
126107102100 bajtówPrzykład użycia:
(#[]).(++[14]) $ [1..17]
->[[1,2,3,4,5],[6,7,2],[6,9],[10,5],[6,9],[3,12],[1,14],[15],[15],[1,14],[3,12]]
Edycja: @Stewie Griffin pomógł mi zaoszczędzić 19 bajtów. Dzięki!
źródło
CJam, 39 bajtów
Sprawdź to tutaj.
To wydaje się bardzo nieoptymalne, ale jak dotąd wszystkie moje próby znalezienia krótszego rozwiązania zostały udaremnione przez obecność zer na wejściu.
źródło
Python2 powered by RegEx :
158155 bajtówWykonane w pytonie z miłością i prawie bez matematyki.
Lub Regex Math, jeśli chcesz, jednoargumentowa matematyka.
„Prawdziwa” matematyka używana tylko do „naprawy” ostatniego wymagania:
Codegolfed:
Działa to poprzez konwersję każdej liczby N na ciąg długości N ( x wybrany jako znak do wypełnienia ciągu) i połączenie ich wszystkich w oddzielone spacje
string
. Otrzymany ciąg jest dzielony za pomocą RegEx BLACK MAGIC na coś takiego:dla danych wejściowych takich jak:
f([1, 2, 3, 4, 5, 6, 7, 8, 10])
To jest następnie dzielone ponownie, a długość kolejnych
x
es jest używana do ponownego tworzenia liczb, wszystko ładnie zapakowane w zrozumienie listy.Nie golfowany:
Wydajność:
Uwaga: magii było za mało dla zer, więc ten wpis dyskwalifikuje
źródło
Poważnie, 88 bajtów
Wypróbuj online
To moja pierwsza poważna odpowiedź! Teraz jestem dokładnie zaznajomiony ze wszystkimi niedociągnięciami języka!
Hex Dump:
Wyjaśnienie:
źródło
JavaScript,
138128 bajtówZ białymi znakami:
Przykład:
Przypisz funkcję do zmiennej
Następnie oceń tak:
Historia zmian:
12/3/2015 00:02 - Dzięki użytkownikowi 81655 (daje +1 w komentarzach) za 10 bajtów poprawy
12/2/2015 21:44 - Przełączono na użycie funkcjonalnego stylu w celu zmniejszenia rozmiaru.
źródło
f=
nie jest potrzebne zgodnie z regułami witryny, usuń nawiasy z(i)
, otaczaj,eval
więc nie potrzebujeszreturn
lub nawiasów i zamień naif
trójskładnik, abyo
został zwrócony i zmień'\n'
na`\n`
, scalt+=...
z,t>=m
aby usunąć dla wsporniki pętli. Oto twoje rozwiązanie w 127 bajtach z wszystkimi tymi ulepszeniami:i=>eval("for(o=z=n='',m=15,t=q=0;q<i.length;q++)(t+=c=+i[q])>=m?(t-=m,z+=c-t,o+=z+`\n`,z=t>0?t+' ':n):z+=c+' ';t<m?o+z+(m-t):o")
o+
końcu linii. Usuńo+=z
i napisz to ponownie, a będzie działać. : P\n
robi jakąkolwiek różnicę`\n`
? Bez niego nie będzie działać, ponieważ kod jest w środku z"..."
powodueval
.Python 3: 139 bajtów
Nieco inne podejście niż druga odpowiedź. Daje rzeczywistą wydajność z pytania, ponieważ początkowo założyłem, że to wymaganie.
Przykładowe użycie:
źródło
Perl, 86 bajtów
Licząc shebang jako trzy, dane wejściowe są pobierane ze standardowego wejścia, oddzielone spacją.
Przykładowe użycie
źródło
R, 155 bajtów
Z wcięciami i podziałami linii:
Stosowanie:
źródło
Python 2, 117 bajtów
Pobiera dane wejściowe jako listę:
źródło
Perl, 76 bajtów
Obejmuje +3 za
-p
(zwykle +1, ale +3, aby grać fair z innym rozwiązaniem perla)Uruchom z wejściem na STDIN (ostatnia nowa linia na wejściu jest opcjonalna, ale MUSI być nieobecna dla pustego wejścia)
sum15.pl
:Spójrz, nie ma żadnych obliczeń ...
źródło
0
s są dość trudne w tym rozwiązaniu (reprezentowane przez dodatkowe spacje) i muszę być bardzo ostrożny, aby poprawnie obsługiwać spacje, aby zachować0
poprawną liczbę s. W szczególności rozważ dane wejściowe, w których suma częściowa wynosi dokładnie 15, np1 14 2 13
. Wypróbuj je bezJava -
158155 bajtówWersja Lambda https://codegolf.stackexchange.com/a/65590/46866 autor: yassin-hajaj , Nie jestem pewien, czy jest to poprawne zgłoszenie, ale nie masz wystarczającej liczby przedstawicieli, aby dodać komentarz do powiązanej odpowiedzi. Liczone przy użyciu http://meta.codegolf.stackexchange.com/questions/4944/byte-counter-snippet
158 bajtów
Bez golfa
może być używany jak
źródło