कमजोर बाइनरी दीवारें

HyperNeutrino 08/18/2017. 14 answers, 1.278 views
code-golf number binary binary-matrix

एक बाइनरी दीवार बनाएँ द्वारा प्रेरित

सकारात्मक पूर्णांक की एक सूची को देखते हुए, हम उन्हें एक दूसरे के ऊपर, [2, 6, 9, 4] के लिए एक उदाहरण के रूप में लिख सकते हैं:

0010
0110
1001
0100 

हम इसे दीवार के रूप में कल्पना कर सकते हैं:

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

हालांकि, यह एक बहुत कमजोर दीवार है, और यह गिर गया है! प्रत्येक 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] 

चुनौती

सकारात्मक पूर्णांक की एक सूची को देखते हुए, इस परिवर्तन को सूची में लागू करें। किसी भी उचित प्रारूप में सकारात्मक पूर्णांक की सूचियों के रूप में इनपुट / आउटपुट। मानक कमीएं लागू होती हैं।

यह एक , इसलिए बाइट्स में सबसे छोटा जवाब जीतता है!

5 Comments
1 Leaky Nun 07/29/2017
अधिक टेस्टकेस? आप जानते हैं, गैर स्क्वायर टेस्टकेस अच्छा होगा।
HyperNeutrino 07/29/2017
@LeakyNun निश्चित रूप से। वह में स्वयं कर लूँगा।
Marcus Müller 07/30/2017
बिट एरे के लिए यह सिर्फ एक सॉर्टिंग समस्या है।
HyperNeutrino 07/30/2017
@ मार्कसमुलर आप सही हैं - मुझे एहसास हुआ कि MATL उत्तर के बाद: पी

14 Answers


Suever 07/29/2017.

MATL , 4 बाइट्स

BSXB 

इसे MATL ऑनलाइन पर आज़माएं

Explanation

% 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 
5 comments
HyperNeutrino 07/29/2017
ओ_ओ यह कैसे काम करता है: ओ
1 totallyhuman 07/29/2017
क्या एमटीएल ने सिर्फ 4 bytes बाहर गोल्फ जेली किया था? o_O
Leaky Nun 07/29/2017
5 बाइट्स अब: -पी
HyperNeutrino 07/29/2017
मैंने कभी नहीं सोचा था कि लोगों को नीचे xD +1 पर ले जाने के लिए अंतर्निहित होगा
1 JungHwan Min 07/29/2017
@totallyhuman अच्छी तरह से, डेनिस आने तक प्रतीक्षा करें

Anders Kaseorg 07/29/2017.

पायथन , 68 बाइट्स

 f=lambda a:a and[x|y&a[0]for x,y in zip([0]+f(a[1:]),f(a[1:])+[-1])] 

इसे ऑनलाइन आज़माएं!


Neil 07/29/2017.

जावास्क्रिप्ट (ईएस 6), 50 बाइट्स

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

स्पष्टीकरण: मान लीजिए कि दीवार की दो पंक्तियां इस तरह थीं:

0011
0101 

नतीजा यह होना चाहिए:

0001
0111 

दूसरे शब्दों में, पहली पंक्ति दो पंक्तियों में से एक बन जाती है और दूसरी पंक्ति दो पंक्तियों में से एक बन जाती है। यह सभी बिट्स को नीचे गिरने के लिए पर्याप्त बार दोहराया जाना चाहिए।


Leaky Nun 07/29/2017.

जेली , 9 बाइट्स

BUz0Ṣ€ZUḄ 

इसे ऑनलाइन आज़माएं!


Justin Mariner 07/29/2017.

जैप्ट , 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 
2 comments
ETHproductions 07/30/2017
मुझे think आप एक बाइट को mì2 z3 mn z mì2 बचा सकते हैं
Justin Mariner 07/30/2017
@ETHproductions यह स्ट्रिंग की सरणी को घूर्णन करने के बजाय, 2 डी सरणी को घूर्णन करने लगता है, रिक्त स्थान के बजाय प्रत्येक आंतरिक सरणी को null साथ पैड करता है। तो यह काम नहीं लग रहा है। और null को 1 एस के दाईं ओर क्रमबद्ध किया जाता है, रिक्त स्थान के विपरीत, जो बाईं ओर क्रमबद्ध होते हैं।

DanTheMan 07/30/2017.

गणित, 64 बाइट्स

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

 है \[Transpose]

यह अंकों की सूचियों की सूची में इनपुट (संख्याओं की एक सूची) को परिवर्तित करता है, इसे स्क्वायर मैट्रिक्स के रूप में पैड करता है, इसे स्थानांतरित करता है, पंक्तियों को टाइप करता है ताकि नीचे की ओर 1 की "गिरावट" हो, वापस स्थानांतरित हो जाए, फिर वापस संख्याओं में परिवर्तित हो जाए ।


xnor 07/30/2017.

पायथन 3.5 , 60 बाइट्स

 def f(a,*t):
 if t:b,*r=f(*t);t=f(a|b,*r);a&=b
 return(a,*t) 

इसे ऑनलाइन आज़माएं!

f(2, 6, 9, 4) जैसे इनपुट लेता है। मानता है इनपुट इनपुट खाली नहीं है। बहुत सारे tuple unpacking का उपयोग करता है।


Suever 07/30/2017.

ऑक्टवे, 2 9 25 बाइट्स

4 bytes saved thanks to @Stewie

@(x)bi2de(sort(de2bi(x))) 
2 comments
Stewie Griffin 07/30/2017
de2bi/bi2de 4 बाइट बचाता है। Octave-online.net पर काम करता है।
Suever 07/30/2017
@StewieGriffin धन्यवाद!

miles 07/29/2017.

जे , 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 
2 comments
Zacharý 07/30/2017
फिर बाइनरी बाएं-पैडिंग फिर से है, +1। और, क्या आप समझा सकते हैं कि आपको ट्रांसफर के विपरीत का उपयोग क्यों करना होगा, क्योंकि यह सिर्फ ट्रांसफर है?
miles 08/01/2017
@ Zacharý इन पंक्तियों को प्रत्येक पंक्ति को क्रमबद्ध करने से पहले उपयोग किए गए संचालन को पूर्ववत करने के लिए उपयोग किया जाता है। यह सच है कि ट्रांज़ेक्शन के विपरीत बस स्थानांतरित होता है, लेकिन इसे देखने का दूसरा तरीका M , जहां पहले दो फ़ंक्शन केवल हैं पिछले दो के उलटा।

Erik the Outgolfer 07/30/2017.

05AB1E , 9 बाइट्स

bí0ζR€{øC 

इसे ऑनलाइन आज़माएं!

जादू से जादू अलग-अलग एल्गोरिदम।

3 comments
Magic Octopus Urn 07/31/2017
ζ , दमन। मेरा हटाया गया, मेरा +1 ले लो।
Erik the Outgolfer 07/31/2017
@MagicOctopusUrn आपने अपना क्यों हटा दिया? कोई आवश्यता नहीं।
Magic Octopus Urn 07/31/2017
यह वास्तव में बहुत अलग नहीं है (एल्गोरिदम के मामले में) और यह 25% बेहतर था।

Zacharý 07/30/2017.

डायालॉग एपीएल, 24 21 1 बाइट्स

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

इसे ऑनलाइन आज़माएं! (संशोधित है इसलिए TryAPL इसे मान्य मानता है)

कैसे?

  • मूल्यांकन इनपुट (सरणी अंतरिक्ष अलग हैं)
  • 2⊥⍣¯1⊢ प्रत्येक तर्क को द्विआधारी में परिवर्तित करता है (प्रश्न में क्या है)
  • वैक्टर के वेक्टर में 2 डी सरणी बदल देता है
  • {⍵[⍋⍵]}¨ वेक्टर के प्रत्येक तत्व को {⍵[⍋⍵]}¨ करता है
  • वेक्टर के वेक्टर को फिर से 2 डी सरणी में बदल देता है
  • 2⊥ बाइनरी से कनवर्ट करें (चूंकि यह इसे ट्रांसपोज़ करता है, हम सही परिणाम पर पहुंचते हैं)

James Heslip 07/30/2017.

डायालॉग एपीएल (23 वर्ण)

NO 
  1. इनपुट तर्क को बाइनरी मैट्रिक्स में कनवर्ट करें
  2. मैट्रिक्स को कॉलम में विभाजित करें
  3. स्तंभों को आरोही क्रम में क्रमबद्ध करें
  4. क्रमबद्ध पंक्तियों को वापस दशमलव में कनवर्ट करें

उदाहरण

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

इस पर मुझे सही करने के लिए जचरि के लिए धन्यवाद।

5 comments
Zacharý 07/30/2017
आप (⊥⍣¯1)⍵ साथ (⊥⍣¯1)⍵ साथ प्रतिस्थापित कर सकते हैं। साथ ही, मुझे नहीं लगता कि आपको विभाजन पर अक्ष विनिर्देश की आवश्यकता है ( ↓[1] => )।
Zacharý 07/30/2017
ओह, और आप इसे वापस एक सूची में परिवर्तित करना चाहते हैं!
Zacharý 07/30/2017
यह अमान्य है
James Heslip 07/30/2017
धन्यवाद, ज़ैचरी, मैं कल रात देर रात काम कर रहा था और मुझे लगता है कि मैंने समस्या को गलत तरीके से पढ़ा है। मैंने अब अपना समाधान संशोधित कर दिया है।
1 Zacharý 07/30/2017
अच्छा, अच्छा काम! ( ⊥⍣¯1 वास्तव में एक अंतर्निहित होना चाहिए)। और वास्तव में मेरा उपयोगकर्ता नाम सही प्राप्त करने के लिए धन्यवाद।

ThePirateBay 07/29/2017.

जावास्क्रिप्ट, 127 125 बाइट्स

a=>a[m='map'](_=>b[m]((n,i)=>n&&(b[i]--,d|=1<a[m](e=>d+=!!(2**c&e),d=0)&&d)).reverse() 

इसे ऑनलाइन आज़माएं

-2 bytes thanks to Cows quack

1 comments
Cows quack 07/29/2017
(1< 2**c&e बन सकता है

Dopapp 07/30/2017.

पायथन 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º वापस घुमाता है, और फिर प्रत्येक पंक्ति से पूर्णांक बनाता है।

2 comments
Mr. Xcoder 07/30/2017
142 बाइट्स , आपके पास कुछ अनावश्यक संश्लेषण है।
Dopapp 07/30/2017
@ श्री एक्सकोडर, ओह हाँ वह मूर्ख था

HighResolutionMusic.com - Download Hi-Res Songs

1 (G)I-DLE

POP/STARS flac

(G)I-DLE. 2018. Writer: Riot Music Team;Harloe.
2 Ariana Grande

​Thank U, Next flac

Ariana Grande. 2018. Writer: Crazy Mike;Scootie;Victoria Monét;Tayla Parx;TBHits;Ariana Grande.
3 Imagine Dragons

Bad Liar flac

Imagine Dragons. 2018. Writer: Jorgen Odegard;Daniel Platzman;Ben McKee;Wayne Sermon;Aja Volkman;Dan Reynolds.
4 Clean Bandit

Baby flac

Clean Bandit. 2018. Writer: Jack Patterson;Kamille;Jason Evigan;Matthew Knott;Marina;Luis Fonsi.
5 BlackPink

Kiss And Make Up flac

BlackPink. 2018. Writer: Soke;Kny Factory;Billboard;Chelcee Grimes;Teddy Park;Marc Vincent;Dua Lipa.
6 Kelly Clarkson

Never Enough flac

Kelly Clarkson. 2018. Writer: Benj Pasek;Justin Paul.
7 Backstreet Boys

Chances flac

Backstreet Boys. 2018.
8 BTS

Waste It On Me flac

BTS. 2018. Writer: Steve Aoki;Jeff Halavacs;Ryan Ogren;Michael Gazzo;Nate Cyphert;Sean Foreman;RM.
9 Bradley Cooper

Always Remember Us This Way flac

Bradley Cooper. 2018. Writer: Lady Gaga;Dave Cobb.
10 Mako

Rise flac

Mako. 2018. Writer: Riot Music Team;Mako;Justin Tranter.
11 Halsey

Without Me flac

Halsey. 2018. Writer: Halsey;Delacey;Louis Bell;Amy Allen;Justin Timberlake;Timbaland;Scott Storch.
12 Lady Gaga

I'll Never Love Again flac

Lady Gaga. 2018. Writer: Benjamin Rice;Lady Gaga.
13 Little Mix

Told You So flac

Little Mix. 2018. Writer: Eyelar;MNEK;Raye.
14 Haley Reinhart

Something Strange flac

Haley Reinhart. 2018.
15 Little Mix

Woman Like Me flac

Little Mix. 2018. Writer: Nicki Minaj;Steve Mac;Ed Sheeran;Jess Glynne.
16 Bradley Cooper

Shallow flac

Bradley Cooper. 2018. Writer: Andrew Wyatt;Anthony Rossomando;Mark Ronson;Lady Gaga.
17 Diplo

Close To Me flac

Diplo. 2018. Writer: Ellie Goulding;Savan Kotecha;Peter Svensson;Ilya;Swae Lee;Diplo.
18 Imagine Dragons

Machine flac

Imagine Dragons. 2018. Writer: Wayne Sermon;Daniel Platzman;Dan Reynolds;Ben McKee;Alex Da Kid.
19 KSHMR

Magic flac

KSHMR. 2018.
20 Call Me Karizma

God Damnit flac

Call Me Karizma. 2018. Writer: Illenium;Call Me Karizma.

Related questions

Hot questions

Language

Popular Tags