var QUESTION_ID=96188,OVERRIDE_USER=41257;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Odpowiedzi:
MATL , 5 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
7B
tam, aby uzyskać[1 1 1]
[a,b,c,...]
jak zdobyć listę ,a+b
ale jak uniknąća
?Python, 25 bajtów
Aby zobaczyć, dlaczego to działa, obróć rozwinięcie w OP o 45 stopni:
źródło
Python 2, 28 bajtów
Tylko 3-krotność sumy i minus jeden z każdego elementu końcowego
źródło
a
jest pusta lista (pierwszy przypadek testowy)?a[0]
rzuciIndexError
, nie?05AB1E ,
115 bajtówZaoszczędzono 6 bajtów dzięki Adnan .
Wypróbuj online!
Wyjaśnienie
źródło
€Ð¦¨O
działa :)?€Ð
mimo że użyłem€D
wcześniej: PJavaScript (ES6),
4033 bajtówZwraca się
NaN
po otrzymaniu pustej listy.źródło
v=>eval(v.join`*3+`+"*2")-v[0]
R,
75 70 52 34 3331 bajtówSuma razy trzy i odejmij pierwszy i ostatni element
Edycja: Zapisano 3 dodatkowe bajty dzięki @rturnbull
źródło
Scala, 47 bajtów
Poprzedza i dodaje 0, a następnie używa przesuwanego okna o rozmiarze 3, aby zsumować sąsiadów, i oblicza całkowitą sumę
źródło
Java 7, 72 bajty
źródło
float
double
int
sMathematica,
343229 bajtówInspirując się staranną odpowiedzią Pytona na Lynn ...
lub
lub
Niestety takie podejście nie jest tak wygodne w Mathematica, jak w Pythonie, ponieważ nie ma krótkiego i bezpiecznego sposobu na odrzucenie pierwszego i ostatniego elementu listy, który może być pusty.
źródło
Check
MATLAB,
312826 bajtów3 bajty zapisane dzięki @Luis
Tworzy to anonimową funkcję o nazwie,
ans
którą można wywołać:ans([1, 2, 3, 4, 5])
Aby udostępnić demo online (wykorzystujące Octave), musiałem użyć
'same'
zamiast's'
ostatniego wpisu doconv
Demo online
Wyjaśnienie
Wykonujemy convolution (
conv
) z1 x 3
jądrem wszystkich 1 (utworzonych przez utworzenie tablicy,1:3
a następnie porównanie do zera>0
) i zachowujemy rozmiar oryginału, określając trzecie wejście jako'same'
lub w MATLAB, do którego możemy po prostu skrócić's'
. Następnie stosujemy sumę do wyniku.źródło
's'
Galaretka , 5 bajtów
Wypróbuj online!
Tłumaczenie mojej odpowiedzi w języku Python .
źródło
ḊṖ+ḤS
,Ṗ++ḊS
,+Ḋ+ṖS
,+Ṗ+ḊS
, ...J, 9 bajtów
Dla
[1, 2, 3, 4, 5]
sąsiedzi sąNastępnie spójrz po przekątnych sum
Potrzebujemy więc tylko znaleźć sumę danych wejściowych z usuniętą głową i usuniętym ogonem.
Stosowanie
Wyjaśnienie
źródło
Brain-Flak , 68 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
PowerShell v2 +, 40 bajtów
Podobnie do innych odpowiedzi, sumuje listę, mnoży przez 3, odejmuje elementy końcowe. Wyklucza spektakularny błąd dla pustych danych wejściowych, a następnie wypluwa
0
, ale ponieważ STDERR jest domyślnie ignorowany, jest to OK.źródło
ParameterArgumentValidationErrorEmptyStringNotAllowed
ಠ_ಠ Co za wyjątek!Ruby,
353331 bajtówZainspirowany rozwiązaniem Lynn:
to_a
Odcinek ma na sobie pustą tablicę.EDYCJA: Dzięki m-chrzan i histocrat.
źródło
:+
.[*(a*3)[1..-2]]
robi o.to_a
dwa mniej bajtów.Array#sum
.Perl 6 , 25 bajtów
Rozszerzony:
Test:
źródło
PHP, 39 bajtów
Uruchom tak:
Wyjaśnienie
Wyzwanie można zredukować do dodawania każdej liczby 3 razy, z wyjątkiem pierwszej i ostatniej liczby (dodawanej dwukrotnie). Dlatego zwracam 3 razy sumę, pomniejszoną o pierwszą i ostatnią liczbę.
źródło
> <> , 25 (+3 dla
-v
) = 28 bajtówPobiera dane wejściowe ze stosu
-v
i przyjmuje, że standardowe wejście jest puste, opierając się na nim, aby podać-1
wartość.źródło
C # z LINQ, 42 bajty
Wymaga
System.Linq
przestrzeni nazw.C #, 84 bajtów
Pełny program z przypadkami testowymi:
źródło
Rakieta 48 bajtów
Nie golfowany:
Testowanie:
Wydajność:
źródło
Gloo , 12 bajtów
Okazuje się, że funkcja Gloo nie działa zgodnie z przeznaczeniem, więc musiałem to zrobić w sposób bolesny.
Wyjaśnienie:
źródło
Eliksir , 93 bajty
Anonimowa funkcja korzystająca z operatora przechwytywania.
Pełny program z przypadkami testowymi:
Wypróbuj online na ElixirPlayground !
źródło
TI-Basic, 17 bajtów
Po prostu trzykrotnie suma listy, minus pierwszy i ostatni element.
źródło
Ans
jest to nieprawidłowa forma danych wejściowych.{1,3,5,7,2,6}:prgmNEIGHBOR
Ans
jako dane wejściowe.Rubin, 41 bajtów
Pełny program z przypadkami testowymi:
Moja pierwsza próba w Ruby.
źródło
Array#sum
. Nie zainstalowałem jeszcze wersji zapoznawczej, aby sprawdzić, czy można to po prostu wrzucić do tego rozwiązania.JavaScript, 46 bajtów
Pokaż fragment kodu
Dzięki @rlemon za dodatkowe 2 bajty
źródło
Pyke,
95 bajtówWypróbuj tutaj!
źródło
Java 8, 60
źródło
C ++, 67 bajtów
Stosowanie:
źródło
Haskell, 25 bajtów
Od najszybszego
przez najładniejsze
aż do najbrzydszych, ale najkrótszych
źródło
Partia, 67 bajtów
Jeśli nie ma żadnych parametrów, zmienia się ostatnie polecenie
0 * 3 - -0
.źródło