ठीक है ... वहाँ 59 (अब 60) प्रश्न छँटाई के टैग हैं , लेकिन कोई सरल quicksorts।
यह तय होना चाहिए।
क्विकॉर्टम से अपरिचित लोगों के लिए , यहाँ एक विराम है , जो कि विकिपीडिया के सौजन्य से है-
- एक तत्व चुनें, जिसे एक धुरी कहा जाता है , सरणी से।
- सरणी को फिर से व्यवस्थित करें ताकि धुरी से कम मूल्यों वाले सभी तत्व धुरी से पहले आए, जबकि धुरी से अधिक मूल्य वाले सभी तत्व इसके बाद आते हैं (समान मान किसी भी तरह से जा सकते हैं)। इस विभाजन के बाद, धुरी अपने अंतिम स्थान पर है। इसे विभाजन ऑपरेशन कहा जाता है।
- उपरोक्त चरणों को छोटे मानों के साथ तत्वों के उप-सरणी में और अलग-अलग मानों के साथ तत्वों के उप-सरणी में अलग से लागू करें।
नियम
नियम सरल हैं:
- अपनी पसंद की प्रोग्रामिंग भाषा में एक संख्यात्मक क्विकसर्ट लागू करें।
- धुरी को यादृच्छिक पर या तीन (1, अंतिम, और मध्य तत्व) के माध्यिका के साथ चुना जाना चाहिए ।
- आपका कार्यक्रम एक पूर्ण कार्यक्रम या फ़ंक्शन हो सकता है।
- आप एसटीडीआईएन, कमांड लाइन आर्ग्स, या फ़ंक्शन मापदंडों का उपयोग करके इनपुट प्राप्त कर सकते हैं। यदि स्ट्रिंग इनपुट का उपयोग किया जाता है, तो इनपुट अलग हो जाता है।
- इनपुट में दशमलव और नकारात्मक मान हो सकते हैं। हालांकि, कोई डुप्लिकेट नहीं होगा।
- आप STDOUT में या फ़ंक्शन से लौटकर आउटपुट कर सकते हैं।
- कोई अंतर्निहित छँटाई (या संबंधित छँटाई) कार्य या मानक कमियां।
- सूची एक मनमानी लंबाई हो सकती है।
बोनस # 1: सूची या लंबाई की उप-सूची <= 5 पर, चीजों को थोड़ा गति देने के लिए सम्मिलन प्रकार का उपयोग करें । इनाम: -15%।
बोनस # 2: यदि आपकी भाषा संक्षिप्तता का समर्थन करती है, तो सूची को समानांतर में सॉर्ट करें। यदि आप उप-सूचियों पर प्रविष्टि प्रकार का उपयोग कर रहे हैं, तो अंतिम प्रविष्टि प्रकार को समानांतर में होने की आवश्यकता नहीं है। थ्रेड पूल / थ्रेड शेड्यूलिंग में निर्मित की अनुमति है। इनाम: -15%।
नोट: तीन का मध्यस्थ कुछ लोगों को भ्रमित कर रहा था, इसलिए यहाँ एक स्पष्टीकरण है, (फिर से) शिष्टाचार:
धुरी के लिए विभाजन के पहले, मध्य और अंतिम तत्व के मध्य को चुनना
स्कोरिंग
यह कोड-गोल्फ है । बेस स्कोर बाइट्स में है। यदि आपको एक बोनस मिला है, तो उस संख्या से 15% की छूट लें। यदि आप दोनों मिल गए, तो 30% की छूट लें। यह वास्तव में एक बिक्री पिच की तरह लग रहा है।
यह समग्र उत्तर को खोजने के बारे में नहीं है, बल्कि प्रत्येक भाषा में सबसे छोटा है।
और अब, लीडरबोर्ड स्निपेट की एक बेशर्म कॉपी।
लीडरबोर्ड
इस पोस्ट के निचले हिस्से में स्टैक स्निपेट उत्तर से सूची बनाता है) क) प्रति भाषा में सबसे छोटे समाधान की सूची के रूप में और बी) एक समग्र लीडरबोर्ड के रूप में।
यह सुनिश्चित करने के लिए कि आपका उत्तर दिखाई देता है, कृपया अपना उत्तर शीर्षक मार्कडाउन टेम्पलेट का उपयोग करके शीर्षक के साथ शुरू करें:
## Language Name, N bytes
जहाँ N आपके सबमिशन का आकार है। यदि आप अपने स्कोर में सुधार करते हैं, तो आप पुराने अंकों को हेडलाइन में रख सकते हैं, उनके माध्यम से स्ट्राइक करके। उदाहरण के लिए:
## Ruby, <s>104</s> <s>101</s> 96 bytes
यदि आप अपने हेडर में कई संख्याओं को शामिल करना चाहते हैं (जैसे कि आपका स्कोर दो फ़ाइलों का योग है या आप दुभाषिया ध्वज दंड को अलग से सूचीबद्ध करना चाहते हैं), तो सुनिश्चित करें कि हेडर में वास्तविक अंक अंतिम संख्या है:
## Perl, 43 + 2 (-p flag) = 45 bytes
आप भाषा के नाम को एक लिंक भी बना सकते हैं जो बाद में स्निपेट में दिखाई देगा:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
/* Configuration */
var QUESTION_ID = 62476; // Obtain this from the url
// It will be like http://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 41505; // This should be the user ID of the challenge author.
/* App */
var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page;
function answersUrl(index) {
return "http://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER;
}
function commentUrl(index, answers) {
return "http://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER;
}
function getAnswers() {
jQuery.ajax({
url: answersUrl(answer_page++),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
answers.push.apply(answers, data.items);
answers_hash = [];
answer_ids = [];
data.items.forEach(function(a) {
a.comments = [];
var id = +a.share_link.match(/\d+/);
answer_ids.push(id);
answers_hash[id] = a;
});
if (!data.has_more) more_answers = false;
comment_page = 1;
getComments();
}
});
}
function getComments() {
jQuery.ajax({
url: commentUrl(comment_page++, answer_ids),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
data.items.forEach(function(c) {
if (c.owner.user_id === OVERRIDE_USER)
answers_hash[c.post_id].comments.push(c);
});
if (data.has_more) getComments();
else if (more_answers) getAnswers();
else process();
}
});
}
getAnswers();
var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+(?:.\d+)?)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;
var OVERRIDE_REG = /^Override\s*header:\s*/i;
function getAuthorName(a) {
return a.owner.display_name;
}
function process() {
var valid = [];
answers.forEach(function(a) {
var body = a.body;
a.comments.forEach(function(c) {
if(OVERRIDE_REG.test(c.body))
body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>';
});
var match = body.match(SCORE_REG);
if (match)
valid.push({
user: getAuthorName(a),
size: +match[2],
language: match[1],
link: a.share_link,
});
else console.log(body);
});
valid.sort(function (a, b) {
var aB = a.size,
bB = b.size;
return aB - bB
});
var languages = {};
var place = 1;
var lastSize = null;
var lastPlace = 1;
valid.forEach(function (a) {
if (a.size != lastSize)
lastPlace = place;
lastSize = a.size;
++place;
var answer = jQuery("#answer-template").html();
answer = answer.replace("{{PLACE}}", lastPlace + ".")
.replace("{{NAME}}", a.user)
.replace("{{LANGUAGE}}", a.language)
.replace("{{SIZE}}", a.size)
.replace("{{LINK}}", a.link);
answer = jQuery(answer);
jQuery("#answers").append(answer);
var lang = a.language;
lang = jQuery('<a>'+lang+'</a>').text();
languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang, user: a.user, size: a.size, link: a.link};
});
var langs = [];
for (var lang in languages)
if (languages.hasOwnProperty(lang))
langs.push(languages[lang]);
langs.sort(function (a, b) {
if (a.lang_raw.toLowerCase() > b.lang_raw.toLowerCase()) return 1;
if (a.lang_raw.toLowerCase() < b.lang_raw.toLowerCase()) return -1;
return 0;
});
for (var i = 0; i < langs.length; ++i)
{
var language = jQuery("#language-template").html();
var lang = langs[i];
language = language.replace("{{LANGUAGE}}", lang.lang)
.replace("{{NAME}}", lang.user)
.replace("{{SIZE}}", lang.size)
.replace("{{LINK}}", lang.link);
language = jQuery(language);
jQuery("#languages").append(language);
}
}
body { text-align: left !important}
#answer-list {
padding: 10px;
width: 290px;
float: left;
}
#language-list {
padding: 10px;
width: 290px;
float: left;
}
table thead {
font-weight: bold;
}
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="language-list">
<h2>Shortest Solution 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>
<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>
<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>