বাইনারি কনভলিউশন


15

একটি বাইনারি সমঝোতা একটি সংখ্যা দ্বারা বর্ণিত হয় M, এবং একটি সংখ্যায় প্রয়োগ করা হয় N। বাইনারি উপস্থাপনায় প্রতিটি বিটের জন্য M, যদি বিটটি সেট করা থাকে ( 1), আউটপুটে সংশ্লিষ্ট বিটটি সংশ্লিষ্ট বিট সংলগ্ন দুটি বিটকে XORing দ্বারা প্রদান করা হয় N(যখন প্রয়োজন তখন প্রায় মোড়ানো)। যদি বিটটি সেট না করা হয় ( 0), তবে আউটপুটে সংশ্লিষ্ট বিটটি সংশ্লিষ্ট বিট দ্বারা দেওয়া হয় N

একটি কাজের উদাহরণ (8-বিট মান সহ):

  1. যাক N = 150, M = 59। তাদের বাইনারি সম্মানগুলি (যথাক্রমে) 10010110এবং 00111011
  2. Mএর বাইনারি উপস্থাপনার ভিত্তিতে 0, 1, 3, 4 এবং 5 বিটগুলি মীমাংসিত হয়।
    1. বিট 0 এর ফলাফলটি XORing বিট 1 এবং 7 দ্বারা দেওয়া হয়েছে (যেহেতু আমরা প্রায় গুটিয়ে রাখছি), ফলন দেয় 1
    2. বিট 1 এর ফলাফলটি XORing বিট 0 এবং 2 প্রদান করে, ফলন দেয় 0
    3. বিট 2 এর ফলাফলটি মূল বিট 2 দিয়ে দেয়, ফলন দেয় 1
    4. বিট 3 এর জন্য ফলাফল XORing বিট 2 এবং 4 প্রদান করে, ফলন দেয় 0
    5. বিট 4 এর জন্য ফলাফল XORing বিট 3 এবং 5 প্রদান করে, ফলন দেয় 0
    6. বিট 5 ফলাফলের বিট 4 এবং 6 XORing, ফলনশীল দেওয়া হয় 1
    7. 6 এবং 7 বিটের ফলাফলগুলি মূল বিট 6 এবং 7 দ্বারা দেওয়া হয়, ফলনকারী 0এবং 1
  3. আউটপুট এইভাবে হয় 10100110( 166)।

চ্যালেঞ্জ

প্রদত্ত Nএবং M, আউটপুট বাইনারি সংবর্তন দ্বারা বর্ণিত করণ ফল Mউপর N। ইনপুট এবং আউটপুট যে কোনও সুবিধাজনক, সামঞ্জস্যপূর্ণ এবং দ্ব্যর্থহীন বিন্যাসে হতে পারে। Nএবং Mসর্বদা (অন্তর্ভুক্ত) পরিসরে [0, 255](8-বিট স্বাক্ষরবিহীন পূর্ণ সংখ্যা) থাকবে এবং তাদের বাইনারি উপস্থাপনাগুলি বাইনারি সমঝোতা সম্পাদনের জন্য 8 বিটে প্যাড করা উচিত।

পরীক্ষার কেস

150 59 -> 166
242 209 -> 178
1 17 -> 0
189 139 -> 181
215 104 -> 215
79 214 -> 25
190 207 -> 50
61 139 -> 180
140 110 -> 206
252 115 -> 143
83 76 -> 31
244 25 -> 245
24 124 -> 60
180 41 -> 181
105 239 -> 102
215 125 -> 198
49 183 -> 178
183 158 -> 181
158 55 -> 186
215 117 -> 198
255 12 -> 243

আমি মনে করি শিরোনামটি ভুল। এটি "বাইনারি বিপ্লব" হওয়া উচিত :)
রুডলফ জেলিন

উত্তর:



9

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

lambda m,n:n^m&(n^n*257/2^n*2^n>>7)

কাজ করে না বলে মনে হচ্ছে n=255?
নীল

@ নিল ভাল ধরা। অতিরিক্ত বাইটের পরিবর্তে পরিবর্তনের পরিবর্তে আমি মোডের সাথে খুব সুন্দর উপায় দেখতে পাচ্ছি না।
xnor

2

জে, 34 বাইট

2#.[:({"_1],._1&|.~:1&|.)/(8#2)#:]

চ্যালেঞ্জের মধ্যে সংজ্ঞায়িত প্রক্রিয়াটি প্রয়োগ করে এমন সোজা-সামনের পদ্ধতি অ্যারে হিসাবে ইনপুট নেয় [n, m]

ফরম সাত স্মাইলির, [:, :(, :1, (8, 8#, #:, এবং :]

ব্যবহার

   f =: 2#.[:({"_1],._1&|.~:1&|.)/(8#2)#:]
   f 150 59
171
   f 59 150
166
   f 209 242
178
   f 17 1
0
   f 139 189
181

জে যদি পাইথনের মতো করে স্কোর করে তবে কিছু ভুল হতে হবে: ডি
পূর্কাকাডারী

2

x64 মেশিন কোড, 17 বাইট

88CD88C8D0C9D0C530E930C120D130C8C3

অনেকত্রিত:

0:  88 cd                   mov    ch,cl
2:  88 c8                   mov    al,cl
4:  d0 c9                   ror    cl,1
6:  d0 c5                   rol    ch,1
8:  30 e9                   xor    cl,ch
a:  30 c1                   xor    cl,al
c:  20 d1                   and    cl,dl
e:  30 c8                   xor    al,cl
10: c3                      ret

উইন 64 কলিং কনভেনশনের জন্য উপযুক্ত (আরসিএক্স, আরডিএক্সে যুক্তি)।


1

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

import Data.Bits
n%m=n.&.(255-m)+(rotate n 1`xor`rotate n(-1)).&.m

Word8ডেটা সহ যখন ডাকা হয় তখন উদ্দেশ্য হিসাবে কাজ করে। কোনও স্বাক্ষরযুক্ত ইন্টিগ্রাল ডেটাটাইপ দিয়ে ফাংশনটি কাজ করতে (+5 বাইট) (255-m)দিয়ে প্রতিস্থাপন করুন complement m

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