약화 된이 벽

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

영감을 얻은 바이너리 벽 만들기

양의 정수의리스트가 주어지면, [2, 6, 9, 4] 를 예로 들자면 다음과 같이 모두 위에 쓸 수 있습니다.

0010
0110
1001
0100 

우리는 이것을 벽으로 상상할 수 있습니다.

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

그러나 이것은 매우 약한 벽이며 붕괴되었습니다! 각 1 ( # )은 "지상"또는 다른 1 ( # )에 닿을 때까지 떨어집니다. 0 초 (.s)는 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
@ 리키 누나. 내가 할게.
Marcus Müller 07/30/2017
그것은 비트 배열의 정렬 문제 일뿐입니다.
HyperNeutrino 07/30/2017
@ MarcusMüller 맞습니다. MATL이 대답 한 후에 깨달았습니다 : P

14 Answers


Suever 07/29/2017.

MATL , 4 바이트

BSXB 

MATL Online 에서 시험해보십시오.

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
o_O 어떻게 작동합니까?
1 totallyhuman 07/29/2017
MATL이 4 bytes 메가 4 bytes 젤리에 딱 맞았습니까? o_O
Leaky Nun 07/29/2017
5 바이트 now : --p
HyperNeutrino 07/29/2017
나는 바닥에 xD +1을 움직일 수있는 내장 함수가있을 것이라고 결코 생각하지 못했다.
1 JungHwan Min 07/29/2017
@tallyallyhuman 잘, 데니스까지 올 때까지 기다려.

Anders Kaseorg 07/29/2017.

Python , 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.

자바 스크립트 (ES6), 50 바이트

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

설명 : 벽의 두 행이 다음과 같았다고 가정 해보십시오.

0011
0101 

결과는 다음과 같아야합니다.

0001
0111 

즉, 첫 번째 행은 두 행의 AND가되고 두 ​​번째 행은 두 행의 OR이됩니다. 이것은 모든 비트가 바닥에 떨어질 때까지 충분히 반복해야합니다.


Leaky Nun 07/29/2017.

젤리 , 9 바이트

BUz0Ṣ€ZUḄ 

온라인으로 사용해보십시오!


Justin Mariner 07/29/2017.

Japt , 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
나는 당신이 mì2 z3 mn z mì2 바이트를 절약 할 수 think
Justin Mariner 07/30/2017
@ETHproductions 문자열 배열을 회전하는 대신 2D 배열을 회전하는 것처럼 보이지만 각 내부 배열을 null 대신 null 로 채 웁니다. 그래서 그것은 효과가없는 것 같습니다. 그리고 null 은 왼쪽으로 정렬되는 공백과는 달리 1 초의 오른쪽으로 정렬됩니다.

DanTheMan 07/30/2017.

Mathematica, 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) 와 같은 입력을받습니다. 입력이 비어 있지 않은 것으로 가정합니다. 많은 튜플 압축 풀기를 사용합니다.


Suever 07/30/2017.

옥타브, 29 ~ 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.

J , 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. 또한, 트랜스 포스 (transpose)이기 때문에 트랜스 포즈의 역행렬을 사용해야하는 이유를 설명 할 수 있습니까?
miles 08/01/2017
@ 역함수는 각 행을 정렬하기 전에 사용 된 연산을 실행 취소하는 데 사용됩니다. transpose의 역함수가 단지 조바꿈 일지는 모르겠지만 이것을 보는 또 다른 방법은 M 하는 것입니다. 처음 두 함수는 마지막 2 개의 반전.

Erik the Outgolfer 07/30/2017.

05AB1E , 9 바이트

bí0ζR€{øC 

온라인으로 사용해보십시오!

Magic과 다른 종류의 알고리즘.

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.

Dyalog APL, 24 21 19 바이트

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

온라인으로 사용해보십시오! (TryAPL이 그것을 유효한 것으로 받아들이도록 수정 됨)

방법?

  • 입력 평가 (배열은 공백으로 구분됨)
  • 2⊥⍣¯1⊢ 는 각각의 인수를 2 진수로 변환합니다.
  • 2D 배열을 벡터 벡터로 바꿉니다.
  • {⍵[⍋⍵]}¨ 벡터의 각 요소를 정렬합니다.
  • 벡터 벡터를 2D 배열로 다시 바꿉니다.
  • 2⊥ 바이너리로부터 변환 (일종의 트랜스 포지션이므로 정확한 결과를 2⊥ )

James Heslip 07/30/2017.

다이 롯 (Dyalog) APL (23 자)

NO 
  1. 입력 인수를 2 진 행렬로 변환합니다.
  2. 행렬을 열로 나눕니다.
  3. 열을 오름차순으로 정렬
  4. 정렬 된 행을 10 진수로 다시 변환하십시오.

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

Zacharý에게 저에게이 문제를 시정 해 주셔서 감사합니다.

5 comments
Zacharý 07/30/2017
당신은 (⊥⍣¯1)⍵⊥⍣¯1⊢⍵ 바꿀 수 있습니다. 또한 split ( ↓[1] => )에 축 지정이 필요하다고 생각하지 않습니다.
Zacharý 07/30/2017
오, 그리고 당신은 그것을 목록으로 다시 변환해야합니다!
Zacharý 07/30/2017
이것은 유효하지 않습니다.
James Heslip 07/30/2017
고마워요, Zacharý, 지난 밤에이 일을하고 있었는데 문제가 잘못 읽은 것 같아요. 지금 내 솔루션을 수정했습니다.
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]))))] 

큰 덩어리는 숫자를 0으로 채우는 것입니다.

더 읽기 쉽도록 :

 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
@ Mr.Xcoder, 바보 같았습니다.

HighResolutionMusic.com - Download Hi-Res Songs

1 (G)I-DLE

POP/STARS flac

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

Beach House flac

The Chainsmokers. 2018. Writer: Andrew Taggart.
3 Ariana Grande

​Thank U, Next flac

Ariana Grande. 2018. Writer: Crazy Mike;Scootie;Victoria Monét;Tayla Parx;TBHits;Ariana Grande.
4 Nicki Minaj

No Candle No Light flac

Nicki Minaj. 2018. Writer: Denisia “Blu June” Andrews;Kathryn Ostenberg;Brittany "Chi" Coney;Brian Lee;TJ Routon;Tushar Apte;ZAYN;Nicki Minaj.
5 Clean Bandit

Baby flac

Clean Bandit. 2018. Writer: Jack Patterson;Kamille;Jason Evigan;Matthew Knott;Marina;Luis Fonsi.
6 Imagine Dragons

Bad Liar flac

Imagine Dragons. 2018. Writer: Jorgen Odegard;Daniel Platzman;Ben McKee;Wayne Sermon;Aja Volkman;Dan Reynolds.
7 Halsey

Without Me flac

Halsey. 2018. Writer: Halsey;Delacey;Louis Bell;Amy Allen;Justin Timberlake;Timbaland;Scott Storch.
8 BTS

Waste It On Me flac

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

Kiss And Make Up flac

BlackPink. 2018. Writer: Soke;Kny Factory;Billboard;Chelcee Grimes;Teddy Park;Marc Vincent;Dua Lipa.
10 Fitz And The Tantrums

HandClap flac

Fitz And The Tantrums. 2017. Writer: Fitz And The Tantrums;Eric Frederic;Sam Hollander.
11 Backstreet Boys

Chances flac

Backstreet Boys. 2018.
12 Kelly Clarkson

Never Enough flac

Kelly Clarkson. 2018. Writer: Benj Pasek;Justin Paul.
13 Diplo

Close To Me flac

Diplo. 2018. Writer: Ellie Goulding;Savan Kotecha;Peter Svensson;Ilya;Swae Lee;Diplo.
14 Anne-Marie

Rewrite The Stars flac

Anne-Marie. 2018. Writer: Benj Pasek;Justin Paul.
15 Little Mix

Woman Like Me flac

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

Machine flac

Imagine Dragons. 2018. Writer: Wayne Sermon;Daniel Platzman;Dan Reynolds;Ben McKee;Alex Da Kid.
17 Little Mix

The Cure flac

Little Mix. 2018.
18 Bradley Cooper

Always Remember Us This Way flac

Bradley Cooper. 2018. Writer: Lady Gaga;Dave Cobb.
19 Rita Ora

Velvet Rope flac

Rita Ora. 2018.
20 Lady Gaga

I'll Never Love Again flac

Lady Gaga. 2018. Writer: Benjamin Rice;Lady Gaga.

Related questions

Hot questions

Language

Popular Tags