সংখ্যাগুলির তালিকা বাছাই করুন [বন্ধ]


25

কোড-বোলিং সম্পর্কে:

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

চ্যালেঞ্জ:

একটি প্রোগ্রাম তৈরি করুন যা ক্রম সংখ্যায় একটি তালিকা সাজান list

উদাহরণ:

ইনপুট: 1, 4, 7, 2, 5

আউটপুট: 1, 2, 4, 5, 7

কোড: স্পষ্টতই এটি একটি ভাল উত্তর হতে পারে না, যেহেতু সেখানে অনেক ডাব্লুটিএফ নেই

function doSort(array $input) {
    sort($input);
    return $input;
}

নিয়মাবলী:

কোন বাস্তব বিধি আছে। যতক্ষণ না প্রোগ্রামটি কাজ করে ততক্ষণ!

মনে রাখবেন: এটি কোড-বোলিং, গল্ফ নয়। উদ্দেশ্যটি হ'ল সবচেয়ে খারাপ, সবচেয়ে জারজবদ্ধ কোড তৈরি করা যা আপনি পারেন! কোডটির জন্য বোনাস পয়েন্টগুলি দেখতে ভাল লাগছে তবে এটি আসলে প্রতারণামূলকভাবে খারাপ ...


আমি আশা করি আমি একবারও ক্যালেন্ডার ক্যু কোডটি লিখেছিলাম ...
পিটার টেলর

14
sort(sort(sort(sort(sort(sort(myarray))))))নিখুঁত বাছাইয়ের গ্যারান্টি!
মতিন উলহাক

উত্তর:


21

ব্যবহারকারীর ইনপুট অনুসারে বাছাই করা হচ্ছে। এর চেয়ে খারাপ আর কী হতে পারে?

function sort(array) {
    newArray = new Array
    notSorted = true;
    while (notSorted) {
        sortfail = false;
        i = -1
        for (;;) {
            if ((++i + 1) == array.length) break;
            if (confirm("is " + array[i] + " less than " + array[i + 1])) {
                newArray[i] = array[i]
                newArray[i + 1] = array[i + 1]
            } else {
                newArray[i] = array[i + 1]
                newArray[i + 1] = array[i]
                array[i] = newArray[i]
                array[i + 1] = newArray[i + 1]
                sortfail = true
            }
        }
        array = newArray;
        if (!sortfail) notSorted = false
    }
    return array
}

console.log(sort([2,1,3]))

সরাসরি উদাহরণ দেখুন


আপনি এর চেয়ে আরও ভাল করতে পারবেন ... :-D
ircmaxell

আরও ভাল এবং এখনও সঠিকভাবে সাজান? এটা একটা ব্যথা এটি অ্যালগোরিদমভাবে ভয়ঙ্কর। আমাকে কোডটি এত বেশি ভয়ঙ্কর করার দরকার নেই।
রায়নোস

5
ব্যবহারকারীর ইনপুট প্রায়শই ভুল। ব্যবহারকারীরা মাতাল হতে পারে বা উচ্চতর হতে পারে এবং এমন বিরোধীও থাকতে পারে যারা আপনাকে উদ্দেশ্য অনুযায়ী ভুল আদেশ দেয়। এলোমেলোভাবে পরিবর্তিত হওয়া উচিত এবং আপনার একই জুটির জন্য মোটামুটি উত্তর না পাওয়া পর্যন্ত আবার জিজ্ঞাসা করা উচিত।
পল

@ পোল ব্যবহারকারীর ইনপুটটিতে প্রতিরক্ষার অভাব এই কোড বাটিটির অন্যতম প্রধান সুবিধা। আমি অনুমান করি যে ব্যবহারকারীর ইনপুটটিতে সম্পূর্ণরূপে অকেজো বৈধতা থাকা কোনওটি না হলেই ভাল।
রায়নস

এর ম্যানুয়াল উপাদান সম্পর্কে নিশ্চিত নয়।
স্টিভ রবিন্স

16
class Array
  def sort
    self.permutation.min
  end
end

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


2
এটি কোড বোলিং যদি আপনি এটি আগে না দেখে থাকেন - আপনাকে অবশ্যই দীর্ঘতম কোডটি লিখতে হবে ! ;)
nyuszika7h

3
আমি 'সুদর্শন তবে
ছদ্মবেশী

3
আমি বলব যে এটি কোনও এসকিউএল প্রোগ্রামারকে পুরোপুরি সূক্ষ্ম দেখাচ্ছে। এখন সংকলকটি বুঝতে হবে যে আপনি যা চেয়েছিলেন তা কেবল একটি সাধারণ সাজান simple
aaaaaaaaaaaa


12

পার্ল বুদ্বুদ সাজান

push(@m,'0');$a=<>;push(@m,$a);
$a=pop@m;push(@c,$a);
push(@m,'p');$a=pop@m;$b=pop@m;$hash{$a}=$b;
$a=pop@c;push(@c,$a);for(1..$a){$a=<>;push(@m,$a);
push(@m,'p');$a=pop@m;push(@m,$hash{$a});
$a=pop@m;$b=pop@m;$hash{$a}=$b;
push(@m,'p');$a=pop@m;push(@m,$hash{$a});
push(@m,'1');$a=pop@m;$b=pop@m;push(@m,$b+$a);
push(@m,'p');$a=pop@m;$b=pop@m;$hash{$a}=$b;
}$a=pop@c;push(@m,$a);
push(@m,'2');$a=pop@m;$b=pop@m;for(1..$a){push(@m,$b);};
$a=pop@m;$b=pop@m;push(@m,$b*$a);
$a=pop@m;push(@c,$a);
$a=pop@c;push(@c,$a);for(1..$a){push(@m,'1');$a=pop@m;push(@m,-$a);
push(@m,'p');$a=pop@m;$b=pop@m;$hash{$a}=$b;
$a=pop@c;push(@c,$a);for(1..$a){push(@m,'p');$a=pop@m;push(@m,$hash{$a});
push(@m,'1');$a=pop@m;$b=pop@m;push(@m,$b+$a);
push(@m,'p');$a=pop@m;$b=pop@m;$hash{$a}=$b;
push(@m,'p');$a=pop@m;push(@m,$hash{$a});
$a=pop@m;push(@m,$hash{$a});
push(@m,'p');$a=pop@m;push(@m,$hash{$a});
push(@m,'1');$a=pop@m;push(@m,-$a);
$a=pop@m;$b=pop@m;push(@m,$b+$a);
$a=pop@m;push(@m,$hash{$a});
$a=pop@m;$b=pop@m;if($b < $a){push(@c,1)}else{push(@c,0)};
$a=pop@c;push(@c,$a);for(1..$a){push(@m,'p');$a=pop@m;push(@m,$hash{$a});
$a=pop@m;push(@m,$hash{$a});
push(@m,'t');$a=pop@m;$b=pop@m;$hash{$a}=$b;
push(@m,'p');$a=pop@m;push(@m,$hash{$a});
push(@m,'1');$a=pop@m;push(@m,-$a);
$a=pop@m;$b=pop@m;push(@m,$b+$a);
$a=pop@m;push(@m,$hash{$a});
push(@m,'p');$a=pop@m;push(@m,$hash{$a});
$a=pop@m;$b=pop@m;$hash{$a}=$b;
push(@m,'t');$a=pop@m;push(@m,$hash{$a});
push(@m,'p');$a=pop@m;push(@m,$hash{$a});
push(@m,'1');$a=pop@m;push(@m,-$a);
$a=pop@m;$b=pop@m;push(@m,$b+$a);
$a=pop@m;$b=pop@m;$hash{$a}=$b;
}$a=pop@c;push(@m,$a);
$a=pop@m;
}}push(@m,'0');push(@m,'p');$a=pop@m;$b=pop@m;$hash{$a}=$b;
$a=pop@c;push(@c,$a);for(1..$a){push(@m,'p');$a=pop@m;push(@m,$hash{$a});
$a=pop@m;push(@m,$hash{$a});
$a=pop@m;print$a;
push(@m,'p');$a=pop@m;push(@m,$hash{$a});
push(@m,'1');$a=pop@m;$b=pop@m;push(@m,$b+$a);
push(@m,'p');$a=pop@m;$b=pop@m;$hash{$a}=$b;
}

আমি "প্রতি একক লাইন একই পংক্তির মতো দেখায়" লাইন শব্দের মতো দেখতে। ইনপুট প্রথম লাইন (STDIN- এ) প্রোগ্রামটি জানায় যে সেখানে কতগুলি সংখ্যা রয়েছে, যখন পরবর্তী এন সংখ্যার লাইনে একটি নম্বর থাকে যা বাছাই করা দরকার।


3
স্ট্যাক-ভিত্তিক পার্ল :)
ড্যানিয়েল গ্রেটজার

আমি এটি কিভাবে কাজ করে তার একটি ব্যাখ্যা পেতে চাই? আমার কিছুটা অনুমান আছে
জাভিয়ার কম্বেল

12

জাভাতে জেনেরিক, মাল্টিথ্রেডেড বোগোসর্ট

46 নম্বর সারণি 4 নম্বর

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

ElementInserter

এটি থ্রেডের জন্য আমরা ক্লাস করব। এই শ্রেণিটি একটি উপাদান ধারণ করে এবং এটিতে এটি sertোকানোর চেষ্টা করে sortedArray:

class ElementInserter<E extends Comparable<? super E>> implements Runnable {
    E element;
    SortedArray<? super E> target;

    ElementInserter(E e, SortedArray<? super E> a) {
        element = e;
        target = a;
    }

    @Override
    public void run() {
        target.insert(element);
    }
}

sortedArray

একটি সরাসরি -োকানো পদ্ধতির খেলাধুলা। শেষ উপাদানটি hasোকানো হলে অ্যারেটি বাছাই করা হয়েছে কিনা তা পরীক্ষা করে।

class SortedArray<E extends Comparable<? super E>> {
    boolean sorted; int i = 0; E[] a;

    SortedArray(E[] e) { a = e; }

    synchronized public void insert(E e) {
        while (!sorted) {
            a[i++] = e;

            if (i == a.length) {
                sorted = true;

                for (int j = 1; j < i; ++j)
                    if (a[j-1].compareTo(a[j]) > 0) {
                        sorted = false;
                        i = 0;
                        notifyAll();
                    }

                if (sorted) {
                    for (int j = 0; j < a.length; ++j) System.out.print(a[j]+" ");
                    System.out.println();
                    notifyAll(); // allow all threads to terminate
                }

            } else
                try { wait(); }
                catch(InterruptedException x) { }
        }
    }
}

প্রধান পদ্ধতি

কমান্ড লাইন আর্গুমেন্টগুলি পূর্ণসংখ্যা হিসাবে পার্স করে, প্রতিটি পূর্ণসংখ্যার জন্য একটি নতুন অ্যারে এবং একটি নতুন থ্রেড তৈরি করে:

    public static void main (String[] args) {
        Integer[] i = new Integer[args.length];
        SortedArray<Integer> c = new SortedArray<Integer>(i);

        for (String s : args)
            new Thread(new ElementInserter<Integer>(Integer.parseInt(s), c)).start();
    }

টেস্ট রান

কার্যকর করার সময় উপাদানগুলির মূল ক্রম এবং আপনার সময়সূচী বাস্তবায়নের উপর নির্ভর করবে। এটি ডুয়াল-কোর ২.৯ গিগাহার্টজ ইন্টেল আই Mac ম্যাকবুক প্রোতে রয়েছে:

$ time java Main 3 1 2 4
1 2 3 4 

real    0m46.307s
user    0m14.629s
sys     0m26.207s

1
হাহা +1 আমি এ থেকে একটি লাথি পেয়েছি
আর্শাজি

10

জাভাস্ক্রিপ্ট (অ্যানিমেশন সহ!)। 8172 চর। 6 সংখ্যার জন্য কয়েক ঘন্টা।

আমরা লটারি পছন্দ করি, তাই না? Dan04 দ্বারা বোগোসর্টের মতো, তবে পদার্থবিজ্ঞান এবং অ্যানিমেশন ব্যবহার করে ...

(function(){var e={},v=!1,G=/abc/.test(function(){abc})?/\b_super\b/:/.*/,H=function(c,a,b){return function(){var l=this._super,s;this._super=b[c];try{s=a.apply(this,arguments)}finally{this._super=l}return s}};e.Class=function(){};e.Class.extend=function a(b){var l=this.prototype;v=!0;var s=new this;v=!1;for(var c in b)s[c]="function"===typeof b[c]&&"function"===typeof l[c]&&G.test(b[c])?H(c,b[c],l):b[c];b=function(){!v&&this.init&&this.init.apply(this,arguments)};b.prototype=s;b.prototype.constructor=
b;b.extend=a;return b};e.Events={};var k=e.Events,z,A,w=Object.prototype.toString,I=document.createEvent,r=Date.now;k.EventListener=e.Class.extend({handleEvent:function(){},init:function(a){this.handleEvent=a}},"EventListener");z=k.EventListener;k.Event=e.Class.extend({timeStamp:0,type:"",target:null,cancelable:!1,defaultPrevented:!1,preventDefault:function(){this.cancelable&&(this.defaultPrevented=!0)},initEvent:function(a,b){this.type=a;this.target=b;this.timeStamp=r()}},"Event");A=k.Event;var t=
Object.create(null);e.createEventType=function(a,b){t[a]=A.extend(b,a);return t[a]};e.createEvent=function(a){return null!=t[a]?(a=new t[a],a.timeStamp=r(),a):I(a)};k.EventTarget=e.Class.extend({_listeners:{},addEventListener:function(a,b,l){var c=this._listeners[a];if(!(null!=c&&function(){for(var a="object"===typeof l?l:null,d,e=0,f=c.length;e<f;e++)if(d=this.listeners[e],d.listener.handleEvent===b&&d.scope===a)return!0;return!1}())){var d={listener:"object"===typeof b&&b.handleEvent?b:new z(b),
scope:"object"===typeof l?l:null};"[object Array]"===w.call(c)?c.push(d):this._listeners[a]=[d]}},removeEventListener:function(a,b,c){a=this._listeners[a];if("[object Array]"===w.call(a)){c="object"===typeof c?c:null;for(var d=0,e=a.length;d<e;d++)if(a[d].listener.handleEvent===b&&a[d].scope===c){a.splice(d,1);break}}},dispatchEvent:function(a){a.target||(a.target=this);var b=0,c=this._listeners[a.type],d=c.length,e;if("[object Array]"===w.call(c))for(;b<d;b++)e=c[b].listener.handleEvent,e.call(c[b].scope,
a);return a.defaultPrevented}},"EventTarget");for(var B=0,k=["ms","moz","webkit","o"],h=0;h<k.length&&!window.requestAnimationFrame;++h)window.requestAnimationFrame=window[k[h]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[k[h]+"CancelAnimationFrame"]||window[k[h]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(a){var b=r(),c=Math.max(0,16-(b-B)),d=window.setTimeout(function(){a(b+c)},c);B=b+c;return d});window.cancelAnimationFrame||
(window.cancelAnimationFrame=function(a){clearTimeout(a)});var x=window.clearInterval,C=window.setInterval,D=e.Class.extend({fn:function(){},args:[],thisArg:window,sleepTime:0,init:function(a,b,c){this.method=a||function(){};this.thisArg=b||window;this.args=c||[]}},"FunctionToCall"),r=Date.now,u=Object.create(null);u.animation=0;u.steady=1;u.as_fast_as_possible=2;e.Timer=e.Events.EventTarget.extend({ANIMATION:0,STEADY:1,AS_FAST_AS_POSSIBLE:2,TimerEvent:e.createEventType("TimerEvent",{FPS:0,targetFPS:0,
delta:0,initEvent:function(a,b){if(null==b.getFPS||null==b.targetFPS||null==b.dt)throw notATimerException;this.FPS=b.getFPS();this.targetFPS=b.targetFPS;this.delta=b.dt;this._super(a,b)}}),_clearIntervalFlag:!1,_recursionCounter:0,_tickHandlersFromMethod:Object.create(null),running:!1,paused:!1,mode:0,autoStartStop:!0,setAutoStartStop:function(a){this.autoStartStop=a},prevTime:0,dt:0,maxDelta:0.05,setMaxDelta:function(a){this.maxDelta=a},sysTimerId:-1,targetFPS:50,setFPS:function(a){this.targetFPS=
a;if(this.running&&this.mode===this.STEADY){x(this.sysTimerId);var b=this;this.sysTimerId=C(function(){b.tick()},1E3/a)}},getFPS:function(){return 1/this.dt},queue:[],addToQueue:function(a,b,c){var d=new D(a,b,c),e;this.queue.push(d);var f=function J(f){0<d.sleepTime?d.sleepTime-=f.delta:(e=a.apply(b,[f].concat(c)),"number"===typeof e&&0<e?d.sleepTime=e:!0!==e&&(this.removeEventListener("tick",J,this),this.queue.splice(this.queue.indexOf(d),1)))};null==this._tickHandlersFromMethod[a]?this._tickHandlersFromMethod[a]=
[f]:this._tickHandlersFromMethod[a].push(f);this.addEventListener("tick",f,this);this.autoStartStop&&!this.running&&this.startLoop()},removeFromQueue:function(a){var b=this._tickHandlersFromMethod[a];a=this.queue.indexOf(a);if(-1!==a){for(var c=0,d=b.length;c<d;c++)this.removeEventListener("tick",b[c],this);return this.queue.splice(a,1)}},getQueue:function(){return this.queue.slice(0)},pause:function(){this._clearIntervalFlag=this.paused=!0;this.dt=0},resume:function(){this.paused=!1;this.startLoop()},
startLoop:function(){this.prevTime=r();this.running=!0;if(this.mode===this.steady){var a=this;this.sysTimerId=C(function(){a.tick()},1E3/this.targetFPS)}else this.tick()},tick:function(){if(this._clearIntervalFlag&&-1!==this.sysTimer)x(this.sysTimerId),this.sysTimerId=-1,this._clearIntervalFlag=!1;else if(!this.paused){var a=r();this.dt=(a-this.prevTime)/1E3;this.dt>this.maxDelta&&(this.dt=this.maxDelta);if(0===this.dt&&4>this._recursionCounter)this._recursionCounter++,this.tick();else{0<this._recursionCounter&&
(this._recursionCounter=0);var b=e.createEvent("TimerEvent");b.initEvent("tick",this);this.dispatchEvent(b);this.prevTime=a;a=!(this.autoStartStop&&0>=this.queue.length);if(this.mode===this.AS_FAST_AS_POSSIBLE&&a){var c=this;setTimeout(function(){c.tick()},0)}if(this.mode===this.ANIMATION&&a){var d=this;requestAnimationFrame(function(){d.tick()})}a||(this.running=!1,this.mode===this.STEADY&&-1!==this.sysTimerId&&(x(this.sysTimerId),this.sysTimerId=-1))}}},init:function(a){this.mode="number"===typeof a?
a:u[a];if(null==this.mode||0>this.mode||2<this.mode)this.mode=0}},"Timer");e.Timer.ANIMATION=0;e.Timer.STEADY=1;e.Timer.AS_FAST_AS_POSSIBLE=2;e.Timer.FunctionToCall=D;var j=[2,3,5,8,4,6],m=new (e.Class.extend({displace:0,velocity:0,drag:0.01,tickInterval:10,update:function(a){this.displace+=this.velocity*a.delta;this.velocity*=1-this.drag},init:function(){}})),q=j.slice(0),k=new e.Timer(0),h=document.createElement("div");h.style.width=23*j.length-28+"px";h.style.height="22px";h.style.overflowX="hidden";
h.style.overflowY="hidden";h.style.border="1px #555 solid";h.style.fontFamily='Consolas, "Courier New"';for(var c=[],f=0;f<j.length;f++)c[f]=document.createElement("div"),c[f].style.width="20px",c[f].style.height="20px",c[f].style.display="inline-block",c[f].style.position="relative",c[f].style.left=f+1===j.length?"-22px":"0px",c[f].style.top=f+1===j.length?"-22px":"0px",c[f].style.border="1px #AAA solid",c[f].style.textAlign="center",c[f].innerHTML=j[f],h.appendChild(c[f]);var g=0,d=1,n,p,E=0,F=
0,y=0;m.velocity=1E3*Math.random()+500;document.getElementsByTagName("body")[0].appendChild(h);k.addToQueue(function(a){if(5>m.velocity)if(0===g){for(a=0;a<c.length;a++)if((m.displace+22+22*a)%(22*j.length)-22<11*c.length&&(m.displace+22+22*a)%(22*j.length)>11*c.length){n=c[a];E=parseFloat(n.style.left);break}for(a=0;a<c.length;a++)if((m.displace+22+22*a)%(22*j.length)<11*c.length&&(m.displace+22+22*a)%(22*j.length)+22>11*c.length){p=c[a];F=parseFloat(p.style.left);break}y=p.offsetLeft-n.offsetLeft;
g=1}else if(1===g)n.style.backgroundColor="rgba(255,255,0,"+Math.round(1-d)+")",p.style.backgroundColor="rgba(255,255,0,"+Math.round(1-d)+")",d-=10*a.delta,0>d&&(g=2);else if(2==g)n.style.backgroundColor="rgba(255,255,0,"+Math.round(1-d)+")",p.style.backgroundColor="rgba(255,255,0,"+Math.round(1-d)+")",d+=10*a.delta,1<d&&(g=3,n.style.backgroundColor="rgba(255,255,255,0)",p.style.backgroundColor="rgba(255,255,255,0)",d=0);else if(3==g)n.style.left=E+d*y+"px",p.style.left=F-d*y+"px",d+=2*a.delta,1<
d&&(g=4);else if(4==g){if(d-=a.delta,0.5>d){a=c.indexOf(n);var b=c.indexOf(p),e;e=n.innerHTML;c[a].innerHTML=p.innerHTML;c[b].innerHTML=e;e=q[a];q.splice(a,1,q[b]);q.splice(b,1,e);b=-1/0;for(a=0;a<q.length;a++){if(q[a]<b){g=5;break}b=q[a]}g=5===g?5:6}}else if(5===g)d=1,m.velocity=1E3*Math.random()+500,g=0;else{if(6===g)return d=1,g=0,document.getElementsByTagName("body")[0].innerHTML+=q,!1}else{m.update(a);for(a=0;a<c.length;a++)b=(m.displace+22+22*a)%(22*j.length),a+1===j.length&&(b+=22*(j.length-
1)),c[a].style.left=b-22*a-22+"px"}return!0})})();​

যাইহোক, আমি গুগল ক্লোজার সংকলকটি কিছুটা ব্যবহার করেছি, জানি না ... তবে দেখতে খারাপ লাগে, তাই না?

এটি সেই লটারি চাকার একটির মতো এবং প্রতিটি সময় এটি থামিয়ে দেয় মাঝখানে সংখ্যায় ap আপনার এখানে একটি নাটক থাকতে পারে: http://jsfiddle.net/VkJUE/5/ (আমার অর্থ বোঝার জন্য)

এটি কিছুটা কাজ করে except সংখ্যার জন্য কয়েক ঘন্টা সময় নিতে পারে except যাইহোক, আমি এটি 3 সংখ্যার উপর পরীক্ষা করেছি এবং এটি দুর্দান্ত কাজ করে!


7

যদিও আমি এই জাভা কোডটির জন্য ক্রেডিট নিতে পারি না , স্মুথসোর্টটি পঠনযোগ্যতা এবং পারফরম্যান্সের মধ্যে ট্রেড অফের একটি ভাল উদাহরণ:

static final int LP[] = { 1, 1, 3, 5, 9, 15, 25, 41, 67, 109,
  177, 287, 465, 753, 1219, 1973, 3193, 5167, 8361, 13529, 21891,
  35421, 57313, 92735, 150049, 242785, 392835, 635621, 1028457,
  1664079, 2692537, 4356617, 7049155, 11405773, 18454929, 29860703,
  48315633, 78176337, 126491971, 204668309, 331160281, 535828591,
  866988873 // the next number is > 31 bits.
};

public static <C extends Comparable<? super C>> void sort(C[] m,
    int lo, int hi) {
  int head = lo; // the offset of the first element of the prefix into m

  int p = 1; // the bitmap of the current standard concatenation >> pshift
  int pshift = 1;

  while (head < hi) {
    if ((p & 3) == 3) {
      sift(m, pshift, head);
      p >>>= 2;
      pshift += 2;
    } else {
      // adding a new block of length 1
      if (LP[pshift - 1] >= hi - head) {
        // this block is its final size.
        trinkle(m, p, pshift, head, false);
      } else {
        // this block will get merged. Just make it trusty.
        sift(m, pshift, head);
      }

      if (pshift == 1) {
        // LP[1] is being used, so we add use LP[0]
        p <<= 1;
        pshift--;
      } else {
        // shift out to position 1, add LP[1]
        p <<= (pshift - 1);
        pshift = 1;
      }
    }
    p |= 1;
    head++;
  }

  trinkle(m, p, pshift, head, false);

  while (pshift != 1 || p != 1) {
    if (pshift <= 1) {
      // block of length 1. No fiddling needed
      int trail = Integer.numberOfTrailingZeros(p & ~1);
      p >>>= trail;
      pshift += trail;
    } else {
      p <<= 2;
      p ^= 7;
      pshift -= 2;

      trinkle(m, p >>> 1, pshift + 1, head - LP[pshift] - 1, true);
      trinkle(m, p, pshift, head - 1, true);
    }

    head--;
  }
}

private static <C extends Comparable<? super C>> void sift(C[] m, int pshift,
    int head) {   
  C val = m[head];

  while (pshift > 1) {
    int rt = head - 1;
    int lf = head - 1 - LP[pshift - 2];

    if (val.compareTo(m[lf]) >= 0 && val.compareTo(m[rt]) >= 0)
      break;
    if (m[lf].compareTo(m[rt]) >= 0) {
      m[head] = m[lf];
      head = lf;
      pshift -= 1;
    } else {
      m[head] = m[rt];
      head = rt;
      pshift -= 2;
    }
  }  

  m[head] = val;
}

private static <C extends Comparable<? super C>> void trinkle(C[] m, int p,
    int pshift, int head, boolean isTrusty) {

  C val = m[head];

  while (p != 1) {
    int stepson = head - LP[pshift];

    if (m[stepson].compareTo(val) <= 0)
      break; // current node is greater than head. Sift.

    if (!isTrusty && pshift > 1) {
      int rt = head - 1;
      int lf = head - 1 - LP[pshift - 2];
      if (m[rt].compareTo(m[stepson]) >= 0
          || m[lf].compareTo(m[stepson]) >= 0)
        break;
    }

    m[head] = m[stepson];

    head = stepson;
    int trail = Integer.numberOfTrailingZeros(p & ~1);
    p >>>= trail;
    pshift += trail;
    isTrusty = false;
  }

  if (!isTrusty) {
    m[head] = val;
    sift(m, pshift, head);
  }
}

/* insert some basic static void main here... 
   my Java's too rusty to do it from the top of my head 
*/

(দ্রষ্টব্য: প্রভাবের জন্য এবং এটি আরও ছোট করার জন্য কিছু মন্তব্য সরিয়ে নেওয়া হয়েছে; উপরের লিঙ্কযুক্ত উইকিপিডিয়া পৃষ্ঠা থেকে নেওয়া উত্স)


আপনি দয়া করে পোস্টটির জন্য আপনি যে ভাষাটি ব্যবহার করেছেন তা যুক্ত করতে পারেন?
নাথান ওসমান

"পাঠযোগ্যতা এবং পারফরম্যান্সের মধ্যে বাণিজ্য" - আমাকে এটি মনে রাখা দরকার।
FUZxxl

7

এফ # "আমি কার্যকরী প্রোগ্রামিং ঘৃণা":

let numbers = System.Console.ReadLine().Split(',')
let mutable check = 0
let mutable sorted = ""

while not (sorted.Split(',').Length = numbers.Length) do
    for i in [check..check + 1000] do
        for number in numbers do
            if number = i.ToString() then
                if sorted.Length > 0 then
                    sorted <- sorted + "," 
                sorted <- sorted + number
    check <- check + 1000

printfn "%s" sorted

7

রুবি মেটাসোর্ট

#I know Ruby has a built-in method to order an array,
#but I can't remember what it is.  Oh well, metaprogramming to the rescue!
#I'll just try all of the available methods, and see which one works.

#check whether an array is ordered
def is_in_order? arr
  arr.is_a?(Array) && (0...(arr.size-1)).all? {|i| arr[i]<arr[i+1]}
end

Array.instance_methods.each do |meth|
  begin
    possibly_ordered_array = ARGV.map(&:to_i).send(meth)
    #have to check both that the new array is ordered, and that it's still the same size,
    #so that methods that change the array's elements don't create false positives.
    if is_in_order?(possibly_ordered_array) && possibly_ordered_array.size == ARGV.size
      puts possibly_ordered_array.join(", ")
      exit 0 #success!
    end
  rescue
    #method needed an argument or something
  end
end

exit 1 #could not order the array

6

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

Identification Division.                                        
Program-ID. QwikSort is recursive.                              
Environment Division.                                           
Data Division.                                                  
Working-Storage Section.                                        
01 QwikSort-Working-Storage.                                    
 05 Swap-Space           Pic X(80) Value spaces.               
 05 Pivot         Binary Pic S9(8).                            
 05 I             Binary Pic S9(8).                            

Local-Storage Section.                                          
01 QwikSort-Local-Storage.                                      
 05 Lo            Binary Pic S9(8) Value 0.                    
 05 Hi            Binary Pic S9(8) Value 0.                    

Linkage Section.                                                

01 The-Table-Area.                                              
 05 The-Table     occurs 0 to 200000 depending on High-Element.
  10 The-Key     Binary Pic S9(8).                            

01 Low-Element     Binary Pic S9(8).                            
01 High-Element    Binary Pic S9(8).                            

Procedure Division using The-Table-Area                         
                         Low-Element                            
                         High-Element.                          

  Compute Lo  = Low-Element                                   
  Compute Hi  = High-Element                                  

  If ( High-Element > Low-Element )                           
     Perform Select-Pivot          

* ----- Loop through table until indices cross                   
       Perform until Hi < Lo                                    

* -------- Locate an item that should not be in less partition    
          Perform varying Lo from Lo by 1                        
            until (( Lo >= High-Element )                        
               or  ( The-Key of The-Table ( Lo ) >= Pivot ))     
          End-Perform                                            


* -------- Locate an item that should not be in greater partition 
          Perform varying Hi from Hi by -1                       
            until (( Hi <= Low-Element )                         
               or  ( The-Key of The-Table ( Hi ) <= Pivot ))     
          End-Perform                                            

* -------- Exchange the two and keep looking                      
          If ( Lo <= Hi )                                        
             Perform Swap-Elements                               
             Compute Lo = Lo + 1                                 
             Compute Hi = Hi - 1                                 
          End-If                                                 

    End-Perform                                               

    Perform Qsort-Less-Partition                              

    Perform Qsort-Greater-Partition                           

 End-If                                                       

 Goback.                                                      

*--------------------------------------------------------------*  
* Select the pivot using median of three rule.                    
*--------------------------------------------------------------*  
 Select-Pivot.                                                    

    Compute Pivot = ( Lo + Hi ) / 2                              
    Compute Pivot = Function Median (                            
            The-Key of The-Table ( Lo )                          
            The-Key of The-Table ( Pivot )                       
            The-Key of The-Table ( Hi )                          
         )                                                       
    End-Compute                                                  

    Exit.                                                        

*--------------------------------------------------------------*  
* Exchange elements in the wrong partition                        
*--------------------------------------------------------------*  
 Swap-Elements.                                                   
    Move The-Table ( Lo ) to Swap-Space                          
    Move The-Table ( Hi ) to The-Table ( Lo )                    
    Move Swap-Space       to The-Table ( Hi )                    
    Exit.                   

*--------------------------------------------------------------*  
* Sort the less sub-partition                                     
*  -- Optimization opportunity for the user: if the partition     
*    size is sufficiently small you might want to apply a simple  
*    sort like insertion or bubble, or perhaps a bose-nelson      
*    network to order the last few and save the overhead of       
*    another recursive call.                                      
*--------------------------------------------------------------*  
 Qsort-Less-Partition.                                            
    If ( Low-Element < Hi )                                      
       Call 'QwikSort' Using                                     
          The-Table-Area                                         
          Low-Element                                            
          Hi                                                     
       End-Call                                                  
    End-If 
    Exit.                                                        

*--------------------------------------------------------------*  
* Sort the greater sub-partition                                  
*  -- Optimization opportunity for the user: same as left part.   
*--------------------------------------------------------------*  
 Qsort-Greater-Partition.                                         
    If ( Lo < High-Element )                                     
       Call 'QwikSort' Using                                     
          The-Table-Area                                         
          Lo                                                     
          High-Element                                           
       End-Call                                                  
    End-If                              
    Exit.                                                        

 End Program QwikSort.

এর QwikSortপরিবর্তে এর কারণ আছে কি QuickSort? (অর্থাত্ দৈর্ঘ্যের সীমাবদ্ধতা বা আপনি কোনও নামে চিঠিটি ব্যবহার করতে পারবেন না?) কারণ এটি এটিকে আরও মজাদার করে তুলবে: পি
মেরিনাস

@ মারিনাস সম্ভবত এটি লিঙ্কার সীমাবদ্ধ।
ক্রেগ ব্যবসায়ী

পরে অবশ্য যথেষ্ট বড় হাতের না
জ্যাভিয়ার কমবেল

পুরানো ওএসের জিনিসগুলিতে আট অক্ষরের দৈর্ঘ্যের সীমাবদ্ধতার সাথে মাপসই করা "কুইকসোর্ট" এর পরিবর্তে "কিউইকসোর্ট"। "কিউইকসোর্ট" কোনও এমভিএস পিডিএস বা পুরানো স্কুল ডস মেশিনে দুর্দান্তভাবে ফিট করবে।
জো জিৎসেলবার্গার

বড় হাতের দরকার নেই, কোবল লোয়ার কেস ঠিকঠাক করে ফেলেছে, আমি বোলিং করতে পেরে খুশি, তবে আসল হতে পারি, এটি 1974 নয় ...
জো জিৎসেলবার্গার

4
var inp = [1, 4, 7, 2, 5],
    loops = 0,
    trysort;

while(++loops) {
    trysort = new Array(inp.length);

    for(var i = 0, len = inp.length; i < len; i++) {
        trysort[i] = inp[~~(Math.random()*inp.length)];
    }

    if( trysort.join(',') === '1,2,4,5,7' )
        break;
}
alert('done! Only ' + loops + ' iterations! ' + trysort);

http://www.jsfiddle.net/sAFMC/


হার্ড অ্যারে টুট টুট মধ্যে কোডড।
রায়নস


সুন্দর। আমি এটা পছন্দ করি.
বৈভব

4

ল্যাম্বডা ব্যবহার করে পাইথন কুইকোর্ট

আমি আমার ব্লগে কিছু লিখেছি:

qsort = lambda seq: [] if not seq else qsort(filter(lambda n: n<=seq[0], seq[1:]))+[seq[0]]+qsort(filter(lambda n: n>seq[0], seq[1:]))

এখানে প্রকৃত ব্লগ পোস্ট


1
চমৎকার সমাধান! পাইথনের সংক্ষিপ্ততম পরিচিত কুইকোর্টটি কেবলমাত্র 79 বাইট দীর্ঘ (সৌজন্যে কিংবদন্তি কোডগল্ফার মার্ক বায়ার্স): নিউজ.সেসক্রিপড
314#

এটি একটি অত্যন্ত রহস্যজনক সমাধান। মনের অজান্তে!
মিঃডি

4

চুনি

#get user input from standard input and store it in a variable
var = gets
#make user input into a ruby array in a string
array_string = '[' + var + ']'
#evaluate this ruby array and store the array in a variable
array = eval(array_string)
#convert from strings to integers
#initialize loop variable as 0
i = 0
#loop until the loop variable is no longer small enough
#to be a valid index of the array
until !(i < array.length)
    #convert to a number then ensure it is an integer
    array[i] = array[i].to_f.floor
    #increment i
    i = i + 1
end

sorted = false

#infinite loop
while true
    #if it hasn't been sorted
    if ((!sorted) == true)
        #try to sort it
        #initialize loop variable as 0
        j = 0
        #loop while i is less than or equal to the length of the array
        while (i <= array.length)
            random = rand # get a random number
            #this gets a zero or one
            random = (random + random.round).floor
            #turn random into a boolean
            if random == 0
                random = true
            end
            if random == 1
                random = false
            end
            #don't do anything if this is the last one
            if j == (array.length - 1)
                #do nothing
            else
                if random == true
                    #true means keep these 2 elements in the same order
                end
                if random == false
                    #false means swap with next element
                    #initialize a variable to store the current element
                    swapvar = array[j]
                    #initialize a variable to store the next element
                    swapvar2 = array[j+1]
                    #set the current element to what was the next element
                    array[j] = swapvar2
                    #set the next element to what was in this one
                    array[j+1] = swapvar
                end
            end
            #increment j
            j = j + 1
            #loop kept looping, fixed now
            if j >= array.length
                break
            end
        end
        #now test if it is sorted
        #lets say it is
        sorted = true
        #now see if we are wrong
        #initialise a loop variable to zero
        k = 0
        while (array.length > k)
            #get current value from array and store it in a variable
            current = array[k]
            #get current value from array and store it in a variable
            next_ = array[k + 1]
            if !(array[k +1].nil? == true)#stop errors
                #if sorted correctly
                if next_ < current || next_ == current
                    #sorted stil== true
                else
                    sorted = false #not sorted, try again
                end
            end
            #increment loop variable
            k = k + 1
        end
            #DEBUG
        #p array
    else
        break #break out of infinite loop
    end
end


#it is now sorted in descending order
#we want ascending so lets flip it

#initialise a loop variable to zero
l = 0

final_array = Array.new([])

while (l <= (array.length - 1))
    final_array[array.length - l - 1] = array[l]
    #increment loop variable
    l += 1
end

#now we need to make it into a string
str = ''

#first map each element to a string
#to do this lets extend Array, then use this for our array
class Array
    def map #map each element to a string
        #initialise a loop variable to zero
        @m = 0
        arr = []
        while @m < self.length
            arr += [self[@m].to_s]
            #increment loop variable
            @m = @m + 1
        end
        return arr
    end
end

final_array = Array.new(final_array).map()
#DEBUG
#p final_array

#now add the elements to a string, separated by commas and spaces
#initialise a loop variable to zero
n = 0

while n < array.length
    #increment loop variable
    #add item to string
    str = str + final_array[n]
    #if not last item
    if !((array.length - 1 )== n)
        #add comma
        str += ','
    end
    #if not last item
    if !((array.length - 1 )== n)
        #add space
        str += ' '
    end
    n = n + 1
end

#now print the string
puts str

3

সি ++ (4409)

#include <iostream>
#include <cstdlib>
#include <cctype>
#include <string>
#include <sstream>


std::string itostr(int number)
{
   std::stringstream ss;
   ss << number;
   return(ss.str());
}


class CStackLIFO
{
private:
    int* stack;
    size_t len;
public:
    CStackLIFO();
    CStackLIFO(int);
    ~CStackLIFO();
    void init();
    void init(int);
    void push(int);
    int pop();
    int pop(int&);
    void destroy(size_t);
    int get(size_t);
    size_t get_len();
};


void CStackLIFO::init()
{
    len = 0;
    stack = NULL;
}


void CStackLIFO::init(int val)
{
    len = 1;
    stack = new int[len];
    stack[0] = val;
}


CStackLIFO::CStackLIFO()
{
    init();
}


CStackLIFO::CStackLIFO(int val)
{
    init(val);
}


CStackLIFO::~CStackLIFO()
{
    len = 0;
    delete[] stack;
    stack = NULL;
}


void CStackLIFO::push(int val = NULL)
{
    if((stack == NULL) || (len == 0))
    {
        this->init(val);
    }
    else
    {
        int* buf = stack;
        len++;
        stack = new int [len];

        for(size_t i = 0; i < (len - 1); i++)
        {
            stack[i] = buf[i];
        }

        stack[len - 1] = val;
        delete[] buf;
    }
}


int CStackLIFO::pop()
{
    int val;
    int* buf = stack;
    len--;
    stack = new int [len];

    for(size_t i = 0; i < len; i++)
    {
        stack[i] = buf[i];
    }

    val = buf[len];
    delete[] buf;

    return(val);
}


int CStackLIFO::pop(int &out)
{
    if(len <= 0)
        return(false);

    int* buf = stack;
    len--;
    stack = new int [len];

    for(size_t i = 0; i < len; i++)
    {
        stack[i] = buf[i];
    }

    out = buf[len];
    delete[] buf;

    return(true);
}


void CStackLIFO::destroy(size_t idx)
{
    int* buf = stack;
    len--;
    stack = new int [len];
    for(size_t i = 0; i < idx; i++)
    {
        stack[i] = buf[i];
    }
    for(size_t i = idx; i < len; i++)
    {
        stack[i] = buf[i + 1];
    }
    delete[] buf;
}


int CStackLIFO::get(size_t idx)
{
    return(stack[idx]);
}


size_t CStackLIFO::get_len()
{
    return(len);
}


class CSort
{
private:
    void removeWhitespace();
public:
    std::string in;
    void sort();
    void display();
};


void CSort::display()
{
    std::cout << in << std::endl;
    return;
}


void CSort::removeWhitespace()
{
    for(size_t i = 0; i < in.size(); i++)
    {
        if(in[i] == ' ')
        {
            in = in.substr(0, i) + in.substr(i+1);
        }
    }
}


void CSort::sort()
{
    removeWhitespace();

    CStackLIFO nums;
    CStackLIFO s;

    // build stack
    for(size_t i = 0, offset = 0; i < in.size(); i++)
    {
        for(offset = 0; (i + offset) < in.size(); offset++)
        {
            if(!(isdigit(in[i + offset]) ||
                 (in[i + offset] == '-')))
                break;
        }

        if(offset > 0)
        {
            nums.push(atoi(in.substr(i, offset).c_str()));
        }

        i += offset;
    }

    // sort
    for(size_t lowest = 0; 0 < nums.get_len(); lowest = 0)
    {
        for(size_t i = 0; i < nums.get_len(); i++)
        {
            if(nums.get(i) < nums.get(lowest))
                lowest = i;
        }

        s.push(nums.get(lowest));
        nums.destroy(lowest);
    }    

    // convert to string
    in = "";
    for(size_t i = 0; i < s.get_len(); i++)
    {
        // Convert num to string
        in += itostr(s.get(i));
        in += ", ";
    }
    if(in.size() > 2)
        in = in.substr(0, in.size() - 2);
}


int main(int argc, char* argv[])
{
    while(1)
    {
        CSort unsorted;
        unsorted.in = "";

        while(1)
        {
            std::string userin = "";
            std::cin >> userin;

            if(userin.compare("end") == 0)
                break;

            unsorted.in += userin + ", ";
        }

        unsorted.in = unsorted.in.substr(0, unsorted.in.size() - 2);

        CSort sorted;
        sorted.in = unsorted.in;
        sorted.sort();

        std::cout << "Input:" << std::endl;
        unsorted.display();
        std::cout << "Output:" << std::endl;
        sorted.display();
    }

    return(0);
}

এই প্রোগ্রামটি সম্পর্কে কিছু জিনিস "খারাপ":

  • সত্যিই শক্ত। :) আমি কেবল সংখ্যার জন্য স্ট্রিংকে পার্সিং না করে সরাসরি সংখ্যাগুলি ইনপুট করতে পারতাম।

  • অতিরিক্ত ক্লাস ব্যবহার করে। আমি অন্তর্নির্মিতগুলিও ব্যবহার করতে পারতাম, তবে একটি খারাপ কোডার কেবল চাকাটি পুনরায় উদ্ভাবন করতে পারে।

  • সাজানোর জন্য লুপ মারাত্মকভাবে অক্ষম। আমি মনে করি এটি আস্তে আস্তে সম্ভব, এটিকে এমনভাবে না দেখাই যে আমি আসলে এটি ধীর করার চেষ্টা করেছি। প্রকৃতপক্ষে, কোডটির আসল "বাছাই" অংশটি কেবল 11 টি লাইনের মতো, কোঁকড়ানো ধনুর্বন্ধনী এবং লাইন ব্রেকগুলি সহ।


3

এটি হ'ল ও (এন * এন!)

from itertools import permutations, izip, islice
L=[10,9,8,7,6,5,4,3,2,1]
for l in permutations(L):
    if all([i<j for i,j in izip(L, islice(L,1,None))]):
        break
print l

এটি তালিকার সমস্ত ক্রিয়াকলাপ পুনরুক্ত করে এবং সেগুলি সাজানো হয়েছে কিনা তা পরীক্ষা করে। এটি এত ভয়াবহ যে মাত্র 10 আইটেম বাছাই করতে 17 সেকেন্ড সময় লাগে

$ time python badsort.py 
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

real    0m17.563s
user    0m17.537s
sys     0m0.020s

3

টি-এসকিউএল

(এসকিউএল সার্ভার ২০০৮ আর 2)

স্বাভাবিকভাবেই, টি-এসকিউএল দিয়ে, আপনি বাছাই করতে "অর্ডার বাই" ব্যবহার করেন। Duhhh।

DECLARE @LISTIN NVARCHAR(MAX);
SELECT @LISTIN = N'1, 4, 7, 2, 5'; --Input list goes here.
DECLARE @LISTINDEX BIGINT;
SELECT @LISTINDEX = 0;
DECLARE @CHARS NVARCHAR(MAX);
SELECT @CHARS = N'';
DECLARE @LISTOUT NVARCHAR(MAX);
SELECT @LISTOUT = N'';
DECLARE @ORDERBY TABLE (NUMBER NVARCHAR(MAX));
WHILE @LISTINDEX < LEN(@LISTIN) BEGIN;
SELECT @LISTINDEX = @LISTINDEX + 1;
SELECT @CHARS = @CHARS + SUBSTRING(@LISTIN, @LISTINDEX, 1);
IF PATINDEX(N'%, ', @CHARS) > 0 BEGIN;
INSERT INTO @ORDERBY (NUMBER) VALUES (REPLACE(@CHARS, N', ', N''));
SELECT @CHARS = N'';
END;
IF @LISTINDEX = LEN(@LISTIN) BEGIN;
INSERT INTO @ORDERBY (NUMBER) VALUES (@CHARS);
END;
END;
DECLARE ORDERBY CURSOR FOR SELECT NUMBER FROM @ORDERBY ORDER BY CONVERT(DECIMAL, NUMBER);
OPEN ORDERBY;
FETCH NEXT FROM ORDERBY INTO @CHARS;
WHILE @@FETCH_STATUS = 0 BEGIN;
SELECT @LISTOUT = @LISTOUT + @CHARS + N', ';
FETCH NEXT FROM ORDERBY INTO @CHARS;
END;
CLOSE ORDERBY;
DEALLOCATE ORDERBY;
IF @LISTOUT = N'' SELECT @LISTOUT;
ELSE SELECT SUBSTRING(@LISTOUT, 1, LEN(@LISTOUT) - 1);

"অর্ডার বাই" দেখুন? এটি ঠিক সেখানে কার্সার ঘোষণায়।


2

ফানেল বাছাইয়ের পাইথন বাস্তবায়ন । সঠিকভাবে প্রয়োগ করার সময় এই অ্যালগরিদমের আসলে ভাল ক্যাশে পারফরম্যান্স থাকতে পারে, যা এই ক্ষেত্রে এটি অবশ্যই না (এটি তবে সঠিকভাবে সাজান)।

class Funnel(object):
  """ In place funnel sorting algorithm. """
  def __init__(self, left_child, right_child):
    self.left_child = left_child
    self.right_child = right_child
    self.lookahead = (False, -1)

  def get_next(self):
    if self.left_child.has_next() and self.right_child.has_next():
      l, r = self.left_child.get_next(), self.right_child.get_next()
      if l < r:
        self.right_child.put_back(r)
        return l
      else:
        self.left_child.put_back(l)
        return r
    elif self.left_child.has_next():
      return self.left_child.get_next()
    elif self.right_child.has_next():
      return self.right_child.get_next()
    else:
      raise Exception("Out of elements.")

  def has_next():
    if self.lookahead[0]: 
      self.lookahead = (False, self.lookahead[1])
      return self.lookahead[1]
    return self.left_child.has_next() or self.right_child.has_next()

  def put_back(self, item):
    self.lookahead = (True, item)

class Funnel_Base(Funnel):
  def __init__(self, buffer):
    self.buf = buffer
    self.lookahead = (False, -1)

  def get_next(self):
    if self.lookahead[0]:
      self.lookahead = (False, self.lookahead[1])
      return self.lookahead[1]
    return self.buf.pop(0)

  def has_next():
    return len(self.buf) > 0

def make_funnel(funnels):
  while len(funnels) > 1: funnels.append(Funnel(funnels.pop(0), funnels.pop(0)))
  return funnels[0]

def insertion_sort(array):
  def swap(i, j):
    t = array[i]
    array[i] = array[j]
    array[j] = t
  for i in xrange(1,len(array)):
    while i > 0 and  array[i] < array[i-1]:
      swap(i, i-1)
      i -= 1

def funnel_sort_internal(array):
  if len(array) < 100:
    # sort subsections with insertion sort and make base funnels
    insertion_sort(array)
    return Funnel_Base(array)
  else:
    K = int(len(array)**(1.0/3))
    new_funnels = [funnel_sort_internal(array[base:min(base+K, len(array))])
                   for base in xrange(0, len(array), K)]
    return make_funnel(funnels)

def funnel_sort(array):
  cp = array[:]
  srtd = funnel_sort_internal(cp)
  for i in xrange(len(array)): array[i] = cp[i]

2

32-বিট পূর্ণসংখ্যার একটি তালিকা সাজান। বেশিরভাগ সাধারণ ক্ষেত্রে এটি আসলে বেশ দক্ষ:

#include <assert.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>

static unsigned char *bmp[131072];
static size_t total, printed;

static void set(int n);
static void print_page(unsigned char *page, int offset);
static void print_number(int n);

int main(void)
{
    int i, n;

    assert(INT_MIN == -2147483647 - 1 && INT_MAX == 2147483647);

    while (scanf("%d,*", &n) > 0) {
        set(n);
        total++;
    }

    for (i = 0; i < 131072; i++)
        if (bmp[i] != NULL)
            print_page(bmp[i], INT_MIN + i * 32768);
    putchar('\n');

    return 0;
}

static void set(int n)
{
    unsigned int i = n - INT_MIN;

    if (bmp[i >> 15] == NULL)
        bmp[i >> 15] = calloc(4096, sizeof(unsigned char));

    bmp[i >> 15][(i >> 3) & 4095] |= (unsigned int)1 << (i & 7);
}

static void print_page(unsigned char *page, int offset)
{
    int i, j;

    for (i = 0; i < 4096; i++, offset += 8)
        if (page[i])
            for (j = 0; j < 8; j++)
                if (page[i] & (1 << j))
                    print_number(offset + j);
}

static void print_number(int n)
{
    printf("%d%s", n, ++printed < total ? ", " : "");
}

উদাহরণ:

$ echo '1, 4, -3, 7, -2147483648, 2147483647, 2, 5' | ./bitmap-sort
-2147483648, -3, 1, 2, 4, 5, 7, 2147483647

2
<?php
    /*  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY
        EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
        BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
        PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
        REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
        INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
        CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
        TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
        LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
        INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
        LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
        OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
        IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
        ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.          */

    // Make the function
    function sort_numbers($nums) {
        // Remove duplicates from array
        array_unique($nums);
        // Filter out everything that's not a number or a numeric string
        foreach ($nums as $val) {
            if (!is_numeric($val)) {
                unset($array[$val]);
            }
        }
        // Do some random computations
        class SorterFunction {
            public $timestamp = 0;
            public $rand_num = 0;
            public function sort_a_numeric_array($num_arr) {
                // Sort the array
                sort($num_arr, SORT_NUMERIC);
                return $num_arr;
            }
            public function __construct() {
            $this->timestamp = time();
            $this->rand_num = rand() % 100000;
        }
    }
    // Create a new SorterFunction class
    $MySorterFunction = new SorterFunction();
    // Print out the sorted array's elements using var_dump
        $MySorterFunction->sort_a_numeric_array($nums);
        var_dump($nums);
    }
    $my_nums = array(1, 4, 7, 2, 5);
    sort_numbers($my_nums);
?>

এটি এমনকি কাজ করবে না, যেহেতু sort()রেফারেন্স অনুসারে কাজ করে এবং কিছু ফেরত দেয় না ...
ircmaxell

@ কিরম্যাক্সেল: স্থির, ধন্যবাদ
nyuszika7h

দীর্ঘশ্বাস. (যদিও এটি একটি ডাব্লুটিএফ, তাই এটি প্রযুক্তিগতভাবে গণনা করা হয়)। তবে এটি এখনও কাজ করে না (ভুল ধরণের পরিবর্তন)
ircmaxell

1
লাইসেন্সের জন্য +1, তবে এটি আরও লাইনকে কভার করতে পারে।

1
@ টিম আপডেট দেখুন। ;)
nyuszika7h

2

সি ++ , এই ধরণের নাম আছে কিনা তা নিশ্চিত নয়, তবে এখানে যায়<ducks for cover/>

#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>

int main(void)
{
  std::istream_iterator<int> in(std::cin), end;
  std::vector<int> input(in, end);

  std::cout << "sorting.." << std::endl;
  std::copy(input.begin(), input.end(), std::ostream_iterator<int>(std::cout, " "));
  std::cout << std::endl;

  // this is the smart bit.. ;)
  while (std::next_permutation (input.begin(), input.end()));

  std::cout << "sorted.." << std::endl;
  std::copy(input.begin(), input.end(), std::ostream_iterator<int>(std::cout, " "));
  std::cout << std::endl;

  return 0;
}

এটি আপনার বদনাময়ের জটিলতা বোগোসোর্টের গড় কেস জটিলতা এই পার্থক্যের সাথে বোগোসোর্টের মতো।
সা saন

2

একটি উদ্যোগ সমাধান (সিউডোকোডে):

create sql connection
create temporary table: one autoincrementing ID field and one value field
convert array into xml
post xml to sql database
use stored procedure to create records from xml
run sql command "select * from temptable sort by value"
iterate records, adding to array
drop temporary table
close connection

2

রুবিতে, " স্প্যাগেটি বাছাই" এর একটি ভিজ্যুয়াল উপস্থাপনা , এটি 80 কলামের টার্মিনালটিতে চালানোর জন্য ডিজাইন করা হয়েছে:

$CONSOLE_WIDTH = 78
def sort a
  factor = $CONSOLE_WIDTH.to_f/a.max
  puts "Strands:"
  puts (strands=a.map{|v|['-'*(v*factor).to_i,v*factor]}).map{|s|s.first}
  results=[];
  len=0
  n = 1
  until strands.empty? do
   #puts "\nITERATION #{n}\n\n"
    n+=1
    $CONSOLE_WIDTH.downto(0) do |i|
      len = i
      contacts = strands.find_all{|s|s.first[i]!=nil}
      break unless contacts.empty?
    end
    puts "\nResults:"
    puts results.map{|s|s.first}
    puts "\nStrands:"
    puts strands.map{|s|s.first.ljust(len+1)+"|"}
    longest = strands.sort_by{|s|s.last}.max
    strands.delete_at strands.index(longest)
    results << longest
  end
  puts "\nResults:"
  puts results.map{|s|s.first}
  return results.map{|s|s.last/factor}

end

ব্যবহার: p sort (1..10).map{rand(100)}


2

পিএল \ এসকিউএল - 109 লাইন

এটি @ স্টেনস্লাগের উত্তরে @ ই-বিজনেসের মন্তব্যের একটি প্রতিক্রিয়া। এটি কোনও কার্যকর উদ্দেশ্যে কাজ করে না।

এটির 4 টি পর্যায় রয়েছে:

  1. কমা দ্বারা আলাদা সংখ্যাগুলির তালিকা নিন এবং এতে কয়টি কমা রয়েছে তা নিয়ে কাজ করুন।
  2. কমাগুলির উপর ভিত্তি করে স্ট্রিংকে অবস্থানগতভাবে বিভক্ত করতে কমা সংখ্যা ব্যবহার করুন।
  3. মানগুলির জ্ঞাত সংখ্যাটি লুপ করুন এবং প্রতিবার সর্বনিম্ন মানটি সন্ধান করুন - আমরা যাব পূর্ববর্তী সর্বনিম্ন মুছুন।
  4. তাদের আউটপুট।

 create or replace procedure sort ( Plist_of_numbers varchar2 ) is

   type t_num_array is table of number index by binary_integer;

   t_sorted t_num_array;
   t_unsorted t_num_array;

   i binary_integer := 0;
   -- Can you tell this one was an afterthought?
   x binary_integer := 0;

   no_of_commas integer := 0;

   v_list_of_numbers varchar2(32000);
   v_min_value number;
   v_min_index binary_integer;

begin

   -- Best to be overly careful about these things.
   if trim(Plist_of_numbers) is null then
      raise_application_error(-20000,'You need to give me something to work with.');
   end if;

   -- Firstly we have to make sure that there is a trailing comma
   -- in Plist_of_numbers for this to work.
   if substr(Plist_of_numbers,-1) = ',' then
      v_list_of_numbers := Plist_of_numbers;
   else
      v_list_of_numbers := Plist_of_numbers || ',';
   end if;


   /* SQL ( being SQL ) we had to pass in a string of numbers
      because we'd need to create a type outside the function which
      wouldn-t really be in the spirit of things so, let's unpack
      our string. In order to do this ( bowling ) we need to know how
      many commas are in our sting.
   */

   for j in 1 .. length(v_list_of_numbers) loop

      if substr(v_list_of_numbers,j,1) = ',' then
         no_of_commas := no_of_commas + 1;
      end if;

   end loop;


   -- Next we unpack our list into t_unsorted;
   for j in 1 .. ( no_of_commas - 1 ) loop

      i := i + 1;
      t_unsorted(i) := to_number( substr( v_list_of_numbers
                                        , instr(v_list_of_numbers, ',', 1, j)
                                        , instr(v_list_of_numbers, ',', 1, j + 1)
                                           )
                                  );

   end loop;


   -- Next the actual sorting.
   -- Loop through the known number of elements in the array.
   for j in 1 .. i loop

      -- Then the array each time to find the minimum.
      -- As we-re deleting stuff in the middle here we have to be careful;
      k := t_unsorted.first;
      v_min_value := null;

      while k < t_unsorted.last loop

         if v_min_value is null then 
            v_min_value := t_unsorted(k);
            v_min_index := k;
         elsif t_unsorted(k) < v_min_value then
            v_min_value := t_unsorted(k);
            v_min_index := k;
         end if;

         k := t_unsorted.next;

      end loop;

      -- Now we-ve found the next minimum value put it into the 
      -- t_sorted array
      x := x + 1;          
      t_sorted(x) := v_min_value;
      -- and delete our min value from the unsorted array.
      t_unsorted.delete(v_min_index);

   end loop;


   -- Lastly show that everything worked.
   for j in 1 .. x loop

      dbms_output.put_line( t_sorted(j) );

      -- it-s also nice to show the wider world what-s happening 
      -- but let-s not do it too often, server load etc.
      if mod(j,10) = 0 then
          dbms_application_info.set_module('finding min', 'total: ' || j );
      end if;

   end loop;

end sort;

আপনি দেখতে পাচ্ছেন যে এটি হাস্যকর ... খারাপ জিনিসগুলির মধ্যে রয়েছে:

  • এসকিউএল এ করছেন

এটি আসলে এটি বেশ সুন্দর, এটি অত্যন্ত দ্রুত হওয়া উচিত।


2

ভাষা এবং অ্যালগরিদম উভয়েরই ব্যাখ্যা ব্যাখ্যা করা দরকার।

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

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

(function arg1 arg2 ...)

... এটির জন্য কেবল সিনট্যাকটিক চিনি:

(apply function (list arg1 arg2 ...))

... যা আর্গুমেন্টের তালিকায় একটি ফাংশন প্রয়োগ করে।

এই কোড বোলিংয়ের বাইরে স্ট্রাইক তৈরি করতে, তালিকার পুনরায় বিভাজন করতে আমার সর্বোচ্চ ফাংশনটি পুনরায় সংজ্ঞায়িত করতে হবে যতক্ষণ না এটি নিজের সাথে তুলনা করতে পারে। ন্যূনতম কার্যটি একটি সংখ্যা অবধি অবধি অপরিবর্তিত রেখে সর্বাধিক ব্যবহার করে সর্বোচ্চ ব্যবহার করে পুনরায় সংজ্ঞায়িত করা হয়। অবশেষে, ক্রমানুসারে সর্বনিম্ন সংযোজন করে সাজানোর পুনঃনির্ধারণ করা হয়।

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

(define sort
  (lambda ns
    (define max
      (lambda (ns)
        (let ([len (length ns)])
          (case len
            [(2) (receive (a b) (car+cdr ns)
                   (if (> a b) a b))]
            [(1) (car ns)]
            [else (receive (a b)
                    (split-at ns
                      (floor (/ len 2)))
                    (let ([ma (max a)]
                          [mb (max b)])
                      (if (> ma mb) ma mb)))]))))
    (define min
      (lambda (ns)
        (if (null? (cdr ns)) (car ns)
            (min (remove ns (max ns))))))
    (if (every number? ns)
        (let sort ([ns ns] [sorted (list)])
          (if (null? ns) sorted
              (let ([m (min ns)])
                (sort (remove ns m)
                  (append ns m)))))
    (error "These are not all numbers: " ns))))

1

জাভা অতিরঞ্জিত গণ্ডগোল / ভারী অবস্থা

ঐটা মজা ছিল! এরকম কিছু পোস্ট করতে অদ্ভুত লাগে।

import java.util.LinkedList;

public class WTF {

    // XXX We all know linkedlists are awesome for random access!
    public static LinkedList<Integer> sort(LinkedList<Integer> array) {
        // XXX Instead of sorting in place, we create another array entirely!
        LinkedList<Integer> result = new LinkedList<Integer>();

        // while array is not all null
        // XXX No comments!
        boolean arrayAllNull = true;
        for (int a = 0; a < array.size(); a = a + 1) {
            if (array.get(a) != null) {
                arrayAllNull = false;
            }
        }

        while (arrayAllNull != true) {

            // XXX We could use Integer.MAX_VALUE, but lets assumes something instead
            Integer i = 999999999;
            // find lowest
            for (int a = 0; a < array.size(); a = a + 1) {
                if (array.get(a) != null) {
                    if (array.get(a) < i) {
                        i = array.get(a);
                    }
                }
            }

            // replace lowest by null
            // XXX Yup, another loop! :)
            // XXX We're breaking the original array, but don't tell anyone.
            for (int a = 0; a < array.size(); a = a + 1) {
                if (array.get(a) != null) {
                    if (array.get(a) == i) {
                        array.set(a, null);
                    }
                }
            }

            result.add(i);

            // XXX Lets repeat that test once again, functions are bad.
            arrayAllNull = true;
            for (int a = 0; a < array.size(); a = a + 1) {
                if (array.get(a) != null) {
                    arrayAllNull = false;
                }
            }

        }

        return result;
    }

    public static void main(String[] args) {
        int[] numbers = new int[]{1, 4, 7, 2, 5};
        LinkedList<Integer> nums = new LinkedList<Integer>();
        for (int i : numbers)
            nums.add(i);
        System.out.println(sort(nums));
    }

}

1

পাইথন

সমস্ত আইটেম 9e99 এর চেয়ে কম হলে কেবল কাজ করে :)

>>> L=[10,9,8,7,6,5,4,3,2,1]
>>> 
>>> print [[min(L),L.__setitem__(L.index(min(L)),9e99)][0] for i in L]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

লুপের মাধ্যমে প্রতিবার, ক্ষুদ্রতম উপাদানটি বের করুন এবং এটি 9e99 দিয়ে প্রতিস্থাপন করুন


1

পাইথন (634)

তালিকাটি সাজানো থাকলে মুদ্রণ করুন। অন্যথায়, ভুল ক্রমে থাকা দুটি উপাদান অদলবদল করুন, তারপরে একটি অজগর স্ক্রিপ্ট তৈরি করুন যা নতুন ক্রমটি পরিচালনা করে। এটি চালানোর পরে, তৈরি স্ক্রিপ্টটি মুছুন।

list_to_sort = input()
n = 0
n += 1
import sys, os
for i in range(len(list_to_sort)-1):
    if list_to_sort[i]>list_to_sort[i+1]:
        (list_to_sort[i],list_to_sort[i+1]) = (list_to_sort[i+1],list_to_sort[i])
        source_file = open(sys.argv[0],'r')
        temp_filename = 'temp'+repr(n)+'.py'
        temp_file = open(temp_filename,'w')
        temp_file.write('list_to_sort = ' + repr(list_to_sort) + '\n')
        temp_file.write('n = ' + repr(n) + '\n')
        for line in source_file.readlines()[2:]:
            temp_file.write(line)
        source_file.close()
        temp_file.close()
        os.system('python ' + temp_filename)
        os.remove(temp_filename)
        sys.exit(0)
print list_to_sort

1

পাইথনে বোগোবোগোসর্ট

import random
import copy

def isSorted(list):
    newlist = copy.deepcopy(list)
    while True:
        newlist[:len(newlist)-1] = bogobogosort(newlist[:len(newlist)-1])
        if newlist[len(newlist)-2] < newlist[len(newlist)-1]:
            break
        random.shuffle(newlist)
    return newlist == list

def bogobogosort(list):
    ret = copy.deepcopy(list)
    if (len(ret) > 1):
        while not isSorted(ret):
            random.shuffle(ret)
    return ret

অ্যালগরিদম ডেভিড মরগান-মার আবিষ্কার করেছিলেন।

সতর্কতা: 5 টিরও বেশি উপাদানের চেয়ে বড় কোনও তালিকা দিয়ে এটি ব্যবহার করে দেখুন না। এমনকি 5 খুব ধীর।


1

পাইথন

আমার সমাধান। ত্রুটি পরিচালনা, এবং এমন একটি বৈশিষ্ট্য অন্তর্ভুক্ত রয়েছে যা সংখ্যা বাছাই করার সময় হোয়াইটস্পেস সংরক্ষণ করে, যেমন, সাদা স্থান স্থানে থাকে; সংখ্যা সরানো।

যেমন,

Please tell me your favorite list of numbers.
I'll sort them for you.  
7, 8, 6, 7, 1, 3, 5
1, 3, 5, 6, 7, 7, 8

9,  6  ,8, 43, 90, 13   , 54, 3223, 4
4,  6  ,8, 9, 13, 43   , 54, 90, 3223

কোড:

#!/usr/bin/env python
import sys
import re

class SillyUserException(ValueError):
    def __init__(self, reason, input):
        self.reason = reason
        self.input = input

    def __str__(self):
        return '''
"No man is exempt from saying silly things; the mischief is to say them deliberately."
 - Michel de Montaigne, The Complete Essays
 Your offense was {}.  You should know that it's {}.
         '''.format(self.input, self.reason)

class Item(object):
    def __init__(self, number, prespace, postspace):
        self.number = number
        self.prespace = prespace
        self.postspace = postspace

    def __str__(self):
        return self.prespace + str(self.number) + self.postspace

class ListOfNumbers(object):
    def __init__(self, string):
        self.array = self.parse(string)

    def __str__(self):
        outs = ''
        for i in self.array:
            outs += '{}{}{},'.format(i.prespace, i.number, i.postspace)
        return outs[:-1]

    def parse(self, string):
        array = []

        for item in string.split(','):
            try:
                x = int(item)
            except ValueError:
                raise SillyUserException("not a number", item)

            whitespace = re.findall("\s+", item)
            pre = ''
            post = ''
            if len(whitespace) > 0:
                pre = whitespace[0]
            if len(whitespace) > 1:
                post = whitespace[-1]

            array.append(Item(x, pre, post))

        def swap(i, j):
            tmp = array[i].number
            array[i].number = array[j].number
            array[j].number = tmp

        def min(arr, offset):
            m = arr[0]
            index = 0
            for i, e in enumerate(arr):
                if e.number < m.number:
                    m = e
                    index = i
            return index + offset


        for i, x in enumerate(array):
            m = min(array[i:], i)
            if m != i:
                swap(m, i)

        return array


if __name__ == "__main__":
    sys.stdout.writelines('\n'.join([
        "Please tell me your favorite list of numbers.",
        "I'll sort them for you.  ",
        ""
    ]))

    sys.stdout.flush()

    def read_lines():
        while True:
            line = raw_input()
            yield line

    try:
        for line in read_lines():
            if not line:
                raise SillyUserException('polite to speak when asked a question.', "<nothing>")
            if line.strip() == '42':
                raise SillyUserException('the answer to life, the universe, and everything',
                    'using and overly powerful value')
            if ',' not in line:
                raise SillyUserException("not a list", line)


            print ListOfNumbers(line)

    except SillyUserException as sillyness:
        print sillyness

1

পাইথন ঘ

এই প্রোগ্রামটি স্ট্যান্ডার্ড ইনপুটটিতে সংখ্যার একটি পৃথক পৃথক তালিকা গ্রহণ করে। এরপরে এটি যথাযথ ক্রমে মান আউটপুট প্রিন্ট করবে। অবশেষে.

import base64, pickle
pickle.loads(base64.b64decode(b'gAIoY2J1aWx0aW5zCmxpc3QKcQBjYnVpbHRpbnMKbWFwCnEBY2J1aWx0aW5zCmludApjYnVpbHRpbnMKZ2V0YXR0cgpxAmNidWlsdGlucwppbnB1dAopUlgFAAAAc3BsaXSGUilShlKFUnEDaABoAWNmdW5jdG9vbHMKcGFydGlhbApxBGNvcGVyYXRvcgphZGQKY19vcGVyYXRvcgpuZWcKY2J1aWx0aW5zCm1pbgpoA4VShVKGUmgDhlKFUnEFaABoAWgCY2FzeW5jaW8KZ2V0X2V2ZW50X2xvb3AKcQYpUlgKAAAAY2FsbF9sYXRlcoZSaAVoAWgEaARjYnVpbHRpbnMKcHJpbnQKhlJoA4ZSh1KFUjFoAmgGKVJYEgAAAHJ1bl91bnRpbF9jb21wbGV0ZYZSY2FzeW5jaW8Kc2xlZXAKY19vcGVyYXRvcgphZGQKY2J1aWx0aW5zCm1heApoBYVSSwGGUoVShVIu'))

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

সমতুল্য অজগর কোডটি এরকম কিছু হবে:

from asyncio import get_event_loop, sleep
from operator import add
from functools import partial
values = list(map(int, input().split()))
times = list(map(partial(add, -min(values)), values))
list(map(get_event_loop().call_later, times, map(partial(partial, print), values)))
get_event_loop().run_until_complete(sleep(max(times)+1))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.