একাধিক পছন্দ পরীক্ষা প্রতারণা, অংশ 2


26

এটি আদনানের এই চ্যালেঞ্জের সিক্যুয়েল । আপনি যদি এই চ্যালেঞ্জটি পছন্দ করেন তবে সম্ভাবনাগুলি আপনি অন্যান্যটিকেও পছন্দ করবেন। এটা দেখ!


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

Q#: 1  2  3  4  5  6  7  8
    B  C  A  D  B  A  D  A
A: [0, 0, 1, 0, 0, 1, 0, 1]
B: [1, 0, 0, 0, 1, 0, 0, 0]
C: [0, 1, 0, 0, 0, 0, 0, 0]
D: [0, 0, 0, 1, 0, 0, 1, 0]

এটি কিছুটা যুক্তি দিয়ে সংকুচিত হতে পারে। পছন্দের প্রতিটি A, B, Cএবং Dদুই সত্য / মিথ্যা মান দ্বারা প্রতিনিধিত্ব করা যাবে নিচে দেখানো:

A: 1 0
B: 0 1
C: 0 0
D: 1 1

এই যুক্তিটি ব্যবহার করে, আমরা উপরের চারটি ভেক্টরকে মাত্র দুটিতে সংকুচিত করতে পারি:

 1  2  3  4  5  6  7  8
 B  C  A  D  B  A  D  A
[0, 0, 1, 1, 0, 1, 1, 1]
[1, 0, 0, 1, 1, 0, 1, 0]

এটি হল, আপনার পরীক্ষার সমাধান কেবলমাত্র: 00110111, 10011010। এগুলিকে যুক্ত করে, আমরা বাইনারি নম্বর পাই 0011011110011010বা 14234দশমিক। আপনার পরীক্ষায় প্রতারণার জন্য এই দশমিক মানটি ব্যবহার করুন!

চ্যালেঞ্জ

N(অন্তর্ভুক্ত) ব্যাপ্তিতে একটি সংখ্যা নিন [0, 65535]এবং একাধিক পছন্দ পরীক্ষার উত্তর দিয়ে একটি স্ট্রিং আউটপুট করুন।

পরীক্ষার কেস:

14234
BCADBADA

38513
ABBDCAAB    

0
CCCCCCCC

120
CBBBBCCC

65535
DDDDDDDD

39253
ABCDABCD

আউটপুট আপার বা লোয়ার কেসগুলিতে থাকতে পারে তবে আপনি অন্যান্য চিহ্ন ব্যবহার করতে পারবেন না।


আউটপুটটি কি দেখানো মত স্ট্রিং হতে হবে, বা বর্ণগুলি পৃথক রেখায় থাকতে পারে, কোনও তালিকায়, ইত্যাদি?
xnor

@ এক্সনর ptionচ্ছিক :-)
স্টিভি গ্রিফিন

সুস্পষ্ট এ = 00, বি = 01, সি = 10, ডি = 11 কেন নয়?
ব্যবহারকারী 253751

কারণ আমি প্রথম হয়েছিল A=10, B=01, তারপর C=nor(A,B)আর D=and(A,B), আদনান প্রতিদ্বন্দ্বিতার দ্বারা অনুপ্রাণিত। অন্ধকারে এটি অন্যভাবে করা ভাল হতে পারে, তবে ভাল ... এখন খুব দেরী ...
স্টিভি গ্রিফিন

উত্তর:


3

জেলি , 14 বাইট

d⁹+⁹BZḄḊị“BADC

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

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

d⁹+⁹BZḄḊị“BADC  Main link. Argument: n

d⁹              Divmod 256; yield [n : 256, n % 256].
  +⁹            Add 256; yield [n : 256 + 256, n % 256 + 256].
    B           Binary; convert both integers to base 2.
     Z          Zip; group the quotient bits with corresponding remainder bits.
      Ḅ         Unbinary; convert from base 2 to integer.
       Ḋ        Dequeue; discard the first integer, which corresponds to the
                dummy value introduced by adding 256 to quotient and remainder.
        ị“BADC  Index into that string, mapping [1, 2, 3, 0] to "BADC".

10

05 এ বি 1 , 19 18 16 বাইট

কোড:

žH+b¦2äøC’c‰±’sè

সিপি -1222 এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা:

প্রথমত, আমরা 65536সংখ্যায় যুক্ত করি ( žHএটি একটি ধ্রুবক সংজ্ঞায়িত 65536), যা 10000000000000000বাইনারিও হয়। এটি শূন্যের সাথে সংখ্যাটি প্যাড করতে হবে। 14234উদাহরণ হিসাবে উদাহরণটি নেওয়া যাক । 14234 + 65536সমান 79770। বাইনারি মধ্যে যা:

10011011110011010

আমরা প্রথম চরিত্রটি সরিয়ে ফেলি, যার ফলস্বরূপ:

0011011110011010

আমরা স্ট্রিংটি ব্যবহার করে দুটি টুকরো টুকরো করে বিভক্ত :

00110111, 10011010

এর পরে, আমরা অ্যারেটি জিপ করব ø:

01, 00, 10, 11, 01, 10, 11, 10

এগুলিকে দশমিক (ব্যবহার করে C) ফলাফলগুলিতে ফিরে রূপান্তর করা :

1, 0, 2, 3, 1, 2, 3, 2

এখন, আমাদের কেবল এটি স্ট্রিংয়ের সাথে সূচী করা দরকার cbad। এই স্ট্রিংয়ের জন্য সংকুচিত সংস্করণটি ’c‰±’যা এখানে পরীক্ষা করা যায় । পরিশেষে, আমরা উপরের অ্যারের সূচীতে অক্ষরগুলি পাই। উপরের উদাহরণের জন্য, এর ফলাফলগুলি:

1, 0, 2, 3, 1, 2, 3, 2
b  c  a  d  b  a  d  a

6

জাভাস্ক্রিপ্ট (ES6), 55 48 বাইট

f=(n,i=8)=>i--?"CBAD"[n>>i&1|n>>i+7&2]+f(n,i):''

console.log(f(14234)); // BCADBADA
console.log(f(38513)); // ABBDCAAB
console.log(f(0));     // CCCCCCCC
console.log(f(120));   // CBBBBCCC
console.log(f(65535)); // DDDDDDDD
console.log(f(39253)); // ABCDABCD

অপরিবর্তিত সংস্করণ (55 বাইট)

একটি নিয়মিত অভিব্যক্তি ব্যবহার করে, আমরা এটি করতে পারি:

n=>"76543210".replace(/./g,i=>"CBAD"[n>>i&1|n>>+i+7&2])

কীভাবে আপনি বিটওয়াইজ অপারেশনগুলি করার কথা ভাবেন?
ericw31415

@ এরিক ৩৩১৪১৫ - এমনকি যদি এটি স্পষ্টভাবে না করে তবে, চ্যালেঞ্জটি আসলে এই বিটওয়াইজ অপারেশনগুলিকে বিপরীত ক্রমে বর্ণনা করছে ( "এটি কিছুটা যুক্তি দিয়ে সংকোচিত করা যেতে পারে" থেকে শুরু করে )
আর্নল্ড

3
... কিছুটা যুক্তি ...
নীল

4

পাইথন 2, 53 বাইট

f=lambda n,k=8:k*'_'and f(n/2,k-1)+'CBAD'[n>>7&2|n&1]

আইডিয়নে এটি পরীক্ষা করুন ।


আমি ব্যবহার করার চেষ্টা করছিলাম (n&257)%127তবে এটি আরও দীর্ঘ। খুব খারাপ 127 প্রধান। হতে পারে আপনি এটিকে অনুকূল করার কোনও উপায় সম্পর্কে ভাবতে পারেন।
xnor

4

সিপি -1610 বিধানসভা, 24 ডিসিএল (30 বাইট)

এই কোড একটি অন চালানো যাবে দেয়ার উদ্দেশ্যে করা হচ্ছে Intellivision(1)

একটি সিপি -1610 অপকোডটি 10-বিট মান সহ এনকোড করা হয়েছে, যা একটি 'ডিসেল' হিসাবে পরিচিত। আসল ফাংশনটি 24 ডিসিএইলসিই লম্বা, শুরু হয় $4809এবং শেষ হয় $4820

CPU- র রেজিস্টার, 16-বিট প্রশস্ত কিন্তু তাই এটা যে কোন ইনপুট মান সমর্থন করবে 0x0000.. 0xFFFF

                            ROMW  10            ; use 10-bit ROM
                            ORG   $4800         ; start program at address $4800
4800 0002                   EIS                 ; enable interrupts (to enable display)

                    ;; ---- usage example
4801 0001                   SDBD                ; load parameter in R0
4802 02B8 009A 0037         MVII  #14234, R0    ;
4805 0004 0148 0009         CALL  cheat         ; call function
4808 0017                   DECR  PC            ; infinite loop

                    ;; ---- 'Cheat Your Test' function
                    cheat   PROC  

4809 0082                   MOVR  R0,     R2    ; copy R0 to R2
480A 0040                   SWAP  R0            ; swap LSB/MSB in R0
480B 02BC 0214              MVII  #$214,  R4    ; R4 = pointer to 2nd row of screen memory

480D 01DB           @@loop  CLRR  R3            ; clear R3
480E 0052                   RLC   R2            ; extract highest bit of R2 to carry
480F 0053                   RLC   R3            ; inject carry into R3
4810 0050                   RLC   R0            ; extract highest bit of R0 to carry
4811 0053                   RLC   R3            ; inject carry into R3
4812 0001                   SDBD                ; add pointer to lookup table to R3
4813 02FB 001D 0048         ADDI  #@@tbl, R3    ;
4816 029B                   MVI@  R3,     R3    ; read character value
4817 0263                   MVO@  R3,     R4    ; write it to screen memory (also does R4++)
4818 037C 021C              CMPI  #$21C,  R4    ; 8 characters written? ...
481A 0225 000E              BLT   @@loop        ; ... if not, jump to @@loop

481C 00AF                   JR    R5            ; return

481D 011F 0117      @@tbl   DECLE $11F, $117    ; characters 'B', 'C', 'A' and 'D'
481F 010F 0127              DECLE $10F, $127    ; in white, using the built-in font

                            ENDP

আউটপুট

স্ক্রিনশট


(1) অনুমোদিত যে কমপক্ষে একটি সংকলক, বেশ কয়েকটি এমুলেটর এবং কপিরাইট-মুক্ত প্রতিস্থাপন রম ফাইলগুলি নিখরচায়ভাবে উপলব্ধ I তবে দয়া করে আমাকে ভুল করে বলুন।


1
আমরা বাইটে স্কোর করি, সুতরাং মোট বিটের সংখ্যা যুক্ত করুন এবং আপনার স্কোর সেই মানটিকে আট দ্বারা ভাগ করার দশমিক (ভাসমান) ফলাফল। এই ক্ষেত্রে, 27.5 বাইট।
mbomb007

3

সিজেম , 22 বাইট

ri2bG0e[8/:.{1$=)^'A+}

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

ব্যাখ্যা

যাদু দ্বারা চালিত ...

এই চ্যালেঞ্জটিতে অক্ষরের সাথে বিট জোড়গুলির ম্যাপিংটি কিছুটা স্বেচ্ছাসেবী। যদি আমরা উপস্থাপন ABCDকরে 0, 1, 2, 3(যাতে আমরা কেবল তাদেরকে চরিত্রের সাথে যুক্ত করতে পারি A) তবে আমরা নিম্নলিখিত ম্যাপিংটি চাই:

i1   i2   o
0    0    2
0    1    1
1    0    0
1    1    3

এই ম্যাপিংটি একটি মায়াবী সামান্য সূত্রের সাথে গণনা করা যেতে পারে: ((i1 == i2) + 1) ^ i1যেখানে সাম্যতা চেক ফেরত দেয় 0বা 1। নিম্নলিখিত সারণিটি দেখুন, যেখানে প্রতিটি কলাম একটি ইনপুট অনুরূপ, প্রতিটি সারি একটি ক্রিয়াকলাপের সাথে মিলে যায় এবং প্রতিটি ঘর সেই বিন্দুতে স্ট্যাক প্রদর্শন করবে:

[i1, i2]:  [0, 0]     [0, 1]     [1, 0]     [1, 1]
copy i1:   [0, 0, 0]  [0, 1, 0]  [1, 0, 1]  [1, 1, 1]
equals:    [0, 1]     [0, 0]     [1, 0]     [1, 1]
inc:       [0, 2]     [0, 1]     [1, 1]     [1, 2]
xor:       [2]        [1]        [0]        [3]

এটি মনে রেখে এখানে উত্স কোডের সম্পূর্ণ ভাঙ্গন রয়েছে:

ri     e# Read input, convert to integer.
2b     e# Get binary representation.
G0e[   e# Pad to 16 bits with zeros.
8/     e# Split into two halves of 8 bits each.
:.{    e# For each pair of bits, i1 and i2...
  1$   e#   Copy i1.
  =    e#   Check equality with i2.
  )    e#   Increment.
  ^    e#   Bitwise XOR.
  'A+  e#   Add to 'A'
}

একই বাইট গণনা সহ একটি বিকল্প সমাধান যা স্থিরভাবে কম ম্যাজিকাল:

ri2bG0e[8/z2fb"CBAD"f=

আর ক্ষেত্রে এটি, যে কেউ কারো উপকারে লাগতেছে যদি আপনি চালু i1এবং i2বিট একটি একক সংখ্যা ফিরে (অর্থাত যখন আপনি ম্যাপিং চান 0 -> 2, 1 -> 1, 2 -> 0, 3 -> 3) এই নির্ণিত করা যেতে পারে এমনকি আরো সহজে যেমন (~n - 1) & 3বা (~n - 1) % 4আপনার ভাষায় নেতিবাচক মান ডান দিকে মডিউল পায় পারেন। আমি মনে করি এটি 3&~-~nঅনেক ভাষায় যেমন সংক্ষিপ্তভাবে লেখা যেতে পারে । বেস 2 থেকে অতিরিক্ত রূপান্তরকরণের কারণে সিজেমে এটি একটি দীর্ঘকাল বাইট হিসাবে পরিণত হয়।


3

পিএইচপি, 57 বাইট

for($i=8;$i--;)echo CBAD[($n=$argv[1])>>$i+7&2|$n>>$i&1];

বিটওয়াইস অপারেটরগুলি 70 বাইট ছাড়াই সংস্করণ

for(;$i<8;)echo CABD[($s=sprintf("%016b",$argv[1]))[$i]+$s[8+$i++]*2];

পরিবর্তনশীল $iসংজ্ঞায়িত হয় কোথায় ?
ericw31415

@ এরিক ৩৩১৪১৫ প্রথম কোনও ভেরিয়েবলের ব্যবহার শুরু হয় এবং স্বয়ংক্রিয়ভাবে পিএইচপি এই
নমনীয়

এটি পিএইচপি (টিএম)
টেমসডিং

3

গণিত, 75 73 68 66 বাইট

StringPart["CBAD",#+##+1]&@@IntegerDigits[#,2,16]~Partition~8<>""&

2 টি বাইট সংরক্ষণের জন্য @ মার্টিনইেন্ডারকে ধন্যবাদ


@ মার্টিনএেন্ডার #+##এবং Infixকাজ করুন, তবে ব্যবহার StringPartঅনিবার্য কারণ কারণ প্রধান "C"["B","A","D"][[#+##]]হচ্ছেন "C", নয় List; StringJoinকাজ করে না
জংহওয়ান মিন

1
ওহ, আমি এটি বুঝতে পারি নি #এবং #2পুরো তালিকা ছিল।
মার্টিন এন্ডার

3

পার্ল, 42 বাইট

এর জন্য +1 অন্তর্ভুক্ত -n

এসটিডিনে ইনপুট দিন:

perl -nE 'say+(A..D)[2-($`>>8-$_&257)%127]for/$/..8' <<< 39253

শুধু কোড:

say+(A..D)[2-($`>>8-$_&257)%127]for/$/..8

3

জাভাস্ক্রিপ্ট, 113 93 90 88 বাইট

আমাকে 20 বাইট বাঁচাতে সাহায্য করার জন্য @ নীলকে ধন্যবাদ!
-3 বাইটস @ কায়সকে ধন্যবাদ জানায়

n=>{r="";b=("0".repeat(15)+n.toString(2)).slice(-16);for(i=0;i<8;i++)r+="CBAD"[parseInt(b[i]+b[i+8],2)];return r}

n=>{r="";b=(65536+n).toString(2).slice(1);for(i=0;i<8;i++)r+="CBAD"[+b[i+8]+2*b[i]];return r}

n=>eval('r="";b=(65536+n).toString(2).slice(1);for(i=0;i<8;i++)r+="CBAD"[+b[i+8]+2*b[i]]')

n=>eval('r="";b=n.toString(2).padStart(16,0);for(i=0;i<8;i++)r+="CBAD"[+b[i+8]+2*b[i]]')

দুঃখিতভাবে, জাভাস্ক্রিপ্ট মতো কাজগুলির অভাব আছে decbin, bindecএবং str_padপিএইচপি রয়েছে।


1
(65536+n).toString(2).slice(1)[+b[i+8]+2*b[i]]উদাহরণস্বরূপ এবং আরও খাটো হবে।
নীল

padStart, যদি এটি ইসিএমএসক্রিপ্টের ভবিষ্যতের সংস্করণে স্বীকার করা হয়, এর ফলে আরও বড় সঞ্চয় হবে।
নীল

1
পরিবর্তে {…;return }, ব্যবহার করুনeval("…")
Cyoce

@ নীল মনে হচ্ছে padStartএখন ইসমাস্ক্রিপ্টে বিদ্যমান আছে।
ericw31415

1

এমএটিএল, 16 বাইট

16&B8eXB'BADC'w)

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

বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা

        % Implicitly grab input
16&B    % Convert to binary string with at least 16 bits
8e      % Reshape the resulting string to have 8 rows and 2 columns
XB      % Convert each row from binary to decimal
'BADC'  % Push this string literal
w)      % Use the decimal numbers to index into this string (modular indexing)
        % Implicitly display the resulting string

1

জুলিয়া, 73 বাইট

এন কে ইনপুট হিসাবে গ্রহণ করে এবং উত্তরটি স্ট্রিং হিসাবে ফিরিয়ে দেয় একটি ফাংশন দেয়।

f(N)=(b=bin(N,16);join(["CBAD"[parse("0b$(b[i])$(b[i+8])")+1]for i=1:8]))

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

কোনও চর অ্যারেটিকে স্ট্রিং হিসাবে গণনা করা হয় তার উপর নির্ভর করে কেউ জোড় বাদ দিতে পারে ( 67 বাইট )

f(N)=(b=bin(N,16);["CBAD"[parse("0b$(b[i])$(b[i+8])")+1]for i=1:8])

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


0

আর, 110 বাইট

আর-তে একটি ভেক্টরাইজড সলিউশন নিয়ে এসেছিল This

x=as.integer(intToBits(scan()));cat(LETTERS[1:4][match(paste0(x[16:9],x[8:1]),c("10","01","00","11"))],sep="")
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.