ক্রিসমাস ক্র্যাকার রহস্য ক্যালকুলেটর


25

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

এখানে চিত্র বর্ণনা লিখুন

এই কৌশলটিতে মুদ্রিত সংখ্যার 4x8 গ্রিড সহ প্রতিটি 6 টি কার্ড থাকে। প্রতিটি কার্ডে পূর্ণসংখ্যার আলাদা উপসেট থাকে [1,63]। যাদুকর আপনাকে একটি কার্ড থেকে একটি নম্বর বাছাই করতে এবং সেই নম্বরটি গোপন রাখতে বলবে। যাদুকর তখন জিজ্ঞাসা করবে কোন কার্ডে সেই নম্বর আছে। সেই জ্ঞানের সাহায্যে যাদুকর যাদুকরীভাবে অনুমান করা মূল সংখ্যাটি নির্ধারণ করতে এবং প্রকাশ করতে সক্ষম হবেন।


নিম্নলিখিত হিসাবে ঠিক 6 রহস্য ক্যালকুলেটর কার্ডের সম্পূর্ণ সেট আউটপুট:

 1  3  5  7  9 11 13 15
17 19 21 23 25 27 29 31
33 35 37 39 41 43 45 47
49 51 53 55 57 59 61 63
 - - - - - - - - - - -
 2  3  6  7 10 11 14 15
18 19 22 23 26 27 30 31
34 35 38 39 42 43 46 47
50 51 54 55 58 59 62 63
 - - - - - - - - - - -
 4  5  6  7 12 13 14 15
20 21 22 23 28 29 30 31
36 37 38 39 44 45 46 47
52 53 54 55 60 61 62 63
 - - - - - - - - - - -
 8  9 10 11 12 13 14 15
24 25 26 27 28 29 30 31
40 41 42 43 44 45 46 47
56 57 58 59 60 61 62 63
 - - - - - - - - - - -
16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31
48 49 50 51 52 53 54 55
56 57 58 59 60 61 62 63
 - - - - - - - - - - -
32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55
56 57 58 59 60 61 62 63

আউটপুটে একটি চূড়ান্ত ট্রেলিং নিউলাইন থাকতে পারে বা নাও থাকতে পারে। কোনও পেছনের সাদা স্থান থাকতে হবে না। প্রতিটি কার্ড 11 -পারফোরেশন দ্বারা পৃথক করা হয় ।

  • ফাইনাল নিউলাইন সহ এমডি 5সাম: 7aa2d9339b810ec62a2b90c5e11d6f4a
  • চূড়ান্ত নিউলাইন ছাড়া এমডি 5সাম: e9abe4e32dca3e8fbfdaa4886fc5efd2

আপনারা উইন্ডোজ ওরিয়েন্টেশনের বেশিরভাগ ক্ষেত্রে, আমি CRLFস্টাইল লাইন শেষের অনুমতিও দেব । সেক্ষেত্রে এমডি 5 হ'ল:

  • ফাইনাল নিউলাইন সহ এমডি 5সাম: e4f16ff9752eee2cedb5f97c7b5aec6d
  • চূড়ান্ত নিউলাইন ছাড়া এমডি 5সাম: 78c560eed3b83513e3080117ab5dc5fa

2
আমি কেবল বুদবুদ উত্তরের জন্য অপেক্ষা করছি।
মাইক বুফার্দেসি


নেতৃস্থানীয় স্থান গ্রহণযোগ্য?
তিতাস

টাইটাস দুঃখিত, না, এমডি 5 দেওয়া হয়েছে এবং অতিরিক্ত শ্বেতস্পেস এগুলিকে গোলমাল করবে।
ডিজিটাল ট্রমা

উত্তর:


10

পাইথন 2 , 99 96 93 91 বাইট

k=1
while 1:print('%2d '*7+'%2d\n')*4%tuple(n for n in range(64)if k&n),11/(k<32)*' -';k*=2

একটি ত্রুটি সহ প্রস্থান করে, যা ডিফল্টরূপে অনুমোদিত

এটি অনলাইন চেষ্টা করুন! অথবা MD5 হ্যাশ যাচাই করুন

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

কে কে 1 হিসাবে শুরু করার পরে , আমরা একটি অসীম লুপ প্রবেশ করি যা নিম্নলিখিত কোডটি কার্যকর করে।

print('%2d '*7+'%2d\n')*4%tuple(n for n in range(64)if k&n),11/(k<32)*' -';k*=2

tuple(n for n in range(64)if k&n)নিচে সমস্ত অ-নেতিবাচক পূর্ণসংখ্যার একটি tuple সৃষ্টি 64 যে আছে সেখানে তম বিট সেট, যেখানে লুপের পুনরাবৃত্তির গণনা করা হয়, অর্থাত, 2 = ট

('%2d '*7+'%2d\n')*4প্রথমে বিন্যাসের স্ট্রিং তৈরি করে '%2d %2d %2d %2d %2d %2d %2d \n', তারপরে এটি চারবার পুনরাবৃত্তি করে। এটি প্রতিটি কার্ডের জন্য একটি টেমপ্লেট, যা প্রতিটি পূর্ণসংখ্যাকে দুটি অক্ষর (স্পেসের পূর্ববর্তী স্থান) এ প্যাড করে, 8 টি সংখ্যার প্রতিটি গ্রুপকে ফাঁক দিয়ে আলাদা করে দেয় এবং গ্রুপগুলি লাইনফিড দ্বারা পৃথক করে ।

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

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

তারপরে, আমরা (চেষ্টা করার) ফলাফল মুদ্রণ করি 11/(k<32)*' -'। যদি কে <32 , এই এক্সপ্রেশনগুলি মূল্যায়ন করে ' - - - - - - - - - - -'। আবার, আমরা একটি লাইনের শুরুতে আছি, সুতরাং কোনও স্থান শোধ করা হয় না। এই অভিব্যক্তিটির পরে কোনও কমা নেই, সুতরাং printএকটি লাইনফিড যুক্ত করে। যাইহোক, ষষ্ঠী পুনরাবৃত্তিতে, কে = 2 5 = 32 , তাই মূল্যায়নের চেষ্টা করার 11/(k<32)*' -'ফলে একটি অনাবৃত জিরো ডিভিশনইরির উত্থাপিত হয় । এটি লুপ থেকে বিচ্ছিন্ন হয়ে যায় এবং সাথে সাথে প্রোগ্রামটি শেষ করে।


7

সি (জিসিসি), 105 বাইট

o;main(i){for(;i<384;i++%64||puts(" - - - - - - - - - - -"))i&1<<i/64&&printf("%2d%c",i%64,++o%8?32:10);}


5

জেলি , 27 26 বাইট

Ts8GW
⁾ -ẋ11W
63RBUz0Ñ€j¢Y

এটি অনলাইন চেষ্টা করুন! অথবা MD5 হ্যাশ যাচাই করুন

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

63RBUz0Ñ€j¢Y  Main link. No arguments.

63R           Range 63; yield [1, ..., 63].
   B          Binary; convert each integer to base 2.
    U         Upend; reverse the binary representations.
     z0       Zip with filler 0; transpose rows and columns, filling gaps in
              the (non-rectangular) matrix with zeroes.
       р     Map the first helper link over the new rows.
          ¢   Yield the return value of the second helper link.
         j    Join the left result, separating by the right result.
           Y  Join the results, separating by line feeds.

Ts8G          First helper link. Argument: A (array of 1's and 0's)
T             Truth; get all indices of 1's.
 s8           Split the indices into chunks of length 8.
   G          Grid; convert the 2D array into a string, separating row items
              by spaces, rows by linefeeds, and left-padding each integer
              with spaces to equal lengths.
    W         Wrap the generated string in an array.


⁾ -ẋ11W       Second helper link. No arguments.

⁾ -           Yield " -".
   ẋ11        Repeat the string 11 times.
      W       Wrap the generated string in an array.

2
এই Gবিল্টইন এই চ্যালেঞ্জের জন্য গুরুতরভাবে শক্তিমান। এটি করতে আমার প্রায় 10 বাইটের দরকার ছিল।
DLosc

5

পিপ , 49 48 44 বাইট

43 বাইট কোডের, -Sপতাকা জন্য +1 ।

Fi,6{IiP" -"X11P(sX2-#_._M2**iBA_FI,64)<>8}

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

ব্যাখ্যা

                                             s is space (preinitialized)
Fi,6{                                     }  For i in range(6):
     Ii                                      If i is nonzero (i.e. all except 1st loop):
       P" -"X11                              Print hyphens
                                 FI,64       Range(64), filtered on this function:
                          2**iBA_              2**i bitwise AND with argument (is nonzero)
                         M                   To each remaining number, map this function:
                   2-#_                        2-len(argument)
                 sX                            ^ that many spaces
                       ._                      prepended to argument
                (                     )<>8   Group list into length-8 sublists
               P                             Print (-S flag joins on space then newline)

4

রুবি, 90 বাইট

1.upto(383){|i|print (j=i%64)<1?' -'*11+$/:"%2d%s"%[j,j+1&15>>i/256>0?' ':$/]*(j>>i/64&1)}

Ungolfed

মোটামুটি সহজবোধ্য. অতিরিক্ত জিনিসটির প্রয়োজন হতে পারে কেবলমাত্র সেই জিনিসটি যখন কোনও স্থানের পরিবর্তে একটি নতুন লাইনের সাথে কোনও নম্বর অনুসরণ করা হয়। j+1%16==0প্রথম চারটি কার্ডে এবং j+1%8শেষ দুটিতে == 0 হলে এটি ঘটে । সুতরাং স্পেস বা নিউলাইন প্রয়োজনীয় কিনা তা নির্ধারণের জন্য এক্সপ্রেশন 15>>i/64/4বা সমতুল্যভাবে 15>>i/256এ্যান্ডেড j

1.upto(383){|i|                              #Count starting at 1 instead of 0 to supress - -  before 1st card
  print (j=i%64)<1?                          #j=number to consider for card. If 0,
    ' -'*11+$/:                              #print - - -... else print
     "%2d%s"%[j,j+1&15>>i/256>0?' ':$/]*     #j formatted to 2 spaces followed by a space (or if j+1 divisible by 16 or 8 depending on card, a newline.) 
     (j>>i/64&1)                             #only print appropriate numbers for this card, i.e. when this expression evaluates to 1
}


2

পার্ল 6 ,  194 116  86 বাইট

put join "\n{' -'x 11}\n",map {join "\n",.[^32].rotor(8)».fmt('%2s')},(1,3...63),(2,{|($_ X+1,4)}...*),(4,{|($_ X+1,2,3,8)}...*),(8,{|((1...7,16)X+$_)}...*),(16,{|((1...15,32)X+$_)}...*),32..63

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

for 1..383 {print !($/=$_%64)??"{' -'x 11}\n"!!$/+>($_/64)%2??$/.fmt('%2d')~(($/+1)+&(15+>($_/256))??' '!!"\n")!!''}

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

for 1..383 {$_%64||put ' -'x 11;$_+&(1+<($_/64))&&printf "%2d%c",$_%64,++$/%8??32!!10}

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

( এমডি 5 ফলাফলের জন্য ডিবাগ বিভাগগুলি পরীক্ষা করুন )
শেষ দুটি রুবি এবং সি বাস্তবায়ন থেকে অনুপ্রাণিত / প্রতিলিপি হয়েছে


2

05 এ বি 1 ই , 71 বাইট

63L©DÉÏ®À2ô®ÉÏ®ÀÀÀ4ô®ÉÏ®Á8ô®ÈÏ63®Á16ô®ÈÏ63D32sŸ)˜32ôvy8ôvy.B}„ -11×})¨»

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

এই পদ্ধতির, এটি চেষ্টা করবেন না। সম্ভবত এটি সৎ হতে লজ্জাজনকভাবে মুছে ফেলবে। ম্যাট্রিক্স ম্যানিপুলেশন আমার শক্ত মামলা নয় তাই আমি জোর করে সমস্ত sequ টি সিকোয়েন্স জেনারেট করার চেষ্টা করেছি এবং তারপরে এগুলিকে একসাথে পাম্প করে pump


টিএফডাব্লু আপনি নিজের উত্তরগুলি দেখতে পেয়েছেন বছর আগে ¯\ (o_o) / ¯ থেকে ¯
যাদু অক্টোপাস উরন

1

ব্যাচ, 249 বাইট

@echo off
set s=
for %%i in (1 2 4 8 16 32)do for /l %%j in (0,1,63)do call:c %%i %%j
exit/b
:c
if %2==0 if %1 gtr 1 echo  - - - - - - - - - - -
set/an=%1^&%2
if %n%==0 exit/b
set n=  %2
set s=%s%%n:~-3%
if not "%s:~23%"=="" echo%s%&set s=

একটি পিছনে সিআরএলএফ আউটপুট দেয়।


1
@DigitalTrauma সবচেয়ে ভাল উপায় এটা সত্যিই মদ (প্রয়োজন চেষ্টা করতে askubuntu.com/a/54271 ) অথবা আপনি একটি ভার্চুয়াল মেশিনের (ডাউনলোডকৃত যে developer.microsoft.com/en-us/microsoft-edge/tools/vms ) (আমি তোমাদের কাছে সুপারিশ স্পেস বাঁচাতে আইই 8 এর সাথে উইন্ডোজ 7 ডাউনলোড করুন বা কোনও উইন্ডোজ এক্সপি + আই 6 ভিএম পাওয়া যেত যে হাত পেতে চেষ্টা করুন)
ইসমাইল মিগুয়েল

1

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

f=(k=1,n=z=0)=>n>>6?k>>5?'':' -'.repeat(11)+`
`+f(k*2):(n&k?(n>9?'':' ')+n+`
 `[++z&7&&1]:'')+f(k,++n)

MD5: 7AA2D9339B810EC62A2B90C5E11D6F4A

পরীক্ষা


1

বাশ / ইউনিক্স ইউটিলিটিস, 125 124 বাইট

b='- - - - ';for ((x=1;x<33;x*=2));{ for n in {0..63};{ ((x&n))&&printf \ %2d $n;};echo $b$b$b;}|fold -w24|sed -e\$d -es/.//

সম্পাদনা করুন: একটি অপ্রয়োজনীয় Remove শেষে রেজেক্স থেকে সরানো হয়েছে; রেজেক্স সর্বদা যাইহোক যাইহোক লাইনের শুরুতে মিলবে।


1

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

for(;$c<6;$n%32||$c+=print str_pad("
",25," -"),$n%2**$c||$b+=1<<$c)printf("
"[$n++%8]."%3d",++$b%64);

একটি শীর্ষস্থানীয় তবে কোনও পিছনে থাকা নতুন লাইন এবং প্রতিটি লাইনে একটি করে শীর্ষস্থানীয় মুদ্রণ করে। এটি দিয়ে চালান -nrবা অনলাইনে চেষ্টা করুন

পিএইচপি <5.6 জন্য প্রতিস্থাপন 2**$cসঙ্গে (1<<$c)। পিএইচপি 5.5 এর &~1<<$c?:পরিবর্তে ব্যবহার করতে পারে %2**$c||
পিএইচপি <5.5 জন্য প্রতিস্থাপন "\n"[$n++%8]সঙ্গে ($n++%8?"":"\n")


নেতৃস্থানীয় স্থানের কারণে ড্যাশগুলি একটি চরিত্র বন্ধ রয়েছে; ঠিক করার জন্য প্রথম str_padপ্যারামিটারে একটি স্থান যুক্ত করুন (দ্বিতীয় কোড লাইনের আগে একটি স্থান সন্নিবেশ করুন)।

পরিবর্তে নেতৃস্থানীয় স্থান অপসারণ করার জন্য কিছু ফিডলিং এবং তিনটি অতিরিক্ত বাইট প্রয়োজন: printf("%c%2d",$n++%8?32:10,++$b%64);এবং 23পরিবর্তে 25

শীর্ষস্থানীয় নিউলাইনটিকে ট্রেলিং একতে পরিণত করতে আরও তিনটি বাইট লাগবে:

for(;$c<6;$n%32||$c+=print str_pad("",22," -")."
",$n%2**$c||$b+=1<<$c)printf("%2d%c",++$b%64,++$n%8?32:10);

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

for($c=1;~$c&64;$n%32||$c<<=print str_pad("",22," -")."
",$n%$c||$b+=$c)printf("%2d%c",++$b%64,++$n%8?32:10);

সমস্ত চশমা মেলে এবং সমস্ত পিএইচপি সংস্করণ সঙ্গে কাজ করে।


1

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

i=0;exec"print('%2d '*7+'%2d\\n')*4%tuple(j for j in range(64)if j&2**i)+' -'*11;i+=1;"*6

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

ব্যাখ্যা:

# initialize outer counter variable
i=0
           # generate a formatting string for a single row of numbers
           # %2d will left pad an integer with spaces, up to string length 2
           # the \\n is so that exec will interpret it as a character rather than a literal line break
           '%2d '*7+'%2d\\n'
          # create a formatting string of 4 lines of 8 numbers
          (.................)*4
                               # format the string with a generated tuple of numbers that have a 1 in the current bit slot
                               # (or more literally, bitwise j AND 2^i is not zero)
                               %tuple(j for j in range(64)if j&2**i)
                                                                    # add the perforation break
                                                                    +' -'*11
     # print the generated string, then increment the counter
     print..................................................................;i+=1
# execute the following statements 6 times
exec"............................................................................."*6

ভাল, `- - -` বাদে কেবলমাত্র কার্ডের মধ্যে উপস্থিত হওয়া উচিত এবং শেষে কোনও অতিরিক্ত নয় an
ডিজিটাল ট্রমা

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

1

05 এ বি 1 ই , 29 বাইট

63L2вíƶ0ζε0K8ô§2j»}„ -11×¶.øý

@ এমিগানার 05AB1E উত্তর থেকে পোর্ট এখানে উত্তর দিন , এর পরে আমি এই চ্যালেঞ্জের প্রয়োজনীয়তা অনুসারে এটি মুদ্রণের জন্য অতিরিক্ত কোড যুক্ত করেছি।

এটি অনলাইনে চেষ্টা করুন বা এমডি 5সাম যাচাই করুন

ব্যাখ্যা:

63L          # Create a list in the range [1,63]
   2в        # Convert each number to binary as lists of 0s and 1s
     í       # Reverse each binary list
      ƶ      # Multiply each binary digit by its 1-based index [1,length] (so [1,63])
       0ζ    # Zip/transpose; swapping rows/columns, with "0" as filler
ε            # Map each inner list to:
 0K          #  Remove all 0s
   8ô        #  Split it into (four) lists of size 8
     §       #  Cast each integer to string (bug, shouldn't be necessary..)
      2j     #  And pad leading spaces to make each string size 2
        »    #  Join the inner lists by spaces, and then all strings by newlines
}„ -         # After the map: push string " -"
    11×      # Repeated 11 times to " - - - - - - - - - - -"
       ¶.ø   # Surround it with newlines: "\n - - - - - - - - - - -\n"
          ý  # And join the mapped strings with this delimiter-string
             # (after which the result is output implicitly)

0

জাভাস্ক্রিপ্ট, 234 বাইট।

for(a=[[],[],[],[],[],[]],i=1;i<64;i++)for(j=0;j<6;j++)i&2**j?a[j].push(i<10?" "+i:i):0;for(j=0;j<6;j++){for(s=[],i=0;i<4;)s.push(a[j].slice(i*8,++i*8).join(" "));b=s.join(n="\n");a[j]=b.substr(0,b.length)};a.join(n+" -".repeat(11)+n)

আমি পরে ব্যাখ্যা লিখব।

যদি console.logপ্রয়োজন হয়, বাইট গণনা হবে 247 বাইট।


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