Простий гольф для початку тижня! Вам надано три масиви: базовий масив B , масив значень V та масив індексів I . Ви повинні створити інший масив, куди Vвводяться значення в Bіндексах, визначених I. Ось приклад:
Base: [5, 1, 4, 1, 3]
Values: [0, 0, 7]
Indices: [5, 0, 3]
Індекси вказують на наступні позиції в базовому масиві:
[ 5, 1, 4, 1, 3 ]
^ ^ ^
0 3 5
Отже, вставляючи відповідні елементи з масиву значень, результат повинен бути:
[0, 5, 1, 4, 7, 1, 3, 0]
Правила
Ви можете написати програму або функцію, взявши вхід через STDIN (або найближчу альтернативу), аргументи командного рядка або аргументи функції та вивести результат через STDOUT (або найближчу альтернативу), значення повернення функції або змінивши масив, заданий як Bпараметр .
Якщо ваше подання є функцією Iі Vможе бути змінено будь-яким способом, а також Bякщо воно не використовується для виводу.
Ви можете зробити наступні припущення щодо введення даних:
- Усі елементи масиву бази та значень будуть невід’ємними цілими числами.
- Масив значень матиме щонайменше ще один елемент, ніж базовий масив.
- Масив значень та масив індексів матимуть однакову кількість елементів.
- Масив індексів не міститиме повторних індексів, і всі індекси будуть у діапазоні.
- Масиви бази та значень можуть містити повторювані елементи.
- Будь-який або всі масиви можуть бути порожніми.
- Ви не повинні вважати, що індекси даються в певному порядку.
- Ви можете отримувати введення та виробляти вихід у будь-якому зручному, однозначному форматі рядка чи списку. Ви також можете отримати три масиви в іншому порядку.
- Ви можете вибрати між індексацією на основі 0 та 1.
Це кодовий гольф, тому найкоротша відповідь (у байтах) виграє.
Випробування
Наведено у форматі B V I => Resultіндексації на основі 0. Якщо ви використовуєте індексацію на основі 1, збільште елементи третього масиву на 1.
[] [] [] => []
[] [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]
Повідомте мене, якщо ви натрапите на інші цікаві кейси, і я додам їх.
Таблиця лідерів
Ось фрагмент стека для створення як звичайного табло, так і огляду переможців за мовою.
Щоб переконатися, що ваша відповідь відображається, будь ласка, почніть свою відповідь із заголовка, використовуючи наступний шаблон Markdown:
# Language Name, N bytes
де Nрозмір вашого подання. Якщо ви покращите свій рахунок, ви можете зберегти старі бали у заголовку, прокресливши їх. Наприклад:
# 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до порожнього масиву для мов, де порожній масивNULL?