একাধিক পছন্দ পরীক্ষা প্রতারণা


41

ভূমিকা

অধ্যয়নকালে, আমি একাধিক পছন্দ পরীক্ষার প্রতারণার বিভিন্ন উপায় নিয়ে আসার চেষ্টা করেছি। এটি মূলত একাধিক পছন্দ উত্তরের সংকোচিত সংস্করণ। পদ্ধতিটি নিম্নলিখিত হিসাবে রয়েছে:

পরীক্ষার উত্তর:

BCAABABA

এগুলিকে 3 টি ভিন্ন অ্যারেতে রূপান্তর করা যেতে পারে, যা সত্য বা মিথ্যা নির্দেশ করে যদি বর্তমান বর্ণটি উত্তর হয়:

    B  C  A  A  B  A  B  A
A: [0, 0, 1, 1, 0, 1, 0, 1]
B: [1, 0, 0, 0, 1, 0, 1, 0]
C: [0, 1, 0, 0, 0, 0, 0, 0]

এই সংখ্যাগুলি বাইনারি হিসাবে ব্যাখ্যা করা এটি অনেকটা সংকোচিত করবে। তবে এটি আসলে আরও কিছুটা সংকুচিত হতে পারে। আপনি যদি এ এবং বি এর অবস্থানগুলি জানেন তবে আপনার সি এর জন্য পজিশনের দরকার নেই এটি কিছুটা অপারেটর দিয়ে করা যাবে না:

A: [0, 0, 1, 1, 0, 1, 0, 1]
B: [1, 0, 0, 0, 1, 0, 1, 0]

A+B: [1, 0, 1, 1, 1, 1, 1, 1]
C:   [0, 1, 0, 0, 0, 0, 0, 0]

অ্যারে A এবং B কে বাইনারি সংখ্যায় রূপান্তর করার ফলে ফলাফল হবে:

A: 00110101
B: 10001010

তার মানে 8 টি একাধিক পছন্দ উত্তর দুটি বাইটে সংকুচিত করা যায়!


কার্য

বাইনারিতে দুটি সংখ্যা দেওয়া হয়েছে বা একই দৈর্ঘ্যের সাথে কেবল 0 এবং 1 এর সমন্বয়ে দুটি অ্যারে দেওয়া হয়েছে, একাধিক পছন্দ উত্তরগুলি আউটপুট করুন


বিধি

  • ইনপুট আপনাকে ভাল লেগে থাকলে লাইক কোনো আকারে থাকতে পারে [1, 0, 0, 1]বা 1001
  • আপনি কোনও প্রোগ্রাম বা একটি ফাংশন সরবরাহ করতে পারেন।
  • আপনি ধরে নিতে পারেন যে ইনপুটটি সর্বদা বৈধ।
  • আপনি ফাঁকা স্থান ইত্যাদির সাথে পৃথক করে একটি তালিকা হিসাবে আউটপুটও করতে পারেন etc.
  • একাধিক পছন্দ উত্তরগুলি কেবলমাত্র এর, বি এবং সি এর অন্তর্ভুক্ত। তবে আপনি এর পরিবর্তে লোয়ার কেস ব্যবহার করতে পারেন।
  • এটি , তাই সর্বনিম্ন পরিমাণ বাইটের সাথে জমাটি জয়!

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

Input: [1, 0, 0, 1, 0, 0, 1] [0, 1, 0, 0, 1, 0, 0]
Output: ABCABCA

Input: [0, 0, 0, 0, 1, 0, 1, 1] [1, 0, 1, 0, 0, 0, 0, 0]
Output: BCBCACAA

Input: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Output: CCCCCCCCCC

লিডারবোর্ড

var QUESTION_ID=69770,OVERRIDE_USER=34388;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://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;font-family:Arial}#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>


75
এখানে আমার সমাধান। এটি ইংরেজী ভাষায় লিখিত (আপনি যেখানেই থাকুন দোভাষী মুক্তভাবে উপলভ্য) এবং রয়েছে Study.। ছয় বাইট। যে বীট.
কনার ও'ব্রায়ান

58
@ সিও'বিʀɪᴇɴ দুঃখের বিষয়, ইংরেজি কোনও প্রোগ্রামিং ভাষার মান আমাদের মেটায় না এবং তাই এটি বৈধ জমা নেই: পি
আদনান

17
উত্তরটি বেস 3 হিসাবে ব্যাখ্যা করে আপনি আটটি একাধিক পছন্দের প্রশ্নটি 1.625 বাইট (13 বিট) থেকে সংক্ষিপ্ত করতে পারেন, তাই প্রযুক্তিগতভাবে এটি সবচেয়ে কার্যকর পদ্ধতি নয়। : P: P
Doorknob

4
ক, খ, সি বা ডি উত্তরের জন্য দুটি বিট, 00, 01, 10, 11 এর চারটি সংমিশ্রণ ব্যবহার করে আপনি একই জায়গাতে আরেকটি উত্তর যুক্ত করতে পারেন। আপনি ১১ ব্যবহার করছেন না
ফিলিপ হাগলুন্ড

5
ইংরাজী সমস্ত মানদণ্ড পূরণ করে। কেবলমাত্র সমস্যাটি হ'ল এই প্রশ্ন জিজ্ঞাসার আগে কোনও দোভাষী পাওয়া যায় না।
jimmy23013

উত্তর:


50

জেলি, 7 6 বাইট

_/ị“ḃ»

ফোনে টাইপ করা হচ্ছে। বিবরণ যোগ করবে।

(1,0)যাও A, (0,1)যাও B, এবং (0,0)যাও C। জেলিতে অ্যারেগুলি 1-ভিত্তিক, এবং সূচীকরণ কার্যটি চক্রাকারে কাজ করে। সুতরাং, আমরা কেবল ইনপুট উপরের বিয়োগফল ভাঁজ করতে পারেন।

_              [vectorized] subtraction
_/             Fold subtraction over the input
   “ḃ»         "ABC" compressed. '»' terminates a compressed string.
  ị            Vectorized cyclic index.

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


54
পৃথিবীতে কীভাবে আপনি একটি ফোনে টাইপ করেছিলেন? ওও
কনওর ও'ব্রায়েন

34
স্যামসাংয়ের ক্লিপবোর্ডের ইতিহাস। এটা সহজ ছিল না।
lirtosiast

9
: -ডিডি এবং 10 কে সংকেত!
লুইস মেন্ডো

7
লল, এখন ইংরেজির মতো একই আকার @ CᴏɴᴏʀO'Bʀɪᴇɴ
আরকে।

13
আমি "স্টাডি" আমার উত্তর গল্ফ; ব্যাকরণগত ভুল সহ ঠিক আছে এমন দোভাষী আমি ব্যবহার করছি। @RK।
কনর ও'ব্রায়ান

12

রেটিনা , 44 বাইট

T`d`BA
B(?=(.)* .*B(?<-1>.)*(?(1)!)$)
C
 .+

পেছনের লাইনফিডটি তাৎপর্যপূর্ণ। ইনপুট মত

001101010 100010100

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

ব্যাখ্যা

T`d`BA

0এর মধ্যে Bএবং 1এর মধ্যে চালু করে শুরু করুন A। যে প্রথমার্ধে সঠিক ব্যতীত এটি তালিকাবদ্ধ করে তোলে, Bযখন এটি থাকা উচিত C। দ্বিতীয় স্ট্রিংয়ের একই পজিশনে একই অবস্থান Bরয়েছে কিনা তা যাচাই করে আমরা সেই ভুলগুলি সনাক্ত করতে পারি B:

B(?=(.)* .*B(?<-1>.)*(?(1)!)$)
C

লুয়াহেড এই দু'জনের অবস্থানের সাথে মিলে যায় এমন একটি ক্লাসিক ভারসাম্য গোষ্ঠী গণনা কৌশল B(.)*গন্য প্রথম পর সাফিক্স Bগ্রুপ সম্মুখের এক ক্যাপচার ধাক্কা দিয়ে 1প্রতিটি অক্ষর জন্য। তারপরে (?<-1>.)*group গোষ্ঠী থেকে আবার পপ হয়। $নিশ্চিত করে যে আমরা যে ভালো স্ট্রিংয়ের শেষ প্রান্ত পৌঁছতে পারে, এবং (?(1)!)নিশ্চিত আমরা আসলে সমগ্র গ্রুপ হ্রাসপ্রাপ্ত করেছি যে।

অবশেষে, আমরা পৃথককারী স্থান এবং দ্বিতীয় স্ট্রিং থেকে মুক্তি পাব:

 .+


1
পোস্টের প্রথম 15 সেকেন্ডে 3 টি আপভোট; এটি অবশ্যই একরকম রেকর্ড হতে হবে।
কনর ও'ব্রায়ান

8
@ সিও'বি ফ্ল্যাটারিং, তবে আমি অবাক হই যে এই 3 টি আপভোটারের মধ্যে 15 টি সেকেন্ডে উত্তরটি কীভাবে পড়ে এবং বুঝতে পেরেছিল? : /
মার্টিন এন্ডার

4
আমি করেছিলাম. আমি বরং রেজেক্স এবং রেটিনা পড়ার ক্ষেত্রে সাবলীল।
কনর ও'ব্রায়ান


11

জাভাস্ক্রিপ্ট ES6, 36 বাইট

(a,b)=>a.map((x,y)=>"CBA"[x*2+b[y]])

খুব সহজ, এবং সম্ভবত বুঝতে যথেষ্ট স্পষ্ট: প্রতিটি আইটেম মানচিত্র করুন এবং ইনডেক্স ইন aচার্জ ইন ইনডেক্স ( x*2ইনডেক্স yইন ইনডেক্স ইন b) "CBA"


7
যোগ এই 3: আপনার ungolfed সংস্করণের
কোনোর ব্রায়েন

2
@ CᴏɴᴏʀO'Bʀɪᴇɴ তিনি এটি CBAকরতে হবে। এছাড়াও, তিনি যেভাবেই পারেন না, কারণ doএটি একটি সংরক্ষিত কীওয়ার্ড, সুতরাং এটি অবৈধ সিনট্যাক্স।
প্যাট্রিক রবার্টস

@ পেট্রিক সহজ ফিক্স: করুন (...)
কনর ও'ব্রায়ান

11

এমএটিএল , 14 9 বাইট

2*+ 67w-c

বর্তমান সংস্করণ ব্যবহার করে (10.1.0)

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

ব্যাখ্যা

কোডটি কী করে তার সংক্ষিপ্তসার

2*       % implicitly input array and multiply it by 2
+        % implicitly input array and add it to the first one
67w-    % subtract from 67
c        % convert to char. Implicitly display

এটি কীভাবে কাজ করে তার বিশদ বিবরণ

2        % Push number 2 onto the stack
*        % Multiply the top two stack elements. Since there's only one
         % element, this triggers implicit input of a (yet inexistent)
         % element below the existing one. This is the first input array,
         % which will be called "A". Both "A" and number 2 are consumed,
         % and the array 2*A is left on the stack.
+        % Add the top two stack elements. Again, since there's only
         % one element (namely array 2*A) this triggers implicit input
         % of the second array, call it "B". Both 2*A and B are consumed
         % and 2*A+B is left on the stack
         % A blank space is needed after the "+" symbol to prevent it from
         % being interpreted as part of number "+67"
67       % Push number 67 onto the stack. The stack now contains, bottom
         % to top, 2*A+B and 67.
w        % Swap top two elements. The stack now contains 67 and 2*A+B
-        % Subtract top two elements. These are consumed and the result
         % 67-A*B is left on the stack
c        % Convert to char array, interpreting each number as ASCII code.
         % Number 67 corresponds to letter 'C'. Therefore at positions
         % where both arrays A and B were 0 this gives 'C' as result.
         % Where A was 1 and B was 0, i.e. 2*A+B is 2, this gives 'A'.
         % Where A was 0 and B was 1, i.e. 2*A+B is 1, this gives 'B'.
         % The stack contents, namely this char array, are implicitly
         % displayed at the end of the program.

এটা চমৎকার! এটি কেন কাজ করে সে সম্পর্কে আপনি আরও কিছু লিখতে পারেন? 67 কেন? এবং কীভাবে 2 দিয়ে ইনপুট অ্যারে গুণ করে এবং তারপরে ইনপুট অ্যারে যুক্ত করবে 3 দ্বারা গুণিত ইনপুট অ্যারে?
ভিনসেন্ট

1
@ ভিনসেন্ট শিওর! আমি দিনের পরে আরও কিছু বিশদ ব্যাখ্যা যুক্ত করব
লুইস মেন্ডো

@ ভিনসেন্ট হয়ে গেছে! এটি এখন আরও পরিষ্কার হয় কিনা আমাকে জানান
লুইস মেন্ডো

10

জাভা, 81 বাইট

ইতিমধ্যে বিদ্যমান জাভা সমাধানটি মন্তব্য করার কোনও খ্যাতি নেই, সুতরাং এখানে যায়:

void x(int[]a,int[]b){int j=0;for(int i:a)System.out.printf("%c",67-2*i-b[j++]);}

1
এটি স্মার্ট। : ডিআই পছন্দ। আমি দেখতে পাচ্ছি যে আপনি কিশোর কিশোর অনুপ্রেরণা পেয়েছেন though ;)
অ্যাডিসন ক্র্যাম্প

1
জঘন্য, যে চালাক। আমি কীভাবে ফিট করে
ফোরচ

9

ব্রেনফাক, 52 বাইট

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

এমন একটি দোভাষী দরকার যা আপনাকে ঘর 0 থেকে বাম দিকে যেতে দেয় এবং 8-বিট মোড়ানোর ঘর রয়েছে। আমার বেশিরভাগ উত্তরের মতো নয়, ইওএফ আচরণের কোনও বিষয় নেই।

0xFFডিলিমিটার হিসাবে বাইট ইনপুট নেয় । "টেস্ট কেসগুলি" এর অধীনে প্রথম ইনপুট উপস্থাপন করে বাইটের একটি স্ট্রিম এটির মতো দেখাবে:

0x01 0x00 0x00 0x01 0x00 0x00 0x01 0xFF 0x00 0x01 0x00 0x00 0x01 0x00 0x00

আমি না থাকার একটি দম্পতি বাইট বাঁচাতে পারে 0x00একটি বিভেদক হিসেবে এবং ব্যবহার 0x01এবং 0x02যথাক্রমে 0 হিসাবে এবং 1, কিন্তু প্রতারণার মতো অনুভূত: পি

একবার আমি আমার কৌশলটি বের করে ফেললাম, এই প্রোগ্রামটি লেখা খুব সহজ ছিল। আউটপুটে নবম বর্ণটি সন্ধানের জন্য, 0x43(এএসসিআইআই-তে মূলধন সি) দিয়ে শুরু করুন এবং বিয়োগ করুন (প্রথম অনুক্রমের নবম উপাদান) * 2 + দ্বিতীয় তৃতীয় ক্রমের উপাদান

এটির মূল্যের জন্য, এখানে 52 বাইট প্রোগ্রামটি 3 লাইনে বিভক্ত হয়েছে এবং কয়েকটি শব্দ রেখে:

Get input until hitting a 255 byte; put a 67 byte to the right of each one
,+[->>----[<--->----],+]

For each 67 byte: Subtract (value to the left)*2 from it
<[<[>--<-]<]

For each byte that used to contain 67: Subtract input and print result
>>[<,[>-<-]>.>>]

9

হাস্কেল, 29 বাইট

zipWith(\x y->"BCA"!!(x-y+1))

একটি বেনামী ফাংশন। এর মতো ব্যবহার করুন:

>> zipWith(\x y->"BCA"!!(x-y+1)) [1, 0, 0, 1, 0, 0, 1] [0, 1, 0, 0, 1, 0, 0]
"ABCABCA"

আমি ফাংশনটি পয়েন্ট-ফ্রি করার চেষ্টা করেছি তবে পুরো গণ্ডগোল পেয়েছি।


6
সমান দৈর্ঘ্যের একটি বিন্দু মুক্ত সংস্করণ:zipWith((!!).(["CB","AC"]!!))
নিমি

8

পাইথ, 18 16 10 বাইট

3 তম প্রচেষ্টা: 10 বাইট

FryAmTheEggman এর অস্তিত্ব সম্পর্কে মনে করিয়ে দেওয়ার জন্য ধন্যবাদ G!

VCQ@<G3xN1

ইনপুটটি [[0,0,1,1,0,1,0,1], [1,0,0,0,1,0,1,0]] রূপের, যা মূলত একটি ম্যাট্রিক্স: সারি প্রশ্ন নম্বর জন্য পছন্দ এবং কলাম জন্য।

হাতে সংকলিত পাইথোনিক সিউডোকোড:

              G = "abcdefghijklmnopqrstuvwxyz"    // preinitialized var
VCQ           for N in transpose(Q):    // implicit N as var; C transposes 2D lists
   @<G3           G[:3][                // G[:3] gives me "abc"
       xN1            N.index(1)        // returns -1 if no such element
                  ]

2 তম চেষ্টা: 16 বাইট

VCQ?hN\A?.)N\B\C

ইনপুটটি [[0,0,1,1,0,1,0,1], [1,0,0,0,1,0,1,0]] রূপের, যা মূলত একটি ম্যাট্রিক্স: সারি প্রশ্ন নম্বর জন্য পছন্দ এবং কলাম জন্য।

এটি সংকলন

assign('Q',Pliteral_eval(input()))
for N in num_to_range(Pchr(Q)):
   imp_print(("A" if head(N) else ("B" if N.pop() else "C")))

ঠিক আছে, আমি জানি যে অগোছালো দেখাচ্ছে, তাই আসুন হাতের সংকলন পাইথোনিক সিউডোকোডে

                 Q = eval(input())
VCQ              for N in range transpose(Q): // implicit N as var; transposes 2D lists
   ?hN               if head(N):              // head(N)=1st element of N
      \A                 print("A")           // implicit print for expressions
                     else:
        ?.)N             if pop(N):
            \B               print("B")
                         else:
              \C             print("C")

1 প্রচেষ্টা: 18 বাইট

V8?@QN\A?@Q+8N\B\C

[0,0,1,1,0,1,0,1,1,0,0,0,0,1,0,1,0] ফর্মটির ইনপুট সহ, দুটি তালিকার মূলত সংক্ষেপণ। এটি সংকলন

assign('Q',Pliteral_eval(input()))
for N in num_to_range(8):
   imp_print(("A" if lookup(Q,N) else ("B" if lookup(Q,plus(8,N)) else "C")))

আবার, হাতে হাতে সংকলন

                   Q = eval(input())
V8                 for N in range(8):
  ?@QN                 if Q[N]:
      \A                  print("A")
                       else:
        ?@Q+8N            if Q[N+8]:
              \B              print("B")
                          else:
                \C            print("C")

এবং আমার জীবনের প্রথম কোডগল্ফ আছে !!! আমি গতকাল পাইথ শিখেছি, এবং এই প্রথম কোনও কোড গল্ফে অংশ নিয়েছিলাম।


প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম! এটি প্রথমবারের জন্য খুব সুন্দর দেখাচ্ছে, +1
আদনান

কাউকে পাইথ শিখতে দেখে সর্বদা সুন্দর! আপনি হতে গল্ফ .)করতে পারেন e, এবং আমার মনে হয় এটি আরও কিছুটা গল্ফ করা যেতে পারে। ভেরিয়েবলটি বিবেচনা করুন Gযাতে নিম্ন কেস বর্ণমালা থাকে, আমি বিশ্বাস করি আপনি এটি ব্যবহার করে প্রায় 10 বাইট পেতে পারেন, সুখী গল্ফিং! :)
FryAmTheEggman

নিবন্ধন করুন আমি কয়েক মিনিটের জন্য এটি অনুসন্ধান ছিল! এছাড়াও, জি সম্পর্কে মনে করিয়ে দেওয়ার জন্য আপনাকে ধন্যবাদ। আপনি ঠিক বলেছেন, 10 বাইট!
বুসুকসুয়ান

7

পাইথন 3, 39 বাইট

FryAmTheEggman কে 1 বাইট সংরক্ষণ করা হয়েছে।
হিস্টোক্র্যাটকে ধন্যবাদ 2 বাইট সংরক্ষণ করা হয়েছে।

কিছুক্ষণের মধ্যে একটি ওলাইনারের সাহায্যে সমাধান করতে সক্ষম হননি!

lambda*x:['CBA'[b-a]for a,b in zip(*x)]

আমার পরীক্ষার মামলা এখানে। আমি যেভাবে এই ফাংশনটি ডেকে নিচ্ছি তা এটিও দেখায়।

assert f([1,0,0,1,0,0,1], [0,1,0,0,1,0,0]) == ['A', 'B', 'C', 'A', 'B', 'C', 'A']
assert f([0, 0, 0, 0, 1, 0, 1, 1], [1, 0, 1, 0, 0, 0, 0, 0]) == ['B', 'C', 'B', 'C', 'A', 'C', 'A', 'A']
assert f([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) == ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C']

এটি zipঅ্যারে জুড়ে পুনরাবৃত্তি করে জোড়ায় ব্যবহার করে, এবং তারপরে সঠিক অক্ষরটি বেছে নেওয়ার জন্য একটি স্ট্রিংয়ের সূচী হয়। এই সমস্ত তালিকা বোধগম্যতে ঘটে তাই এটি স্বয়ংক্রিয়ভাবে একটি তালিকাতে পরিণত হয়। এই সমাধান কোর যে শুধুমাত্র সম্ভাব্য সমাহার aএবং bহয় [0, 1], [1, 0], [0, 0]। সুতরাং আমরা যদি তাদের বিয়োগ করি তবে আমরা একটি পাই -1, 0, 1যা আমাদের যথাক্রমে সর্বশেষ, প্রথম, মধ্যম উপাদান পায়।



5

রুবি, 35 বাইট

->a,b{a.zip(b).map{|x,y|:CAB[x-y]}}

ব্যবহার:

->a,b{a.zip(b).map{|x,y|:CAB[x-y]}}[[1,0,0],[0,1,0]]
=> ["A", "B", "C"]

"সিএবি" এর শূন্য-সূচকযুক্ত অক্ষর (xy) নেয়। (1-0) 1 দেয়, এবং এ। (0-0) 0 দেয়, এবং এভাবে সি (0-1) -1 দেয়, যা বি এর চারপাশে আবৃত হয়

ওয়েয়ার্ড আউটপুট সহ বিকল্প সংক্ষিপ্ততর সমাধান:

->a,b{a.zip(b){|x,y|p :CAB[x-y]}}

আউটপুটটি নতুন লাইনের দ্বারা পৃথক স্ট্রিংগুলিকে উদ্ধৃত করা হয়েছে, যা একরকম খুব দূরে একটি সেতু বলে মনে হচ্ছে।



4

অক্টাভা, 19 বাইট

@(x,y)[67-y-2*x,'']

টেস্ট:

f([1 0 0 0 1 1],[0 1 0 0 0 0])
ans = ABCCAA

আমার সামনে একটি কম্পিউটার থাকলে আমি পরে একটি ব্যাখ্যা যুক্ত করব। এটি আমার কোষে অষ্টাভ-অনলাইন- এ লেখা এবং পরীক্ষিত হয়েছিল ।


4

টিআই-বেসিক, 59 57 50 37 36 বাইট

থেকে একটি তালিকা নেয় Ansএবং অন্যটি থেকে Prompt L₁। ব্রাঞ্চিং থেকে স্যুইচ করার থমাস কোয়ার পরামর্শের জন্য 13 বাইট সংরক্ষণ করা হয়েছে sub(

Prompt X
For(A,1,dim(∟X
Disp sub("ACB",2+∟X(A)-Ans(A),1
End

টমাস কোওয়া আগামীকাল মন্তব্যে কী বলেছিলেন তা আমাকে দেখতে হবে। ¯ \: _ (ツ): _ / ¯


আপনার এখনও কিছু বাট বাঁচানোর আছে! Prompt L₁সাথে Prompt Xএবং L₁সাথে প্রতিস্থাপন করুন ∟X। আরও কিছু আছে, তবে আমি আপনাকে এটি খুঁজে দেব let
লিটারোসিয়াস্ত

@ থমাসকওয়া এল 1 হ'ল এক-বাইট টোকেন, সর্বশেষে আমি যাচাই করেছিলাম। তালিকার সাথে আবার এটি উল্লেখ করা + এক্স দুটি বাইট হবে ... আমি কি সঠিক না?
কনর ও'ব্রায়ান

এল 1 দুটি বাইট।
lirtosiast

পুনঃটুইট Dang।
কনর ও'ব্রায়ান

আমি বর্তমানে 37 বাইট গণনা করি। (আপনি 35 পেতে পারেন)
lirtosiast

4

মরিচা, 79

শেপমাস্টারকে ধন্যবাদ 8 বাইট সংরক্ষণ করা।
23 বাইট সংরক্ষণের জন্য ধন্যবাদ সংরক্ষণ করা।

আমি ইতিবাচক এটি অনেকটা দম্পতি হতে পারে, কিন্তু একটি সম্পূর্ণ মরিচা প্রোগ্রাম লিখতে এটি আমার প্রথমবার।

fn b(a:&[&[u8]])->Vec<u8>{a[0].iter().zip(a[1]).map(|(c,d)|67-d-c*2).collect()}

যেহেতু কেউ এটি সঙ্কুচিত করার চেষ্টা করতে চায় সে ক্ষেত্রে এখানে অলগল্ড কোড এবং পরীক্ষার কেস রয়েছে।

fn b(a:&[&[u8]])->Vec<u8>{
    a[0].iter().zip(a[1]).map(|(c,d)|67-d-c*2).collect()
}
fn main() {
    assert_eq!("ABCABCA", b(&[&[1, 0, 0, 1, 0, 0, 1], &[0, 1, 0, 0, 1, 0, 0]]));
    assert_eq!("BCBCACAA", b(&[&[0, 0, 0, 0, 1, 0, 1, 1], &[1, 0, 1, 0, 0, 0, 0, 0]]));
    assert_eq!("CCCCCCCCCC", b(&[&[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], &[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]));
}

আমার পাইথন উত্তরের সাথে মতামতটি বেশ মিল similar মূল পার্থক্য হ'ল আমি সরাসরি স্ট্রিংগুলি সূচী করতে পারি না, তাই আমি c-dকৌশলটি করতে পারি না ।


কোনও ফাংশনের পরিবর্তে ক্লোজার ব্যবহার করা কি আইনী হবে? তারপরে আপনি ঘোষণাপত্রে সমস্ত ধরণের এড়িয়ে যেতে পারেন এবং পাস a[0]এবং a[1]দুটি পৃথক যুক্তি হিসাবে।
oli_obk

এছাড়াও ব্যবহার 64-y-2*xঅক্টেভ সমাধান থেকে কৌতুক ব্যবহার করতে সক্ষম হচ্ছে কারণে বেশ কিছু বাইট সংরক্ষণ u8পরিবর্তে usize: is.gd/GNPK76
oli_obk

@ker আমি কোনও ক্লোজার ব্যবহার সম্পর্কে সম্পূর্ণ নিশ্চিত নই। আমি ধরে নিব এটি ঠিক আছে, কারণ এটি মূলত একটি বেনাম ফাংশন, তাই না?
মরগান থ্রাপ

যতক্ষণ না আপনি কোনও আশেপাশে ক্যাপচার করবেন না ঠিক তেমনি এটি একটি বেনাম ফাংশনের মতো।
oli_obk

@ker তারপর হ্যাঁ, বন্ধটি ঠিকঠাক হওয়া উচিত।
মরগান থ্রাপ

4

Vitsy, 40 বাইট

দীর্ঘশ্বাস ফেলে আমার বাচ্চা অ্যারে ম্যানিপুলেশন করার জন্য তৈরি করা হয়নি।

একটি অগ্রণী সঙ্গে STDIN (কিছু আমি কখনই না করি) মাধ্যমে ইনপুট আশা করে "

WX&WXl\[68*-1+m]
?68*-2*"C"-i*O?
"B"O?X?

(শীঘ্রই উপলভ্য) ভার্ভোস মোডে ব্যাখ্যা:

0:
STDIN;
remove top;
make new stack;
STDIN;
remove top;
push length of stack;
repeat next instruction set top times;
begin recursive area;
push 6;
push 8;
multiply top two;
subtract top two;
push 1;
add top two;
goto top method;
end recursive area;
1:
rotate right a stack;
push 6;
push 8;
multiply top two;
subtract top two;
push 2;
multiply top two;
toggle quote;
push cosine of top; // this is character literal "C"
toggle quote;
subtract top two;
push input item;
multiply top two;
output top as character;
rotate right a stack;
2:
toggle quote;
B;
toggle quote;
output top as character;
rotate right a stack;
remove top;
rotate right a stack;

লোকেরা, এটি শীঘ্রই আরও ভাল বাস্তব হয়ে উঠছে। আমি এর বর্তমান দৈর্ঘ্যের জন্য দুঃখিত।

মূলত, আমি ইনপুটটিকে স্ট্রিং হিসাবে গণ্য করি এবং তারপরে সেখান থেকে হেরফের করি।

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


: হে ভার্বোস মোড না হওয়া পর্যন্ত অপেক্ষা করা যায় না। এটি আকর্ষণীয় হবে। ব্যবহারের মতো W!
কনর ও ব্রায়ান

@ অ্যাডানান এটি ট্রাইটোনলাইনের ইনপুট ট্যাব, তবে স্থানীয় দোভাষীর উপর, প্রোগ্রামটি চালান এবং প্রোগ্রামটি চলমান চলাকালীন ( Wপ্রযুক্তিগতভাবে প্রম্পট থাকে) একটি 0 এবং 1 এর প্রতিটি সেট একটি শীর্ষস্থানীয় "এবং একটি ট্রেলিং নিউলাইন দিয়ে ইনপুট করুন
অ্যাডিসন ক্র্যাম্প

আহ, আমি আর্গুমেন্ট বিভাগে ইনপুট দিয়েছি: পি। সুন্দর উত্তর যদিও :)
আদনান

@ আদনান এটি বের করতে আমার কিছুটা সময় লেগেছে - ভিটসি অটোপার্সেস ইনপুট যদি তা বুঝতে পারে যে এটি দ্বিগুণ। প্রযুক্তিগতভাবে সংখ্যা বাদে আপনি কিছু শীর্ষস্থানীয় থাকতে পারেন এবং এটি একই কাজ করবে the
অ্যাডিসন ক্রম্প 14

হেই, এটি বেশ অদ্ভুত, তবে অন্যদিকে এটি কার্যকর হতে পারে।
আদনান

3

সিজেম, 10 বাইট

'Cq~z2fbf-

দুটি তালিকার তালিকা হিসাবে ইনপুট, যেমন

[[1 0 0 1 0 0 1] [0 1 0 0 1 0 0]]

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা

একটি বেস-2 সংখ্যা বিট হিসাবে জোড়া চিকিত্সারত আমরা পেতে 2জন্য A, 1জন্য Bএবং 0জন্য C

'C  e# Push the character C.
q~  e# Read and evaluate input.
z   e# Transpose the pair of lists to get a list of pairs.
2fb e# Convert each pair from base 2.
f-  e# Subtract each result from the character C.

3

পাইথন 3, 48 45 বাইট

আমি ভেবেছিলাম আমার একটি মার্জিত সমাধান রয়েছে, তারপরে আমি @ মরগান থ্রাপের উত্তরটি দেখেছি ...

সম্পাদনা করুন: উল্লিখিতভাবে তিনটি বাইট সংরক্ষণ করা হয়েছে।

lambda*x:['A'*a+b*'B'or'C'for a,b in zip(*x)]

lambda *x:[a*'A'or b*'B'or'C'for a,b in zip(*x)]


আহ ভাল। দেখেনি lamba*x:। আমি সর্বদা মনে করি এটি কমপ্যাক্ট হিসাবে যতটা হতে পারে তারপরে আমাকে বলা হয় / আরও কৌশল খুঁজে পাওয়া যায়। আমি আপনার সমাধানটি বিটিডব্লিউ সত্যিই পছন্দ করি, খুব সুন্দর।
ওগাদে

3

জাভা, 131 122 110 90 বাইট

সম্পাদনা: সাহায্য এবং অনুপ্রেরণার জন্য বিফ্জ / ফ্ল্যাগএএসপ্যামকে ধন্যবাদ

void x(int[]a,int[]b){int j=0;for(int i:a){System.out.print(i>0?"A":b[j]>0?"B":"C");j++;}}

প্রথম জমা, নিষ্পাপ জাভা সমাধান। প্রায় অবশ্যই উন্নতি করা যেতে পারে :)

static String x(int[]a,int[]b){String o="";for(int i=0;i<a.length;i++)o+=a[i]>0?"A":b[i]>0?"B":"C";return(o);} 


==1হতে পারে >0; আপনার মুদ্রণের চেয়ে ও ফিরাই ভাল।
lirtosiast

কীভাবে: void x(int[]a,int[]b){for(int i=0;i<a.length;i++)System.out.print(a[i]>0?"A":b[i]>0?"B":"C");}(94 বাইট)? ফাংশনগুলির জন্য আপনার স্থির ঘোষণার দরকার নেই।
অ্যাডিসন ক্রম্প

আপনাকে প্রথমে আমি ঘোষণা করতে হবে, +4 বাইট: ডি
বিফজ

3

আর 29 16 বাইট

LETTERS[3-2*A-B]

আমি অন্য প্রতিযোগিতায় এটি সাধারণ দেখতে পেয়েছি বলে ফাংশনটির ঘোষণা মুছে ফেলা হয়েছে।


2

পাওয়ারশেল, 40 বাইট

param($a,$b)$a|%{"CBA"[2*$_+$b[++$d-1]]}

দুটি সুস্পষ্ট অ্যারে হিসাবে ইনপুট নেয়, যেমন। PS C:\Tools\Scripts\golfing> .\cheating-a-multiple-choice-test.ps1 @(1,0,0,1,0,0,1) @(0,1,0,0,1,0,0)এবং তাদেরকে দোকানে $aএবং $b। এর পরে, মাধ্যেমে লুপ $aসঙ্গে $a|{...}। প্রতিটি লুপ, আমরা স্ট্রিংয়ের "CBA"সাথে সূচকযুক্ত একটি অক্ষর আউটপুট করি , বর্তমান সূচকটি দ্বিগুণ দ্বারা নির্ধারিত সূচক $_সহ, $bআমাদের সহায়ক ভেরিয়েবল দ্বারা সূচকের মান যা পূর্ব-যুক্ত হয়ে পরে বিয়োগফল হয়।

উদাহরণস্বরূপ, প্রথম পরীক্ষার ক্ষেত্রে, $a = @(1,0,0,1,0,0,1)এবং $b = @(0,1,0,0,1,0,0)। প্রথম লুপ পুনরাবৃত্তির হয়েছে $_ = 1, $d = $null(যেহেতু $dপূর্বে ঘোষণা করা হয়নি)। আমরা $dএখনই প্রি-অ্যাড করি $_ = 1এবং $d = 1(পাওয়ারশেলের মধ্যে $null + 1 = 1), যার অর্থ $b[1-1] = $b[0] = 0। তারপরে 2 * 1 + 0 = 2, তাই আমরা সূচক "CBA"[2], বা A



2

আর 36 34 বাইট

function(a,b)c('B','C','A')[a-b+2]

অপ্রয়োজনীয় ধনুর্বন্ধনী অপসারণ করে দুটি বাইট সংরক্ষণ করা হয়েছে


ফাংশন সংজ্ঞাতে বন্ধনীগুলি সরিয়ে আপনি দুটি বাইট সংরক্ষণ করতে পারেন। এগুলি প্রয়োজনীয় নয় যেহেতু ফাংশন বডিটিতে একটি বিবৃতি থাকে।
অ্যালেক্স এ।

2

পার্ল 5 - 47

ইতিমধ্যে 30 উত্তর এবং কোন পার্ল? এখানে প্রথমে একটি নির্দোষ প্রচেষ্টা :-) কেবলমাত্র ফাংশন:

sub x{($g,$h)=@_;map{$_?a:$h->[$i++]?b:c}@{$g}}

ব্যবহার:

@f = (0, 0, 0, 0, 1, 0, 1, 1);
@s = (1, 0, 1, 0, 0, 0, 0, 0);

print x(\@f, \@s);

আমি পুরোপুরি নিশ্চিত যে রেইগেক্সের সাথে আরও ভাল কিছু করা যেতে পারে তবে আমি কীভাবে তা খুঁজে পেলাম না।


1

জাভাস্ক্রিপ্ট ES6, 75 বাইট

অ্যারের আর্গুমেন্টের পরিবর্তে পূর্ণসংখ্যার তর্কগুলি গ্রহণ করার জন্য আমি অতিরিক্ত মাইল গেলাম।

(a,b)=>[...Array(8)].map((_,n)=>'CBA'[(a&(s=128>>n)*2+b&s)/s]).join('')

ব্যাখ্যা:

(a,b)=>              // input of two integers representing 8 answers (max value 255 each)
[...Array(8)]        // generates an array with 8 indices that allows .map() to work
.map((_,n)=>         // n is each index 0-7
'CBA'[...]           // reading character from string via index reference
      (...)          // grouping for division
       (a&...)       // AND operator to test if answer is A
          (s=128>>n) // calculating binary index in integer input and storing reference
       *2            // bias index in 'CBA' so truthy is 2 instead of 1
       +(b&s)        // AND operator to test if answer is B
      /s             // divide by binary index to convert AND operators to increments of 1
.join('')            // convert to string without commas

স্ট্রিং ইনডেক্সিং লজিকের জন্য @ETH প্রোডাকশনগুলিতে ক্রেডিট।

এখানে পরীক্ষা

f=(a,b)=>[...Array(8)].map((_,n)=>'CBA'[((a&(s=128>>n))*2+(b&s))/s]).join('');

console.log(f(0b01001001, 0b00100100));
console.log(f(0b00001011, 0b10100000));
console.log(f(0b00000000, 0b00000000));
<!-- results pane console output; see http://meta.stackexchange.com/a/242491 -->
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>

Pssst

3 অতিরিক্ত বাইটের জন্য, এটি 30 টি পর্যন্ত উত্তরের জন্য উপস্থাপনাটি প্রদর্শন করতে পারে:

(a,b)=>[...Array(30)].map((_,n)=>'CBA'[((a&(s=1<<30>>n))*2+(b&s))/s]).join('')


1

লুয়া, 87 বাইট

কেবল অ্যারেগুলিতে মানগুলি পরীক্ষা করা, এবং কনক্যাটেনেটিং A, Bবা C

function f(a,b)s=""for i=1,#a do s=s..(0<a[i]and"A"or 0<b[i]and"B"or"C")end print(s)end

1

এফ #, 33 বাইট

Seq.map2(fun a b->67-a*2-b|>char)

এটি একটি আংশিকভাবে প্রয়োগ ফাংশন যা দুটি আন্ত ক্রম গ্রহণ করে - দুটি অ্যারে সূক্ষ্মভাবে কাজ করে - এবং সঠিক উত্তরগুলি উপস্থাপন করে অক্ষরের নতুন ক্রম দেয়। =)


1

গম্ভীরভাবে, 14 বাইট

,,Z`i-"CBA"E`M

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

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

পুরো ব্যাখ্যাটির জন্য এটি খুব ছোট, সুতরাং আমি কেবলই বলব: এটি জেলি উত্তরের মতো একই অ্যালগরিদম ব্যবহার করে।

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