Haftaya başlamak için basit bir golf! Üç dizi verilir: temel dizi B
, değer dizisi V
ve dizin dizisi I
. Tarafından belirtilen değerlere V
girilen değerlerin eklendiği başka bir dizi üretmelisiniz . İşte bir örnek:B
I
Base: [5, 1, 4, 1, 3]
Values: [0, 0, 7]
Indices: [5, 0, 3]
Endeksler, baz dizisinde aşağıdaki pozisyonları gösterir:
[ 5, 1, 4, 1, 3 ]
^ ^ ^
0 3 5
Dolayısıyla, değer elemanından ilgili elemanların eklenmesiyle sonuç şöyle olmalıdır:
[0, 5, 1, 4, 7, 1, 3, 0]
kurallar
STDIN (veya en yakın alternatif), komut satırı argümanları veya fonksiyon argümanları üzerinden giriş alarak bir program veya fonksiyon yazabilir ve sonucu STDOUT (veya en yakın alternatif), fonksiyon dönüş değeri veya B
parametre olarak verilen diziyi değiştirerek yazdırabilirsiniz. .
Gönderiminiz bir işlevse I
ve çıktı olarak kullanılmadığı V
gibi herhangi bir şekilde değiştirilebilir B
.
Girdi hakkında aşağıdaki varsayımları yapabilirsiniz:
- Temel ve değer dizisinin tüm öğeleri negatif olmayan tam sayılar olacaktır.
- Değer dizisi, temel diziden en fazla bir öğeye sahip olacaktır.
- Değer dizisi ve dizin dizisi aynı sayıda öğeye sahip olacaktır.
- İndeks dizisi tekrarlanan indeksler içermeyecek ve tüm indeksler aralık içinde olacaktır.
- Taban ve değer dizileri olabilir tekrarlanan elemanları içerir.
- Dizilerin herhangi biri veya tümü boş olabilir.
- Endekslerin belirli bir sırada verildiğini varsaymamalısınız.
- Herhangi bir uygun, açık dize veya liste biçiminde girdi alabilir ve çıktı alabilirsiniz. Üç diziyi farklı bir sırayla almayı da seçebilirsiniz.
- 0 tabanlı ve 1 tabanlı indeksleme arasından seçim yapabilirsiniz.
Bu kod golf, yani en kısa cevap (bayt cinsinden) kazanır.
Test Kılıfları
B V I => Result
0 tabanlı indeksleme için verilen format . 1 tabanlı endeksleme kullanıyorsanız, üçüncü dizinin öğelerini 1 arttırın.
[] [] [] => []
[] [1] [0] => [1]
[1,2] [] [] => [1,2]
[1,2] [3] [0] => [3,1,2]
[1,2] [3] [1] => [1,3,2]
[1,2] [3] [2] => [1,2,3]
[0,0,0] [1,1,1,1] [0,1,2,3] => [1,0,1,0,1,0,1]
[5,1,4,1,3] [0,0,7] [5,0,3] => [0,5,1,4,7,1,3,0]
[1,2,3,4] [4,3,2,1] [4,0,3,1] => [3,1,1,2,3,2,4,4]
Başka ilginç kenar davalarıyla karşılaşırsan bana haber ver, ben de ekleyeceğim.
Liderler Sıralaması
Burada hem düzenli bir lider tablosu hem de kazananların dile göre bir genel bakışını oluşturmak için bir Stack Snippet'i var.
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
var QUESTION_ID=50369;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(){jQuery.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),e.has_more?getAnswers():process()}})}function shouldHaveHeading(e){var a=!1,r=e.body_markdown.split("\n");try{a|=/^#/.test(e.body_markdown),a|=["-","="].indexOf(r[1][0])>-1,a&=LANGUAGE_REG.test(e.body_markdown)}catch(n){}return a}function shouldHaveScore(e){var a=!1;try{a|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(r){}return a}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading),answers.sort(function(e,a){var r=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0],n=+(a.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0];return r-n});var e={},a=1,r=null,n=1;answers.forEach(function(s){var t=s.body_markdown.split("\n")[0],o=jQuery("#answer-template").html(),l=(t.match(NUMBER_REG)[0],(t.match(SIZE_REG)||[0])[0]),c=t.match(LANGUAGE_REG)[1],i=getAuthorName(s);l!=r&&(n=a),r=l,++a,o=o.replace("{{PLACE}}",n+".").replace("{{NAME}}",i).replace("{{LANGUAGE}}",c).replace("{{SIZE}}",l).replace("{{LINK}}",s.share_link),o=jQuery(o),jQuery("#answers").append(o),e[c]=e[c]||{lang:c,user:i,size:l,link:s.share_link}});var s=[];for(var t in e)e.hasOwnProperty(t)&&s.push(e[t]);s.sort(function(e,a){return e.lang>a.lang?1:e.lang<a.lang?-1:0});for(var o=0;o<s.length;++o){var l=jQuery("#language-template").html(),t=s[o];l=l.replace("{{LANGUAGE}}",t.lang).replace("{{NAME}}",t.user).replace("{{SIZE}}",t.size).replace("{{LINK}}",t.link),l=jQuery(l),jQuery("#languages").append(l)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:<(?:s>[^&]*<\/s>|[^&]+>)[^\d&]*)*$)/,NUMBER_REG=/\d+/,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><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>
NULL
Boş bir dizinin olduğu diller için boş bir diziyi nasıl hissedersinizNULL
?