লসী বাছাই (ড্রপসোর্ট কার্যকর করুন)


61

ডেভিড মরগান-মার ডিজাইন করেছেন ড্রপসোর্ট , রৈখিক সময়ের "বাছাই করা অ্যালগরিদম" এর একটি উদাহরণ যা একটি তালিকা তৈরি করে যা বাস্তবে সাজানো হয় তবে এতে কেবল কয়েকটি মূল উপাদান থাকে। এর আগে থাকা উপাদানগুলির সর্বাধিকের চেয়ে কম পরিমাণে বড় না এমন কোনও উপাদান কেবল তালিকা থেকে সরানো এবং বাতিল করা হয়।

এই টাস্কে আপনাকে ইনপুট হিসাবে পূর্ণসংখ্যার একটি তালিকা দেওয়া হবে (এসটিডিআইএন বা ফাংশন আর্গুমেন্ট, আপনাকে কমপক্ষে 8-বিট স্বাক্ষরিত পূর্ণসংখ্যার পরিসর সমর্থন করতে হবে)) আপনার কাজটি হ'ল ড্রপসোর্ট এবং তারপরে বাকী উপাদানগুলিকে আউটপুট আউট করা অর্ডার।

আপনি ধরে নিতে পারেন যে তালিকাটি খালি নয়।

এটি কোড গল্ফ, তাই সংক্ষিপ্ততম প্রোগ্রামটি জয়ী।

পরীক্ষার মামলা

Input             Output
1 2 5 4 3 7       1 2 5 7
10 -1 12          10 12
-7 -8 -5 0 -1 1   -7 -5 0 1
9 8 7 6 5         9
10 13 17 21       10 13 17 21
10 10 10 9 10     10 10 10 10

লিডারবোর্ড

var QUESTION_ID=61808,OVERRIDE_USER=39022;function answersUrl(e){return"https://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"https://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>


1
চেক হয় highest < current? নাকি highest <= current?
মরগান থ্র্যাপ

7
বর্তমান উপাদান রাখুন highest (so far)<=current
সুপারজেডি ২৪

আমরা কি ধরে নিতে পারি যে তালিকায় কমপক্ষে একটি উপাদান থাকবে?
lirtosiast

@ থমাসকওয়া: হ্যাঁ
সুপারজেডি ২৪

19
ড্রপসোর্টস উন্নত দক্ষতা কোনও কোম্পানিকে বেতন-ভাতা ব্যবস্থায় ব্যবহার করা হলে প্রচুর অর্থ সাশ্রয় করতে পারে।
পাইরুলেজ

উত্তর:


42

এপিএল, 9 বাইট

⊢(/⍨)⊢=⌈\

এটি ডায়াগ্রাম সহ একটি monadic ফাংশন ট্রেন:

┌─┼───┐  
⊢ ⍨ ┌─┼─┐
┌─┘ ⊢ = \
/     ┌─┘
      ⌈  

ট্রেনবিহীন সংস্করণটি হ'ল

{⍵/⍨⍵=⌈\⍵}

এটি মূলত যাচাই করে যে প্রতিটি উপাদান চলমান সর্বোচ্চের সমান কিনা।

নোট করুন যে মার্টিন বাটনার জ সলিউশনটি এটির সমান দৈর্ঘ্য এবং প্রথমে পোস্ট করা হয়েছিল।


41
বোনাস পয়েন্ট কারণ এটি দেখতে সুন্দর লাগছে।
সামিটিচ

22
কোডটি একটি বিড়ালের ফ্ল্যাপে অসন্তুষ্ট
ডুডের

2
বাইট গণনা এবং কোন এনকোডিংটি ব্যবহারের উদ্দেশ্যে তা নিয়ে আমি বেশি কিছু জানি না, তবে মোথেরেফ.আইন . / বাইট- কাউন্টার এবং মেটা কোডেগল্ফ.স্ট্যাকেকেক্সচেঞ্জ / প্রশ্নগুলি / 44৪৪৪/২ অনুসারে এটি ১ by বাইট এবং বাইটসাইমেটমিটার । com এটি 13.
DLeh

3
@ ডিএলএইচটি ইউটিএফ -8 এ রয়েছে। ইউনিকোডের অস্তিত্বের আগে থেকে এপিএলের নিজস্ব লিগ্যাসি এনকোডিং রয়েছে যা এপিএল চরিত্রের প্রতি 1 বাইট 1
isaacg

3
@ ডিএলএইচ বাইটসাইজমেটারগুলি বাইটগুলি গণনা করার জন্য একটি মেক আপ অ্যালগরিদম ব্যবহার করে, যা প্রকৃত এনকোডিংয়ের সাথে (এবং করতে পারে না ) correspond
ডেনিস

21

জে, 10 9 বাইট

#~(=>./\)

আমার সিজেএম ধারণাটির কার্যকরী সংস্করণ (কম বাইটে)। উদাহরণ:

   f =: #~(=>./\)
   f 10 10 10 9 10
10 10 10 10
   f 1 2 5 4 3 7
1 2 5 7

ব্যাখ্যা

প্রথমত, আমরা প্রতিটি উপসর্গের সর্বাধিক পাই:

    >./\

(এখানে, >.সর্বাধিক অপারেটর, /অপারেটরটিকে একটি তালিকায় ভাঁজ করে এবং \ইনপুটটির সমস্ত উপসর্গ পেয়ে যায়))

তারপরে আমরা সামঞ্জস্যের জন্য সেই তালিকাটি প্রাথমিকভাবে তুলনা করি:

  (=>./\)

এবং পরিশেষে, আমরা সমস্ত উপাদান নির্বাচন করি যেখানে বুলিয়ান ফলাফলের এই তালিকাটি দেয় 1:

#~(=>./\)

16

হাস্কেল, ২৮

foldr(\x l->x:filter(x<)l)[] 

একটি বেনামে ফাংশন। এটিকে কল করুন

foldr(\x l->x:filter(x<)l)[] [-7, -8, -5, 0, -1, 1] 
[-7,-5,0,1]

পুনরাবৃত্তির সমতুল্য

f[]=[]
f(x:l)=x:filter(x<)(f l)

পুনরাবৃত্তভাবে অনুবাদিত, আমরা উপাদানগুলির উপর পুনরাবৃত্তি করি এবং আমরা প্রত্যেকে প্রত্যক্ষ করি তার জন্য আমরা যে তালিকাটি পুনরাবৃত্তি করছি তার অবশিষ্ট অংশগুলি থেকে এর চেয়ে ছোটগুলি সরিয়ে ফেলি। অ্যান্টিস্টিনিসকে একটি বাইট সংরক্ষণের জন্য ধন্যবাদ (x<)


লাম্বদা তরকারি কেন? কয়েকটি চরিত্র সংরক্ষণ করা উচিত ...
গাণিতিক

@ গণিত অরচিড যদি আপনি বোঝাতে foldr(\x->(x:).filter(>=x))[]চান তবে এটি একই দৈর্ঘ্যে পরিণত হবে।
xnor

আহ। আমি কেবল ফিল্টারটি শেষে দেখেছি এবং ভেবেছিলাম "আরে, আপনি এটি তরকারি করতে পারেন!" আমার কাছে এমনটি ঘটেনি যে x:আপনাকে ডট অপারেটর যুক্ত করতে বাধ্য করে। ওহ ভাল ...
ম্যাথমেটিক্যালআরচিড

1
এটা O(n^2)যদিও। অপ্রয়োজনীয় তুলনা অনেক। ;-(
গর্বিত হাসেল্লার ২২'২16

(> = X) (x <) তে কেন পরিবর্তন করবেন না? এটি 1 বাইট সংরক্ষণ করবে
অ্যান্টিস্টেনেস

10

পাইথন 2, 49

f=lambda a:a and f(a[:-1])+a[-1:]*(a[-1]==max(a))

1
এটা চমৎকার.
মরগান থ্র্যাপ

1
@ থমাসকওয়া সমস্যাটি কীভাবে আপনি পুনরাবৃত্ত কলগুলি বন্ধ করেন। আপনার খালি কেস লাগবে এমনকি ইনপুটটি কেসটি বাদ দেয়।
বাকুরিউ

সমস্যাটি হ'ল এটি রৈখিক নয় কারণmax(a)
njzk2

1
@ njzk2 চ্যালেঞ্জটি রৈখিক সময়ে চলমান বাস্তবায়ন প্রয়োজন হয় না।
28:15

3
@ njzk2 সুন্দর কোড শেষ শেষ!
ফেয়ারসাম

10

জাভাস্ক্রিপ্ট (ES6), 29

জাভাস্ক্রিপ্টে স্ট্যান্ডার্ড ধরণের রূপান্তরটি অপব্যবহার, সংখ্যায় অ্যারে:

  • মাত্র 1 সংখ্যার অ্যারে => এই সংখ্যাটি
  • অন্য কোনও অ্যারে => নাএন

d=l=>l.filter(v=>l>v?0:[l=v])

// TEST
console.log=x=>O.innerHTML+=x+'\n'

;[
  [[1,2,5,4,3,7], [1,2,5,7]]
, [[10,-1,12], [10,12]]
, [[-7,-8,-5,0,-1,1], [-7,-5,0,1]]
, [[9,8,7,6,5], [9]]
, [[10,13,17,21], [10,13,17,21]]
, [[10,10,10,9,10], [10,10,10,10]]
].forEach(t=>( i=t[0],r=d(i),x=t[1],              
  console.log('Test '+i+' -> '+r+(r+''==x+''?' OK':' Fail (expected '+x+')')))
)
<pre id=O></pre>


কি দারুন. আমি ভেবেছিলাম 38 বাইট প্রায় সেরা সম্ভব; দৃশ্যত আমি খুব ভুল ছিল। +1
ইটিএইচ প্রোডাকশন

টেবিল চালিত পরীক্ষা। নিস!
slebetman



7

ব্র্যাচল্যাগ , 5 বাইট

⊇ᶠ↔ᵒt

এটি অনলাইন চেষ্টা করুন!

জেলি , 5 বাইট

ŒPUÞṪ

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

⊇ᶠ↔ᵒt    ŒPUÞṪ
⊇ᶠ       ŒP       On all subsequences of {the input}
   ᵒ        Þ     sort by
  ↔        U      their reverse
    t        Ṫ    then take the last element (i.e. the maximum as given by the sort)

এটি একটি বিরল পরিস্থিতি: আমি একটি অ্যালগরিদম ব্যবহার করতে পারি যা (যতদূর আমি দ্রুত স্কিম দিয়ে বলতে পারি) এখন পর্যন্ত কেউ ব্যবহার করছে না, এবং এটি একরকমভাবে দুটি পৃথক গল্ফিং ভাষায় একই দৈর্ঘ্যটি একেবারে পৃথক বাক্য গঠন সহ শেষ করে এবং বিল্টিন সেটগুলি, প্রোগ্রামগুলির মধ্যে 1-থেকে -1 চিঠিপত্রের সাথে (কমান্ডগুলি একই ক্রমেও থাকে!)। সুতরাং এগুলি একত্রিত করার জন্য এটি আরও বোধগম্য বলে মনে হয়েছিল - একরকম, এটি একই প্রোগ্রাম, এবং এটি আলাদাভাবে জমা দেওয়ার চেয়ে উভয় ভাষায় লিখেছিলাম যা সংক্ষিপ্ত ছিল।

এখানে মূল ধারণাটি হ'ল একটি তালিকার ড্রপসোর্টটি হ্রাস অভিধানের সর্বোচ্চ বিপরীতার সাথে তার উপসর্গ। অদ্ভুতভাবে, কোনও ব্র্যাচলগ বা জেলি কোনও একটি নির্দিষ্ট কার্য দ্বারা সর্বাধিক সন্ধানের জন্য একটি অন্তর্নির্মিত (জেলি একটি নির্দিষ্ট ফাংশন দ্বারা সমস্ত ম্যাক্সিমাকে ফেরত দেওয়ার জন্য অন্তর্নির্মিত আছে , তবে ফলাফলের পরিবর্তে ফলাফল যুক্ত একটি একক তালিকা ফিরিয়ে দিতে পারে, এবং এটি এইভাবে করার চেয়ে ছোটও নয়)। সুতরাং পরিবর্তে, আমরা সমস্ত সম্ভাব্য উপসর্গ উত্পন্ন করি, বিপরীত অনুসারে বাছাই করুন, শেষটি নিন।

"লেসিকোগ্রাফিকভাবে সর্বাধিক বিপরীত" কাজ করার কারণটি হ'ল নির্বাচিত আউটপুটটি অবশ্যই শেষ হবে (সুতরাং এর বিপরীতটি অবশ্যই শুরু করতে হবে) ইনপুট তালিকার সর্বোচ্চ সংখ্যার সাথে (এটি সহজেই দেখা যায় যে ড্রপসোর্ট আউটপুটটি সর্বদা এর সাথেই শেষ হবে), এবং এভাবেই এর পরে আর কিছু থাকবে না (কারণ উপসূচাগুলি নেওয়া ক্রম সংরক্ষণ করে)। সূক্ষ্মভাবে পুনরাবৃত্তি করুন এবং আমরা ড্রপসোর্টের সংজ্ঞা দিয়ে শেষ করি।


6

গণিত, 26 বাইট

DeleteDuplicates[#,#>#2&]&

2
আমি ম্যাথামেটিকাকে জানি না, তবে এমন কিছু যা কল DeleteDuplicatesকরে তা দেখে {10, 10, 10, 10}ইনপুট ফেরত আসবে না{10, 10, 10, 9, 10}
ডেনিস ২

2
@ ডেনিস: এটি আছে, আমি এটি পরীক্ষা করেছি। কৌশলটি হ'ল আমি পাস "" সমতুল্য "পরীক্ষার চেয়ে বড়"। হ্যাঁ, এটি function ফাংশনের একটি অপব্যবহার, তবে এটি কাজ করে এবং কোড গল্ফ যাইহোক সেরা প্রোগ্রামিং অনুশীলন সম্পর্কে ঠিক নয়।
celtschk

2
ঠিক আছে, নামটি যা বোঝায় তা সত্ত্বেও DeleteDuplicatesদুটি যুক্তি সহ একটি সাধারণ ফিল্টার বলে মনে হয়।
ডেনিস

5

আর, 29 26 বাইট

function(x)x[x>=cummax(x)]

এটি এমন একটি ফাংশন অবজেক্ট তৈরি করে যা কোনও ভেক্টরকে গ্রহণ করে xএবং xসমস্ত উপাদানকে সর্বাধিক সংখ্যক তত পরিমাণে বৃহত্তর নয় সরানোর পরে ফিরে আসে x

ফ্লাডেলের জন্য 3 বাইট সংরক্ষণ করা হয়েছে!


ফাংশন ফর্ম সংক্ষিপ্ত হবে।
ফ্লোডেল

@ ফ্লোডেল আপনি একদম ঠিক বলেছেন ধন্যবাদ!
অ্যালেক্স এ

4

কে, 11 বাইট

{x@&~x<|\x}

পদক্ষেপে:

  f: {x@&~x<|\x}
  f'(1 2 5 4 3 7
     10 -1 12
     -7 -8 -5 0 -1 1
     9 8 7 6 5
     10 13 17 21
     10 10 10 9 10)

(1 2 5 7
 10 12
 -7 -5 0 1
 ,9
 10 13 17 21
 10 10 10 10)

{x@&~<':x}একটি বাইট সংক্ষিপ্ত।
kirbyfan64sos

@ kirbyfan64sos: প্রতিটি ব্যবহারকারীর ব্যবহার সঠিক ফলাফল দেয় না। ইনপুট কেস বিবেচনা করুন 3 4 2 2 5
জন

আহ আমি দেখি. একটি ফিক্স হবে {x@&~<':x}/, কিন্তু একই দৈর্ঘ্য।
kirbyfan64sos

3

জাভা, 82 বাইট

void f(int[]a){int m=a[0];for(int n:a){System.out.print(m>n?"":n+" ");m=n>m?n:m;}}

এখানে একটি সহজ আউটপুট লুপ। এটি সর্বাধিক রাখে mএবং প্রতিটি উপাদানকে তুলনা করে।


1
আপনি একটি ল্যামডা ব্যবহার করে এটি কমান পারেন:a->{int m=a[0]...
ড্যানিয়েল এম

হ্যাঁ, আপনি সাধারণত পারেন যদিও আমি ল্যাম্বডা-আইজ জাভা গল্ফ নেই।
জিওবিটস 27:58

3

পার্ল, 33 বাইট

32 বাইট কোড + -p

$p=$_;s/\S+ ?/$&>=$p&&($p=$&)/ge

অতিরিক্ত স্পেস আউটপুটে গ্রহণযোগ্য হন, সরিয়ে 31 বাইট হতে পারে এবং ?। এর মাধ্যমে একটি স্ট্রিং (অথবা নিউলাইন পৃথক করা সংখ্যার) স্ট্রিং গ্রহণ করে STDIN:

perl -pe'$p=$_;s/\S+ ?/$&>=$p&&($p=$&)/ge' <<< '-7 -8 -5 0 -1 1'
-7 -5 0 1
perl -pe'$p=$_;s/\S+ ?/$&>=$p&&($p=$&)/ge' <<< '10 10 10 9 10'
10 10 10 10

3

পাইথন 3, 67

বেশ প্রাণঘাতী শক্তি। এটি একটি ফাংশনে পরিবর্তিত হয়েছে, কারণ আমি মিস করেছি যে এটি একটি বৈধ উত্তর ছিল।

def f(i):
 s=[i[0]]
 for n in i[1:]:
  if s[-1]<=n:s+=[n]
 return s

অবরুদ্ধ সংস্করণ:

input_numbers = input().split()
sorted_numbers = []
previous_number = int(input_numbers[0])
for number in map(int, input_numbers):
    if previous_number <= number:
        sorted_numbers.append(number)
        previous_number = number
print(sorted_numbers)


3

হাস্কেল, 38 37 বাইট

জার্কিনস্টলকে 1 বাইট সংরক্ষণ করা হয়েছে

f(x:y:s)|x>y=f$x:s|1>0=x:f(y:s)
f s=s

1
আপনি আপনার এক সেট বন্ধনীর সেটগুলির $একটিতে পুরো বাইট দ্বারা কাটাতে প্রতিস্থাপন করতে পারেন ! f(x:y:s)|x>y=f$x:s|1>0=x:f(y:s);f s=s (সেমি-কোলন ব্যবহার করা হয়েছে কারণ মন্তব্যগুলি
নিউলাইনগুলিকে

3

সি # - 6864 বা 132127 অক্ষর

int[]f(int[]b){return b.Where((v,i)=>i<1||b[i-1]<=v).ToArray();}

Whereএক্ষেত্রে তালিকার মধ্য দিয়ে পুনরাবৃত্তি হয় এবং তালিকার vসূচকে প্রতিটি উপাদানের জন্য iবুলিয়ান এক্সপ্রেশনটি মূল্যায়ন করে। যদি অভিব্যক্তিটি সত্যে মূল্যায়ন করে তবে ফলাফলটি আইটেমটি যুক্ত করা হবে। বুলিয়ান এক্সপ্রেশনটির একমাত্র আসল কৌশলটি হ'ল শর্তটি সত্য হিসাবে মূল্যায়ন করার সাথে সাথে সি # শর্ট সার্কিট বা মূল্যায়ন। এটি IndexOutOfRangeExceptionব্যতিক্রম প্রতিরোধ করে এবং তালিকায় প্রথম উপাদান রাখে।

যদি ইনপুট এবং আউটপুটটি স্ট্রিং করতে হয় (আমি নিশ্চিত করে বলতে পারি না, তাই আমি এটি ওপি এবং আপনার বাকী বাকী স্থানে রেখে দেব))

string t(string b){var c=b.Split(' ').Select(d=>int.Parse(d)).ToList();return String.Join(" ",c.Where((v,i)=>i<1||c[i-1]<=v));}

একটি বিট দেয় যে সংক্ষেপণ:

string t(string b) 
{
    var c=b.Split(' ').Select(d=>int.Parse(d)).ToList();
    return String.Join(" ",c.Where((v, i)=>i<1||c[i-1]<=v));
}

এই ক্ষেত্রে ফাংশনের দ্বিতীয় লাইন উপরের মত সঠিক একই যুক্তি ব্যবহার করছে। Selectদখল তালিকার উপাদান এবং তাদের পরিবর্তন করে intToList1 এ কল নির্বাচনকে মূল্যায়ন করতে বাধ্য করে এবং সংকলন সময়ে এটিকে varরূপান্তরিত করে List<int>, যাতে এটি Whereপূর্ণসংখ্যার সংকলনে কাজ করে।

এটি সি # প্যাডে চেষ্টা করে দেখুন

যথাক্রমে 4 বাইট এবং 5 বাইট ছাঁটাতে সহায়তা করার জন্য ভিজ্যুয়েলমেলনকে ধন্যবাদ । :)

টুটু তালিকার তালিকা?


আমি যদি ভুল হিসাব করে থাকি, বা আমার ব্যাখ্যাটির কিছু ব্যাখ্যা দেওয়ার দরকার পড়ে, দয়া করে আমাকে জানান। :)
বিবি

1
দুর্দান্ত কাজ - আপনি কয়েকটি সাধারণ কৌশল ব্যবহার করে কয়েকটি বাইট সংরক্ষণ করতে পারেন - অ্যারের ডিক্লেয়ারেশনটি int[]f(int[]b)ভাল হওয়ার পরে আপনার স্পেসগুলির প্রয়োজন হবে না এবং এটি পরীক্ষা করে কিছুটা ছোট করার i<1পরিবর্তে আপনি ব্যবহার করতে পারেন i==0। স্ট্রিং সংস্করণের জন্য, আপনি ল্যাম্বডায় একটি একক-তর্কের চারপাশে বন্ধনীগুলিও ফেলে দিতে (d)=>int.Parse(d)পারেন (উদাহরণস্বরূপ এটি হতে পারে d=>int.Parse(d)I আমি কেবল আপনার
অরেনিয়ালে

@ ভিজুয়ালমেলন - ধন্যবাদ! আমি বুঝতে পেরেছিলাম যে কোনও ভুল হিসাবের ফলে মোটটি আরও বড় হবে। ;)
বিবি

3

সিজেম, 15 বাইট

q~{_2$<{;}&}*]p

সিজেএম ইন্টারপ্রেটারে এটি অনলাইনে চেষ্টা করুন ।

কিভাবে এটা কাজ করে

q~               Read an evaluate all input.
  {        }*    Reduce; push the first element; or each remaining element:
   _2$           Copy the topmost and second topmost element from the stack.
      <          Check if the topmost is smaller than the second topmost.
       {;}&      If it is, remove it from the stack.
             ]   Wrap the stack i an array.
              p  Print.


2

সি: 73 বাইট

int i,j;i=j=INT_MIN;while(scanf("%d",&j)!=EOF)if(j>=i)printf("%d",j),i=j;

অথবা

সি: 49 বাইট

(যদি কোডগল্ফ প্রতিযোগিতার জন্য শুল্ক শিরোনাম অনুমোদিত হয়)

I z,y;z=y=INT_MIN;w(s(D,&y)!=E)i(y>z)p(D,y),z=y;}

এখনও সিজেমকে পরাজিত করতে পারে না, তবে কমপক্ষে এটি অন্য কয়েকটি ভাষাকে বীট করতে দেয়।


4
দুঃখিত, কাস্টম শিরোনাম অনুমোদিত নয়; এটি একটি ভিন্ন ভাষা হিসাবে গণনা করা হবে।
lirtosiast

4
আপনার কাস্টম শিরোলেখগুলির সাথে প্রাথমিক সমস্যাটি হ'ল এই প্রতিযোগিতা শুরু হওয়ার পরে আপনি এগুলি প্রকাশ করেছিলেন।
ডেনিস

অবশ্যই আমি বুঝতে পেরেছি, তবে তারপরে আমি এটি ভবিষ্যতের প্রতিযোগিতায়ও ব্যবহার করতে পারি না?
গেম ডেভেলপার

@ ডারিওইউ আপনি পারবেন তবে আপনার বাইট গণনার দিকে আমদানি বিবৃতি অন্তর্ভুক্ত করা দরকার।
সুপারজেডি ২৪

অথবা একে একে নতুন ভাষা বলুন।
ক্যালকুলেটরলাইন

2

বারলেস্কু, 13 বাইট

11-বাইট সমাধান যা পরীক্ষার কেসগুলিতে পাস করে:

-.2CO:so)[~

এখানে অনলাইনে চেষ্টা করুন

ব্যাখ্যা:

-. -- prepend head of list to list
2CO -- n-grams (sliding window) of size 2
:so -- filter sorted lists
)[~ -- map last

যাইহোক, এই সংস্করণটি কেবল এই সত্যটি ব্যবহার করে কাজ করে যে কোনও দুটি ছোট সংখ্যা দুটি সংখ্যার মধ্যে নেই। অন্যথায় নীচের সংস্করণটি ব্যবহার করুন (যা 13 বি):

পুরানো সংস্করণ:

J-]{cm-1.>}LO

এখানে অনলাইনে চেষ্টা করুন। ব্যাখ্যা:

J -- duplicate
-] -- head
{
  cm -- compare (returning -1,0 or 1)
  -1.> -- greater than -1
}LO -- Loop

আপনি যদি সমান সংখ্যাও বাদ দেন তবে আপনি কেবল .>ব্যবহারের পরিবর্তে যেতে পারেন cm। এছাড়াও, তালিকাগুলিতে যদি ইতিবাচক সংখ্যা থাকে তবে আপনি দুটি 0বা এর -1পরিবর্তে ব্যবহার করতে পারেন J-]


হ্যাঁ, তবে তবে আমি এটিকে হাইপারলিংক করতে পারি না :)।
ম্রোমান

স্থির করেছি। আমি কেবল "এখানে এখানে চেষ্টা করুন" লাইন যুক্ত করব add
mroman


2

রুবি, 41 37 টি অক্ষর

->a{m=a[0];a.map{|n|m>n ?p: m=n}-[p]}

নমুনা রান:

2.1.5 :001 > [
2.1.5 :002 >     [1, 2, 5, 4, 3, 7],
2.1.5 :003 >     [10, -1, 12],
2.1.5 :004 >     [-7, -8, -5, 0, -1, 1],
2.1.5 :005 >     [9, 8, 7, 6, 5],
2.1.5 :006 >     [10, 13, 17, 21],
2.1.5 :007 >     [10, 10, 10, 9, 10],
2.1.5 :008 > ].each{ |test| p ->a{m=a[0];a.map{|n|m>n ?p: m=n}-[p]}[test] }
[1, 2, 5, 7]
[10, 12]
[-7, -5, 0, 1]
[9]
[10, 13, 17, 21]
[10, 10, 10, 10]

1
-[p]এর চেয়ে সংক্ষিপ্ত.compact
চার্লস

উফ। অবশ্যই. ধন্যবাদ. (আমার কাছে লক্ষ্য করুন: রুবিতে গল্ফ করার জন্য [লিংক কোডগল্ফ.স্ট্যাকেক্সেঞ্জার / প্রশ্নস /
//২

2

NARS2000 এপিএল, 13 বাইট

NARS2000 উইন্ডোজের জন্য একটি নিখরচায় এপিএল দোভাষী; এতে অপারেটরের সাথে অ্যাক্সেস করা মাল্টিসেট বৈশিষ্ট্য রয়েছে

(+⍦∩⌈\)

এটি একটি মোনাডিক কাঁটাচামচ যা ⍦∩ইনপুট ( +) * এর মাল্টিসেট ছেদ ( ) ) এবং সর্বাধিক ((চলমান সর্বাধিক ⌈\) তালিকার তালিকা নেয় ।

যেহেতু ওয়ান বাইট APL লিগ্যাসি এনকোডিংগুলিতে কোনও স্ট্যান্ডার্ড এপিএল অক্ষর নয়, তাই আমাদের অবশ্যই ইউটিএফ -8 ব্যবহার করতে হবে, ⍦∩⌈প্রতিটি অক্ষরকে তিনটি বাইট তৈরি করতে হবে। আমি দুটি বাইট সংরক্ষণ করার +পরিবর্তে বেছে নিয়েছি

NARS2000 কাঁটাচামচ সমর্থন করে, যা বন্ধনীবিহীন ট্রেনগুলিতে তৈরি করা যেতে পারে, তবে ডায়ালগের বিপরীতে এটি বন্ধনীতে ফাংশনটি মোড়ানো ব্যতীত কোনও ক্রিয়াকে অ্যাসাইনমেন্টের অনুমতি দেয় না।

* +প্রযুক্তিগতভাবে জটিল কনজুগেট, তবে ইনপুটটি আসল।



এনএআরএস 2000 লিগ্যাসি এপিএল এনকোডিংগুলি ব্যবহার করতে পারে না - এবং নিয়ম করার আগেও যে এনকোডিংগুলি অবশ্যই দোভাষীদের দ্বারা ব্যবহৃত হওয়া উচিত, এটি 7 বাইট হতে পারে না কারণ পিএসআই কোনও লিগ্যাসি এপিএল এনকোডিংয়ের অংশ নয়।
lirtosiast

2

> <> -ভি পতাকা সহ, 36 31 + 2 = 33 বাইট

:&\o " "&n:~& <
~ >l?!;:&:&(?!^

-V দিয়ে স্ট্যাকের উপরে তালিকাটি ইনপুট করুন যাতে তালিকার প্রথম উপাদানটি স্ট্যাকের শীর্ষে থাকে। এটি পিছনে স্থান সহ ড্রপসোর্ট তালিকা মুদ্রণ করবে।

পরীক্ষা রান:

$ for input in "1 2 5 4 3 7" "10 -1 12" "-7 -8 -5 0 -1 1" "9 8 7 6 5" "10 13 17 21" "10 10 10 9 10"; do echo $input '-> ' $(python fish.py dropsort.fsh -v $(echo $input | tac -s ' ')); done

1 2 5 4 3 7 ->  1 2 5 7

10 -1 12 ->  10 12

-7 -8 -5 0 -1 1 ->  -7 -5 0 1

9 8 7 6 5 ->  9

10 13 17 21 ->  10 13 17 21

10 10 10 9 10 ->  10 10 10 10

সম্পাদনা করুন: ফঙ্গয়েডকে ধন্যবাদ 5 টি বাইট


আপনি লাইন 1 এর হিসাবে :&\o" "&n:~& <এবং 2 হিসাবে লাইনটি রিফ্যাক্টরিং করে 5 বাইট সংরক্ষণ করতে পারেন~ >l?!;:&:&(?!^
ফঙ্গয়েড

@ ফংয়েড ধন্যবাদ, আপডেট!
অ্যারন

2

পাইথন, 102 99 94 + 5 6 নন-ফাইল-ফাইনাল নিউলাইনস = 107 105 100 বাইট

(আমি ইনডেন্টেশনের জন্য ট্যাব ব্যবহার করেছি)

def d(l):
    j=b=0;m=l[j];r=[]
    for i in l:
        (m,b)=[(m,0),(i,1)][i>=m]
        if b>0:r+=[i]
        j+=1
    l[:]=r

সেখানকার সেরাটি নয়, তবে কোড গল্ফে এটি আমার প্রথম শট। অপসারণ-সম্পর্কিত বাগগুলিতে না চালিয়ে তালিকার ইনলাইনটি বাছাই করার কোনও উপায় বের করতে পারেনি, তাই আমি আদেশকৃত উপাদানগুলিকে একটি অস্থায়ী তালিকায় সরিয়েছি।

সম্পাদনা: list.append () এটি কুরুচিপূর্ণভাবে করার চেয়ে কম

r + = [i] তালিকাটি চেয়ে ছোট ছিল app ধন্যবাদ njzk2 !


r + = [i] r.append
njzk2

আমি আগে এটি করার চেষ্টা করেছি, তবে একটি ত্রুটি পেয়েছি কারণ আমি বুঝতে পারি নি যে বন্ধনী দিয়ে আপনাকে এটি করতে হবে। ধন্যবাদ!
জেমস মার্ফি

2

স্কেল: 232 126 120 বাইট

def f(x:Int*)=(Seq[Int]()/:x)((r,y)=>r.headOption.filter(y>=).map(_=>y+:r).getOrElse(if(r.isEmpty) y+:r else r)).reverse

2
List[Int]প্রয়োজনীয়তার সাথে মেলে না এমন জন্য একটি "এক্সটেনশন পদ্ধতি" যুক্ত করা আপনার এসটিডিআইএন বা আর্গুমেন্ট হিসাবে ইনপুট পাওয়া উচিত। এছাড়াও, এটি আপনার উত্তরকে স্ফীত করে দেয় ... কেবল কেন হয় না def dropSort(s:Seq[Int]):Seq[Int]?
জ্যাকব

আমি ভেবেছিলাম এটি অভিনব হবে, তবে আপনি ঠিক বলেছেন, অনেক বেশি বাইট ...
মার্টিন সেলার

1
ভাঁজ ব্যবহার করে খুব সুন্দর উন্নতি! আপনি এখনও কিছু স্পেস শেভ করতে পারেন এবং আপনি _ <= y এর চেয়ে y> = ব্যবহার করতে পারেন যা যথাযথ আমদানি ছাড়াই একটি সংকলন সতর্কতা দেয়, তবে স্কেলটি কতটা ভয়ঙ্কর (ওহ, এবং অন্য একটি চরিত্রকে শেভ করে) প্রদর্শন করে।
জ্যাকব

টিপসের জন্য থেক্স!
মার্টিন সেলার

2

স্কালা, 54 বাইট

def f(x:Int*)=(x:\Seq[Int]())((y,r)=>y+:r.filter(y<=))

Ungolfed:

def dropSort(xs: Seq[Int]): Seq[Int] =
  xs.foldRight(Seq.empty[Int]) { (x, result) =>
    x +: result.filter(r => r >= x)
  }

2

টিনি লিস্প, 107 বাইট

( এই ভাষাটি শুধুমাত্র প্রকাশিত হয় এই প্রশ্নের পর, তাই এই উত্তর প্রতিযোগিতার রান আউট। এমন নয় যে এটা জয় কোনো সুযোগ ছিল না। ভাষা পরে আরও প্রসূত বেশী আমি এখানে ব্যবহৃত চেয়ে বেশি buildins আছে, কিন্তু আমি সঙ্গে আছি সংস্করণ আমি মূলত ২০১৫ সালে বাস্তবায়িত করেছি This এই উত্তরটি এখনও নতুন সরকারী দোভাষীর সাথে কাজ করে , যদিও এটি কিছু সতর্কতা দেয় কারণ আমি একটি পরামিতি সংজ্ঞায়িত করি যা নতুন বিল্টিনকে ছায়াযুক্ত করে (যুক্ত করার জন্য)। টিআইও লিঙ্কের জন্য ডিএলসকে ধন্যবাদ। )aa

(d r(q((m a)(i a(i(l(h a)m)(r m(t a))(c(h a)(r(h a)(t a))))()))))(d ds(q((b)(i b(c(h b)(r(h b)(t b)))()))))

এটি একটি ফাংশন ds(এবং এর পুনরাবৃত্তকারী সহায়ক ফাংশন r) সংজ্ঞায়িত করে যা তার যুক্তিটি সাজায় যা অবশ্যই পূর্ণসংখ্যার তালিকা হতে পারে be

r একটি পুচ্ছ-পুনরাবৃত্তির কাজ নয়, সুতরাং খুব দীর্ঘ তালিকার জন্য এটি স্ট্যাকের ওভারফ্লোতে চলে যেতে পারে।

Ungolfed:

(d r
   (q((m a)
      (i a
         (i (l (h a) m)
            (r m (t a))
            (c (h a)
               (r (h a) (t a))
             )
          )
         ()
       )
   ) )
 )
(d ds
  (q(
      (b)
      (i b
        (c (h b)
           (r (h b) (t b))
         )
        ()
       )
   ) )
 )

এটি কীভাবে ব্যবহার করতে হয় তার কয়েকটি উদাহরণ এখানে দেওয়া হয়েছে (প্রশ্ন থেকে পরীক্ষার ক্ষেত্রে):

(d list (q (args args)))
(d -
   (q( (n)
       (s 0 n)
    ) )
 ) 

(ds (list 1 2 5 4 3 7))
(ds (list 10 (- 1) 12))
(ds (list (- 7) (- 8) (- 5) 0 (- 1) 1))
(ds (list 9 8 7 6 5))
(ds (list 10 13 17 21))
(ds (list 10 10 10 9 10))

(হ্যাঁ, -7কোনও পূর্ণসংখ্যার আক্ষরিক নয়, সুতরাং তাদের উপস্থাপনের জন্য আমাদের কোনও ফাংশন সংজ্ঞায়িত করতে হবে)) আউটপুট:

list
-
(1 2 5 7)
(10 12)
(-7 -5 0 1)
(9)
(10 13 17 21)
(10 10 10 10)

"-7 কোনও পূর্ণসংখ্যার আক্ষরিক নয়" আমি এখনও হাসছি, +1
বিড়াল

আপনি কি বিল্টইনগুলির জন্য সত্যই প্রতিটি চরিত্র ব্যবহার করেছেন? (বাদে r, আমি অনুমান করি ..)
ক্যালকুলেটরফ্লাইন

@ ক্যাটস আরেফ্লুফি দুঃখিত, আপনার মন্তব্য বুঝতে আমার সমস্যা হয়েছে। টিনি লিস্পে 7 বিল্ট-ইন ফাংশন এবং তিনটি বিল্ড-ইন ম্যাক্রো রয়েছে, তাদের সবার একক অক্ষর-নাম রয়েছে (আমার মনে হয় গল্ফিংয়ের জন্য ভাষাটি সহজতর করে তুলতে), বন্ধনীগুলি এবং স্পেসের সাথে বিশেষ বাক্য গঠন রয়েছে। মনে রাখবেন যে টিনি লিস্প আমার আবিষ্কার নয়।
পাওলো ইবারম্যান

আহ, আমি মনে করি এটি এখনই পেয়েছি ... আপনি পরিবর্তে একটি একক-চরিত্রের নাম ব্যবহারের প্রস্তাব করছেন ds? আমার ধারণা, এটি করা যেতে পারে, অন্য একটি বাইট সংরক্ষণ করতে পারে। আমার ধারণা আমি dsড্রপ বাছাইয়ের জন্য সংক্ষিপ্তকরণ হিসাবে নির্বাচন করেছি ।
পাওলো ইবারম্যান

আরে, আমি ঠিক এটি লক্ষ্য করেছি। সুন্দর কাজ! মেটা sensকমত্য অনুসারে, নামবিহীন ল্যাম্বডা ফাংশনগুলি জমা দেওয়ার একটি বৈধ ফর্ম, তাই আপনি পরিত্রাণ পেয়ে (d dsএবং )শেষে ম্যাচটি করে 6 বাইট সংরক্ষণ করতে পারেন । আপনি যদি আমার বর্তমান দোভাষী ব্যবহার করতে চান তবে অন্যান্য গল্ফগুলি সম্ভব, তবে আপনি যদি মূল প্রশ্নটিতে অনুমান করতে চান তবে তাও ঠিক। :)
ডিএলস্ক

2

জেলি, 5 বাইট

=»\Tị

নোট করুন যে চ্যালেঞ্জটি জেলি তৈরির পূর্বে রয়েছে।

এটি অনলাইন চেষ্টা করুন!

কিভাবে এটা কাজ করে

=»\Tị  Main link. Argument: A (list)

 »\    Yield the cumulative maxima of A.
=      Perform element-by-element comparison.
       Yields 1 iff A[n] = max(A[1], ..., A[n]).
   T   Get all indices of truthy elements.
    ị  Retrieve the items of A at those indices.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.