দুর্বল বাইনারি প্রাচীর


21

বাইনারি প্রাচীর তৈরি দ্বারা অনুপ্রাণিত

ইতিবাচক পূর্ণসংখ্যার একটি তালিকা দেওয়া, আমরা এগুলি একে অপরের উপরের মতো লিখে রাখতে পারি, [2, 6, 9, 4]উদাহরণস্বরূপ:

0010
0110
1001
0100

আমরা এটি প্রাচীর হিসাবে কল্পনা করতে পারি:

..#.
.##.
#..#
.#..

তবে এটি একটি খুব দুর্বল প্রাচীর, এবং এটি ধসে পড়েছে! প্রতিটি 1( #) নীচে পড়ে যায় যতক্ষণ না এটি "গ্রাউন্ড" বা অন্য কোনও 1( #) টি আঘাত করে। 0গুলি ( .গুলি) দাগ সরানো দ্বারা বাম উপস্থিত 1গুলি।

এটি নিম্নলিখিত হয়ে যায়:

....
....
.##.
####

যা এখানে অনুবাদ করে:

0000
0000
0110
1111

সংখ্যাগুলির তালিকা হিসাবে যা [0, 0, 6, 15]

আরেকটি পরীক্ষার মামলা

[10, 17, 19, 23]

এটি হয়ে যায়:

01010
10001
10011
10111

যা হয়ে:

00000
10011
10011
11111

এটিকে আবার অনুবাদ করা:

[0, 19, 19, 31]

চ্যালেঞ্জ

ইতিবাচক পূর্ণসংখ্যার একটি তালিকা দেওয়া হয়েছে, তালিকায় এই রূপান্তরটি প্রয়োগ করুন। যেকোন যুক্তিসঙ্গত বিন্যাসে ইতিবাচক পূর্ণসংখ্যার তালিকা হিসাবে ইনপুট / আউটপুট। স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।

এটি একটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর!



1
আরও টেস্টকেস? আপনি জানেন, স্কোয়ারবিহীন পরীক্ষাগুলি ভাল হবে।
লিকি নুন

পছন্দ করুন আমি এটা করবো.
হাইপারনিউটারিনো

বিট অ্যারেগুলির জন্য এটি কেবল বাছাই করার সমস্যা।
মার্কাস মুলার

@ মার্কাসমুলার আপনি ঠিক বলেছেন - আমি বুঝতে পেরেছি যে এমএটিএল উত্তর দেওয়ার পরে: পি
হাইপার নিউট্রিনো

উত্তর:


29

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

BSXB

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

ব্যাখ্যা

    % Implicitly grab input as an array 
    %   STACK: [10, 17, 19, 23]
B   % Convert each element to binary where each decimal number results in a row
    %   STACK: [0 1 0 1 0;
    %           1 0 0 0 1;
    %           1 0 0 1 1;
    %           1 0 1 1 1]
S   % Sort each column, placing all of the 1's at the bottom of each column
    %   STACK: [0 0 0 0 0;
    %           1 0 0 1 1;
    %           1 0 0 1 1;
    %           1 1 1 1 1] 
XB  % Convert each row from its binary representation to its decimal number
    %   STACK: [0, 19, 19, 31]
    % Implicitly display the result

o_O কীভাবে এটি কাজ করে: ও
হাইপারনিউটারিনো

1
এমএটিএল 4 গিগাবাইট দ্বারা জেলির বাইরে গল্ফ করেছিল ? o_O
totallyhuman

5 বাইট এখন :-p
লিকি নুন


1
@ টোটালিহুমান ভাল, ডেনিস না আসা পর্যন্ত অপেক্ষা করুন
জংহওয়ান মিন


5

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

f=a=>a.map(_=>a.map((e,i)=>a[a[i]|=a[--i],i]&=e))&&a

ব্যাখ্যা: মনে করুন প্রাচীরের দুটি সারি এরকম ছিল:

0011
0101

ফলাফলটি এটি হওয়া দরকার:

0001
0111

অন্য কথায়, প্রথম সারিটি দুটি সারির AND হয় এবং দ্বিতীয় সারিতে দুটি সারিটির OR হয়। সমস্ত বিট নীচে পড়ে যাওয়ার জন্য এটি কেবল পর্যাপ্ত সময় পুনরাবৃত্তি করা দরকার।



2

জাপট , 16 বাইট

m¤z3 ®¬n qÃz mn2

এটি অনলাইন চেষ্টা করুন! -Qঅ্যারে ফলাফল ফর্ম্যাট করতে পতাকা ব্যবহার করে ।

ব্যাখ্যা

m¤z3 ®¬n qÃz mn2    Implicit: U = input array.
                        [10, 17, 19, 23]
m¤z3                Map U to binary strings and rotate the array left 90°
                         1010       0111
                        10001   ->  1011
                        10011       0001
                        10111       1000
                                     111
®¬n qà              Sort each binary string, putting 0s and spaces at the start
                        0111
                        0111
                        0001
                        0001
                         111
z mn2               Rotate right 90° and convert each back to a number
                         0000       0
                        10011   ->  19
                        10011       19
                        11111       31
                    Implicit output of resulting array

আমি মনে করি আপনি এই বাইটটি সংরক্ষণ করতে পারবেনmì2 z3 mn z mì2
ETH প্রপুটিকেশন

@ এথ প্রডাকশনগুলি মনে হচ্ছে স্ট্রিংগুলির অ্যারেটি ঘোরানোর পরিবর্তে প্রতিটি অভ্যন্তরীণ অ্যারেগুলিকে ফাঁকের পরিবর্তে প্যাড করে 2 ডি অ্যারেটি ঘোরানো হচ্ছে null। সুতরাং যে কাজ বলে মনে হচ্ছে না। এবং গুলি এর nullডানদিকে বাছাই করা হয় 1ফাঁকা স্থানের বিপরীতে যা বামে সাজানো হয়।
জাস্টিন মেরিনার

2

গণিত, 64 বাইট

#~FromDigits~2&/@(Sort/@(PadLeft[#~IntegerDigits~2&/@#]))&

। হয় \[Transpose]

এটি ইনপুটটিকে (সংখ্যার একটি তালিকা) অঙ্কের তালিকাগুলির তালিকায় রূপান্তর করে, এটি বর্গক্ষেত্রের ম্যাট্রিক্স হিসাবে প্যাড করে, স্থানান্তর করে, সারিগুলি সাজায় যাতে 1 এর "পতন" নীচে যায়, ফিরে স্থানান্তরিত হয়, এবং আবার সংখ্যায় ফিরে আসে ।



2

অক্টাভা, 29 25 বাইট

4 বাইট সংরক্ষিত হয়েছে @ স্টেউইকে ধন্যবাদ

@(x)bi2de(sort(de2bi(x)))

de2bi/bi2deঅষ্টাভে 4 বাইট সংরক্ষণ করুন অষ্টাভন অনলাইনলাইনে কাজ করে।
স্টিভি গ্রিফিন

@ স্টেভিগ্রিফিন ধন্যবাদ!
সোয়েভার

1

জে , 13 বাইট

/:~"1&.|:&.#:

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

ব্যাখ্যা

/:~"1&.|:&.#:  Input: array M
           #:  Convert each in M to binary with left-padding
       |:&     Transpose
/:~"1&         Sort each row
     &.|:      Inverse of transpose (which is just transpose)
         &.#:  Inverse of converting to binary

আবার বাইনারি-বাম-প্যাডিং রয়েছে, +1। এবং এছাড়াও, আপনি কী ব্যাখ্যা করতে পারেন যে কেন আপনার কেবল ট্রান্সপোজের বিপরীতমুখী ব্যবহারের প্রয়োজন হবে?
জাকারি

@ জাচার - বিপরীতগুলি প্রতিটি সারি বাছাইয়ের আগে ব্যবহৃত অপারেশনগুলি পূর্বাবস্থায় ফেলার জন্য ব্যবহৃত হয়। এটি সত্য যে ট্রান্সপোজের বিপরীতটি কেবল ট্রান্সপোজ হয় তবে এটি দেখার আরও একটি উপায় হ'ল <convert from binary> <transpose> <sort each row> <transpose> <convert to binary> Mপ্রথম দুটি ফাংশনটি শেষ দুটির বিপরীত।
মাইল মাইল

1

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

bí0ζR€{øC

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

কিন্তা ম্যাজিকের থেকে আলাদা অ্যালগোরিদম।


ζ, ধুর! ছাই. আমার মোছা হয়েছে, আমার +1 নিন।
ম্যাজিক অক্টোপাস উর্ন

@ MagicOctopusUrn আপনি কেন মুছে ফেললেন? কোন দরকার নেই.
এরিক দ্য আউটগল্ফার

এটি আসলে খুব আলাদা নয় (অ্যালগরিদমের দিক থেকে) এবং এটি 25% ভাল ছিল।
ম্যাজিক অক্টোপাস উর্ন

1

ডায়ালগ এপিএল, 24 21 19 বাইট

2⊥↑{⍵[⍋⍵]}¨↓2⊥⍣¯1⊢⎕

এটি অনলাইন চেষ্টা করুন! (পরিবর্তিত তাই ট্রাইএপিএল এটিকে বৈধ হিসাবে গ্রহণ করে)

কিভাবে?

  • মূল্যায়ন ইনপুট (অ্যারে স্থান পৃথক পৃথক)
  • 2⊥⍣¯1⊢ প্রতিটি আর্গুমেন্টকে বাইনারিতে রূপান্তরিত করে (প্রশ্নটিতে যা রয়েছে তা স্থানান্তরিত)
  • একটি 2 ডি অ্যারেটিকে ভেক্টরগুলির একটি ভেক্টরে পরিণত করে
  • {⍵[⍋⍵]}¨ ভেক্টরের প্রতিটি উপাদানকে বাছাই করে
  • ভেক্টরগুলির ভেক্টরটিকে আবার 2D অ্যারে রূপান্তরিত করে
  • 2⊥ বাইনারি থেকে রূপান্তর করুন (যেহেতু এটি সাজানোর ফলে এটি সঠিকভাবে পৌঁছেছে)

1

ডায়ালগ এপিএল (২৩ টি অক্ষর)

{2⊥¨↓⍉↑{⍵[⍋⍵]}¨↓2⊥⍣¯1⊢⍵}
  1. ইনপুট আর্গুমেন্টগুলিকে বাইনারি ম্যাট্রিক্সে রূপান্তর করুন
  2. ম্যাট্রিক্সকে কলামগুলিতে বিভক্ত করুন
  3. কলামগুলি আরোহণের ক্রমে সাজান
  4. বাছাই করা সারিগুলি দশমিক দশকে রূপান্তর করুন

উদাহরণ

  {2⊥¨↓⍉↑{⍵[⍋⍵]}¨↓2⊥⍣¯1⊢⍵}10 17 19 23
      0 19 19 31

আমাকে এইটিকে সংশোধন করার জন্য জাকারিকে ধন্যবাদ।


আপনার সাথে প্রতিস্থাপন করতে পারেন (⊥⍣¯1)⍵সঙ্গে ⊥⍣¯1⊢⍵। এছাড়াও, আমি ভাবি না যে আপনার বিভাজন ( ↓[1]=> ) এর অক্ষ অক্ষের প্রয়োজন ।
জাকারি

ওহ, এবং আপনি এটি আবার একটি তালিকায় রূপান্তর করার কথা!
জাকারি

এটি অবৈধ।
জাকারি

আপনাকে ধন্যবাদ, জাকারি, আমি গভীর রাতে এই নিয়ে কাজ করছিলাম এবং আমি মনে করি যে আমি সমস্যাটি ভুলভাবে লিখেছি। আমি এখন আমার সমাধানটি পরিবর্তন করেছি।
জেমস হেসলিপ

1
ভাল, ভাল কাজ! ( ⊥⍣¯1সত্যিই বিল্টিন হওয়া দরকার)। এবং প্রকৃতপক্ষে আমার ব্যবহারকারীর নামটি সঠিকভাবে পাওয়ার জন্য আপনাকে ধন্যবাদ।
জাকারি


0

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

... এবং এখনও গল্ফ করছে ... আশা করি –– কোনও সহায়তা প্রশংসিত!

def c(l):b=[bin(n)[2:]for n in l];print[int(n,2)for n in map(''.join,zip(*map(sorted,zip(*['0'*(len(max(b,key=len))-len(x))+x for x in b]))))]

এর একটি বড় অংশ শূন্যের সাথে সংখ্যাগুলি প্যাড করার জন্য।

আরও পঠনযোগ্য:

def collapse(nums):
    bins = [bin(n)[2:] for n in nums]
    bins = [('0'*(len(max(bins, key = len)) - len(x))) + x for x in bins]
    print [int(n, 2) for n in map(''.join, zip(*map(sorted, zip(*bins))))]

এটি বাইনারি স্ট্রিং উপস্থাপনাগুলির একটি অ্যারে তৈরি করে, এটি প্যাড করে, এটি 90º ঘড়ির কাঁটার দিকে ঘোরান, প্রতিটি সারি বাছাই করে, 90º পিছনে ঘোরান এবং তারপরে প্রতিটি সারির বাইরে পূর্ণসংখ্যা তৈরি করে।


142 বাইট , আপনার কিছু রিডানড্যান্ট প্রথম বন্ধনী রয়েছে।
মিঃ এক্সকোডার

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