বাগি কোড লিখুন [বন্ধ]


17

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

স্পষ্টতার জন্য জিজ্ঞাসা করে মন্তব্যগুলির একটি বিশাল থ্রেড এড়ানোর জন্য, আমি এখনই যা সংশোধন করতে চাইছি তার জন্য সংজ্ঞা দেওয়া উচিত।

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

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

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

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

সমস্যার উদাহরণ:

এমন একটি প্রোগ্রাম তৈরি করুন যা সমস্ত সংখ্যক ASCII অক্ষরকে তাদের সংখ্যাগত মানের ক্রমবর্ধমান ক্রমে প্রদর্শন করে।

উদাহরণের উত্তর:

ব্রেইনফ ***, 5 টি অক্ষর, 1 বাগ, 0.2 বাগ-চর অনুপাত

+[+.]

বাগ: 1. জন্য ASCII অক্ষর প্রদর্শন করা হয় না পরিবর্তিত করে সংশোধন করা গেল .+[.+]

ঠিক আছে, আমি মনে করি আপনার এখনই এটি অর্জন করা উচিত ছিল, আপনার ধাঁধাটি এখানে:

একটি সিজার সাইফার ডিকোড করুন এবং শব্দগুলি বর্ণমালা অনুসারে বাছাই করুন

একটি সিজার সাইফার তৈরি করা হয় কয়েকটি বর্ণ নিয়ে এবং সেগুলি এন বর্ণগুলি বর্ণমালায় স্থানান্তর করে । যদি এটি বর্ণমালার শুরু বা শেষের দিকে যায় তবে A Z এর পরে আসে এবং Z এ এর ​​আগে আসে উদাহরণস্বরূপ:

Mannequin
Nboofrvjo //Shifted over 1 or -25
Wkxxoaesx //Shifted over 10 -16
Ftggxjnbg //Shifted over -7 or 19

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

উদাহরণ (খারাপ ছেলেদের জন্য কোনও অপরাধ নয়, এটি কেবল একটি উদাহরণ):

প্রথম ইনপুট: gtdx wjbfwiji। ljy Gfi hfssty

দ্বিতীয় ইনপুট: 5

প্রথম আউটপুট: ছেলেদের পুরস্কৃত করা। খারাপ পেতে পারে না

দ্বিতীয় আউটপুট: খারাপ ছেলেরা পুরষ্কার পাবে না।

শুভকামনা!


আপনার উদাহরণের দ্বিতীয় ইনপুট -5 নয়?
আপনি

@ এসমার্ক: ইনপুটটি 5 হওয়ায় কাজটি সিফারটি ডিকোড করা।
ন্যাব

আহ আমি দেখি. @ নাব্ব, ধন্যবাদ!
আপনি

আমাদের কি মূলধন এবং ছোট হাতের অক্ষর উভয়কেই সমর্থন করতে হবে?
জোয়ে অ্যাডামস

1
@ পিটার: আমি মেটা নিয়ে একটি নতুন আলোচনা খুলেছি যা এই প্রশ্নটিকে (অন্যদের মধ্যে) উদ্বেগ দেয়। সম্ভবত আপনি মন্তব্য করতে চান।
dmckee

উত্তর:


14

রুবি, 136 টি অক্ষর, 7 বাগ, অনুপাত = 0.051

o=gets[/\d+/].to_i
$,='\s'
a=gets.split(/ /).map{|w|w.gsub(/[^.,:;?!]/){(97+($&.ord-97-o)%26).chr}}
print a.join,a.sort_by{|a|a[0]}.join
  1. [/\d+/]: নেতিবাচক সংখ্যাগুলি তাদের চিহ্ন সরিয়ে ফেলেছে (ইনপুট বৈধতার জন্য একটি প্রচেষ্টা)

  2. '\s': ব্যাকল্যাশ পলায়নগুলি কেবল ডাবল-কোটেড স্ট্রিংয়ের মধ্যেই ব্যাখ্যা করা যায়, সুতরাং এটি কোনও স্থান তৈরি করবে না বরং আক্ষরিক \s

  3. split(/ /): একটি সমভূমি থেকে splitপৃথক, এটি নিউলাইনগুলিতে বিভক্ত হবে না (সুতরাং শেষ শব্দটি নিউলাইনটি রাখবে)

  4. /[^.,:;?!]/: এই রেজেক্স বিরামচিহ্ন বাদ দেয়, তবে বড় হাতের অক্ষর, অঙ্ক বা আন্ডারস্কোর নয় এবং সবচেয়ে গুরুত্বপূর্ণভাবে, নিউলাইনগুলি

  5. 97: বিরামচিহ্ন বা ছোট হাতের অক্ষর ব্যতীত অন্য কিছু গার্ফড হয়ে যাবে

  6. sort_by{|a|a[0]}: দৃশ্যত প্রোগ্রামারটি জানত না sort, এবং পরিবর্তে এই হাস্যকর পদ্ধতিটি ব্যবহার করেছে, যা একই বর্ণ দিয়ে শব্দের বাছাই করে না

  7. print: বিপরীতে puts, প্রতিটি যুক্তির মধ্যে একটি নতুন লাইন মুদ্রণ করে না (সুতরাং স্ট্রিংগুলি একসাথে আঠালো হয়ে আসে)


9

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

ব্রেইনফ ***: 483 অক্ষর, 11 বাগ

,------------------------------------------------[>,---------]<[<]>[>[
->]<[<]>-]>[+++++++++.>]<[---------------------------<]>>[[>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-]>]>[[>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<<<<<<<<<<<<-]>]>[[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<
<<<<<<<<<<<<<<<<-]>]>[[>>>>>>>>>>>+<<<<<<<<<<<-]>]++++++++++.>[[>>>>>>
>>>>>>>>>>+<<<<<<<<<<<<<<<<-]>]>[>+++++++++++++++++++++++++++.]

ইনপুট:

5 gtdx wjbfwiji. ljy Gfi hfssty 

আউটপুট:

bo_sre]arded)getBadcannot
adbo_scannotgetre]arded)

বাগের তালিকা :

ইনপুট / প্রদর্শন বাগ:

  1. এক-একাধিক সংখ্যক অ-সংখ্যামূলক বা নম্বরগুলি প্রোগ্রামটি ভেঙে দেয়।

  2. ডেসিফিয়ারার জেডকে এ এর ​​আগে আসতে দেয় না এটি ASCII চরিত্রের মানটি কেবল বিয়োগ করে।

  3. স্পেসগুলি ASCII ESC (27) চরিত্র হিসাবে উপস্থিত হয়।

  4. যদি কোনও ট্যাব দ্বারা ইনপুটটি সমাপ্ত না হয় তবে ইনপুট নির্দেশাবলীর পরে প্রোগ্রামটি চলতে থাকবে না।

  5. প্রোগ্রামটি ম্যানুয়ালি শেষ করতে হবে। এটি বন্ধ না হওয়া পর্যন্ত এটি ধারাবাহিকভাবে ESC অক্ষর প্রদর্শন করবে।

  6. ইনপুট ফাইলটি ASCII এনকোডড না থাকলে প্রোগ্রামটি ভেঙে যাবে।

  7. প্রোগ্রামটি বাছাই করা আউটপুটের প্রথম অক্ষরটি প্রদর্শন করে না।

বাগ বাছাই করা:

আমি অত্যন্ত নির্লিপ্তভাবে বাছাই বাস্তবায়ন করেছি।

  1. শব্দের সংখ্যা 5 এর সমান না হলে প্রোগ্রামটি ভেঙে যায়।

  2. ইনপুট বাইটের সংখ্যা 60 এর বেশি হলে প্রোগ্রামটি বিরতি দেয়।

  3. বর্ণানুক্রমিক ক্রম উদাহরণ ইনপুটটির অনুরূপ হলে প্রোগ্রামটি সঠিকভাবে বাছাই করতে পারে।

  4. প্রোগ্রামটি অতিরিক্ত স্পেস যুক্ত করে যদি কোনও শব্দ শব্দের উদাহরণ ইনপুটের চেয়ে ছোট হয় এবং কোনও শব্দ দীর্ঘ হয় তবে অক্ষরগুলিকে ওভাররাইট করে।

আমার কাছে বাগ-চর অনুপাত 0.0228 । স্বীকারোক্তিহীনভাবে, জো আমাকে পিটিয়েছে তবে আমি গর্বিত হয়েছি যে আমি কেবল আমার প্রোগ্রামে 8 টি ভিন্ন চরিত্র ব্যবহার করেছি এবং আমার বাগগুলি আরও সমালোচিত।


2
re]arded? গুরুতর মনে হচ্ছে।
জো জে।

7

সি - 224 টি অক্ষর, 2 বাগ, 7 সংজ্ঞায়িত আচরণের কেস

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

m(char**a,char**b){return strcmp(*a,*b);}main(int c,char*v[]){unsigned i,j
,o;o=atoi(v[1])+19;for(i=2;i<c;i++)for(j=0;j<=strlen(v[i])-1;j++)v[i][j]=(
tolower(v[i][j])-o)%26+97;qsort(v,c,sizeof(v),m);for(i=2;i<c;puts(v[i++]));}

ব্যবহার:

$ ./a.out 5 gtdx wjbfwiji ljy Gfi hfssty
bad
boys
cannot
get
rewarded

ভাঙ্গন:

m(char**a,char**b){return strcmp(*a,*b);}
main(int c,char*v[])
{
    unsigned i,j,o;

    // Undefined behavior if o is assigned negative value.
    o=atoi(v[1])+19;

    // Comparison between signed and unsigned integer.
    for(i=2;i<c;i++)
        // * Bug: if strlen(v[i]) is zero, subtraction will overflow
        //        unsigned value, and loop will have extra iterations.
        // * strlen is implicitly declared.
        //   Undefined behavior if sizeof(void*) != sizeof(int)
        for(j=0;j<=strlen(v[i])-1;j++)
            // tolower expects either an unsigned char casted to an int, or EOF.
            // Thus, undefined behavior if v[i][j] is non-ASCII.
            v[i][j]=(tolower(v[i][j])-o)%26+97;

    // * Bug: Program name and offset are included in the sort.
    //        "./a.out" and "5" both happen to be less than lowercase strings.
    // * qsort is implicitly declared.
    //   Undefined behavior if sizeof(void*) != sizeof(int)
    qsort(v,c,sizeof(v),m);

    // Comparison between signed and unsigned integer.
    for(i=2;i<c;puts(v[i++]));
}

বরফ ভাঙ্গার জন্য ভালো কাজ। আমি বলব আপনার কাছে 0.0402 বাগ-চর অনুপাত রয়েছে।
পিটার ওলসন

@ পিটার এর মধ্যে কি মন্তব্য এবং সাদা অংশ / সিআরএলএফ অন্তর্ভুক্ত?
মতিন উলহাক

@ মন্টু নং এটি 9/224।
পিটার ওলসন

তবে তা কি অরসোর্টড টেক্সটটিও আউটপুট করা উচিত নয়?
লোজ্যাকার

5

জাভাস্ক্রিপ্ট: 403 টি অক্ষর, 8 বাগ, অনুপাত = 0.0199

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

function W(v){D.write("<input value="+v+">");return D.body.lastChild}function R(J){I=S.indexOf(C=i.value[J]);H=s.value;if(!I){o.value+=C}if(H>0){o.value+=S[I+H]}if(H<0){o.value+=S[I-26-H]}p.value=o.value.split(" ").sort().join(" ");setTimeout("R("+(J+1)+")",99)}D=document;S="ZYXWVUTSRQPONMLKJIHGFEDCBA";S+=S;S+=S.toLowerCase();i=W("input");s=W("shift");W("run type=button onclick=R(0)");o=W("");p=W("")

function W(v) {
    D.write('<input value=' + v + '>');
    return D.body.lastChild;
}

function R(J) {
    I = S.indexOf(C = i.value[J]);
    H = s.value;
    if(!I) o.value += C;
    if(H > 0) o.value += S[I + H];
    if(H < 0) o.value += S[I - 26 - H];
    p.value = o.value.split(' ').sort().join(' ');
    setTimeout('R(' + (J + 1) + ')', 99);
}

D = document;

S = 'ZYXWVUTSRQPONMLKJIHGFEDCBA';
S += S;
S += S.toLowerCase();

i = W('input');
s = W('shift');
W('run type=button onclick=R(0)');
o = W('');
p = W('');

  1. I + H স্ট্রিং কনটেন্টেশন, সংযোজন নয়: undefinedundefinedundefined...
  2. !I.indexOf()কোনও মিল না-করার জন্য -1 ফেরতের মানটি যাচাইয়ের সঠিক উপায় নয় :boysVrewardedVV...
  3. নিখোঁজ else কীওয়ার্ডগুলি:boys Vrewarded.V Vget...
  4. ইনপুট শেষে থামবে না: ...cannotundefinedundefined...
  5. শূন্য শিফটটি সঠিকভাবে পরিচালনা করবে না (উদাহরণস্বরূপ শব্দগুলি বাছাই করার জন্য প্রোগ্রামটি ব্যবহারের চেষ্টা করা)
  6. এটি একটি নেতিবাচক শিফট পরিচালনা করবে? সঠিকভাবে না।
  7. বোতামটিতে ডাবল ক্লিকের ফলে দ্বিতীয় সময়সীমা শুরু হওয়ার কারণটি ভুল আউটপুট নিয়ে আসে ( পূর্ববর্তী বাগগুলির বেশিরভাগটি ডেমো স্থির করে ):
    boys rebwoayrsd erde.w agredte dB.a dg ecta nBnaodt cannot
  8. বোতামটি ক্লিক করা হলে আউটপুট পাঠ্য বাক্সগুলি খালি থাকতে হবে

এছাড়াও মনে রাখবেন যে এটি IE এর পুরানো সংস্করণগুলিতে কাজ করবে না কারণ এটি ECMAScript 3 তে একটি এক্সটেনশন ব্যবহার করে যা কেবল ES5 তে মানক করা হয়েছিল।


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

ঠিক আছে, একটি অচল ব্রাউজারের সমর্থনের অভাব অবশ্যই কাউকে আঘাত করে না, তবে বর্তমানের পক্ষে সমর্থনের অভাব রয়েছে । যতক্ষণ না আপনি হিপ ও প্রযুক্তির রক্তপাত প্রান্ত এ কাপড় তৈরি সম্পূর্ণভাবে Rad ওয়েব 2.0 কোম্পানী না হওয়া পর্যন্ত এটি bleeds আমি বলতে চাই এটা হল একটি বাগ। (উত্তরটি পুনরায় পড়ুন; পুরানো সংস্করণগুলির পক্ষে সমর্থন না থাকা সম্ভবত কোনও ত্রুটি নেই X এক্সপি মূলধারার সমর্থন ছাড়াই দীর্ঘকালীন এবং সমস্ত সমর্থিত উইন্ডোজ সংস্করণগুলিতে IE চালনার জন্য একটি শালীন সংস্করণ রয়েছে যা স্বয়ংক্রিয় আপডেটের মাধ্যমে আসে)।
জোয়

1

পাইথন 3 184 টি অক্ষর, 4 টি বাগ। বাগ অনুপাত 0,0217

import string
d=input()
y=int(input())
print("".join(sorted(d.translate(str.maketrans("".join([chr(x)for x in range(96,123)]),"".join([chr(96+(x+y)%26)for x in range(26)]))).split())))

degolfed:

data = input() #string to convert
y = int(input()) #value to shift
print("".join(
    sorted(
        data.translate(
            str.maketrans(
                "".join([chr(x) for x in range(96,123)]),
                "".join([chr(96+(x+y)%26) for x in range(26)]))
            ).split()
        )))

উদাহরণ ইনপুট: gtdx wjbfwiji। ljy Gfi hfssty
উদাহরণ ইনপুট: -5
উদাহরণ আউটপুট: জি canxrbmmnsfdsqdv`qcdc।

জ্ঞাত বাগ:

  1. বড় হাতের অক্ষর রূপান্তর করে না
  2. `অন্তর্ভুক্ত করে এবং এটি থেকে / এ রূপান্তর করে।
  3. অ-অ্যাস্কি অক্ষরকে রূপান্তর করে না (åäö)
  4. স্পেস মুদ্রণ করে না।
  5. বিরামচিহ্ন পরিচালনা করতে পারে, তবে উপেক্ষা করতে পারে - আমি এটি গণনা না করা বেছে নিই, তবে আমি যদি আমার অনুপাত 0.027 এ চলে যাই)

আমি ইচ্ছাকৃতভাবে বাগগুলি নিয়ে আসার পক্ষে খুব ভাল নই।

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