Minmod fonksiyonu bilinen bir çeşididir dakika kısmi diferansiyel denklemler eğim sınırlayıcı yüksek çözünürlüklü şemalarında görünür. Birkaç eğim verildiğinde, eğimler arasındaki göreceli işaretlere bakarken en düz eğimi seçer.
İşlev isteğe bağlı sayıda parametre alır. Sonra minmod (x 1 , x 2 , ..., x n ) şöyle tanımlanır:
- min (x 1 , x 2 , ..., x n ) , eğer tüm x i kesinlikle pozitifse
- max (x 1 , x 2 , ..., x n ) , tüm x eğer ben kesinlikle negatif
- Aksi halde 0 .
Yalnızca tamsayı girişlerini dikkate alacağız çünkü bu, uygulamayı gerçekten etkilememektedir ve bazı (ezoterik) diller için daha kapsayıcı olmalıdır.
STDIN, ARGV veya işlev argümanı ile n işaretli tamsayıları ( n> 0 için ) alan (değişkenli bir işlevden daha uygunsa bir diziyi kullanabilirsiniz) ve sonucu (STDOUT'a) döndüren veya basan bir program veya işlev yazın arasında (a, b) minmod .
Sen dahili kullanmayın gerekir dk ya max fonksiyonları (ve tabii ki, hiçbir yerleşik minmod ya, aslında o bulabilirse). Ayrıca, az sayıda sabit öğeyi (5'den küçük) sıralamak dışında , yerleşik sıralama işlevlerini kullanmamalısınız .
Dilinizde imzalı tür yoksa, imzasız bir tür kullanabilir ve onu ikisinin tamamlayıcısı olarak yorumlayabilirsiniz . Örneğin, diliniz yalnızca işaretsiz bayt kullanıyorsa, içeride 255
durmak -1
ve 128
içeride durmak için kullanabilirsiniz -128
.
Bu kod golf, yani en kısa cevap (bayt cinsinden) kazanır.
Test Kılıfları
Input Output
2 2
-3 -3
0 0
3 -5 0
2 4 1 1
0 1 2 0
-1 1 2 0
-4 -2 -3 -2 -2
-5 0 -1 0
1 0 -1 0
Liderler
Aşağıdaki Stack Snippet'i hem düzenli bir lider tablosu hem de kazananların dile göre genel bir incelemesini oluşturur. Öyleyse, seçtiğiniz dil tüm mücadeleyi kazanmanıza izin vermese bile, neden ikinci listedeki bir noktayı yakalamaya çalışmıyorsunuz?
Cevabınızın göründüğünden emin olmak için, lütfen aşağıdaki Markdown şablonunu kullanarak cevabınızı bir başlık ile başlatın:
# Language Name, N bytes
Gönderinizin N
büyüklüğü nerede ? Puanınızı artırmak varsa, olabilir onları içinden vurarak, başlığa eski hesapları tutmak. Örneğin:
# Ruby, <s>104</s> <s>101</s> 96 bytes
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 getAnswers(){$.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:true,success:function(e){answers.push.apply(answers,e.items);if(e.has_more)getAnswers();else process()}})}function shouldHaveHeading(e){var t=false;var n=e.body_markdown.split("\n");try{t|=/^#/.test(e.body_markdown);t|=["-","="].indexOf(n[1][0])>-1;t&=LANGUAGE_REG.test(e.body_markdown)}catch(r){}return t}function shouldHaveScore(e){var t=false;try{t|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(n){}return t}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading);answers.sort(function(e,t){var n=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[Infinity])[0],r=+(t.body_markdown.split("\n")[0].match(SIZE_REG)||[Infinity])[0];return n-r});var e={};var t=1;answers.forEach(function(n){var r=n.body_markdown.split("\n")[0];var i=$("#answer-template").html();var s=r.match(NUMBER_REG)[0];var o=(r.match(SIZE_REG)||[0])[0];var u=r.match(LANGUAGE_REG)[1];var a=getAuthorName(n);i=i.replace("{{PLACE}}",t++ +".").replace("{{NAME}}",a).replace("{{LANGUAGE}}",u).replace("{{SIZE}}",o).replace("{{LINK}}",n.share_link);i=$(i);$("#answers").append(i);e[u]=e[u]||{lang:u,user:a,size:o,link:n.share_link}});var n=[];for(var r in e)if(e.hasOwnProperty(r))n.push(e[r]);n.sort(function(e,t){if(e.lang>t.lang)return 1;if(e.lang<t.lang)return-1;return 0});for(var i=0;i<n.length;++i){var s=$("#language-template").html();var r=n[i];s=s.replace("{{LANGUAGE}}",r.lang).replace("{{NAME}}",r.user).replace("{{SIZE}}",r.size).replace("{{LINK}}",r.link);s=$(s);$("#languages").append(s)}}var QUESTION_ID=42079;var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";var answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:<(?:s>[^&]*<\/s>|[^&]+>)[^\d&]*)*$)/;var NUMBER_REG=/\d+/;var LANGUAGE_REG=/^#*\s*([^,]+)/
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>Language<td>Size<tbody id=answers></table></div><div id=language-list><h2>Winners by Language</h2><table class=language-list><thead><tr><td>Language<td>User<td>Score<tbody id=languages></table></div><table style=display:none><tbody id=answer-template><tr><td>{{PLACE}}</td><td>{{NAME}}<td>{{LANGUAGE}}<td>{{SIZE}}<td><a href={{LINK}}>Link</a></table><table style=display:none><tbody id=language-template><tr><td>{{LANGUAGE}}<td>{{NAME}}<td>{{SIZE}}<td><a href={{LINK}}>Link</a></table>