Erstellen Sie eine binäre Wand

33

Bei einer gegebenen Anordnung positiver Ganzzahlen in der Basis 10 wird n > 0deren Darstellung einer binären Wand ausgegeben.

Wie funktioniert das?

  1. Wandle jede Zahl in ihre Binärdarstellung um.
  2. Füllen Sie die Darstellung mit führenden Nullen auf die Länge der längsten auf, dh 1, 2-> 1, 10-> 01, 10.
  3. Erstellen Sie eine Wand, an der die 1s Steine ​​sind und 0s Steine ​​fehlen.

Eine Wand ist ein Zeichenblock, in dem jedes druckbare Zeichen einen Baustein darstellt und ein Leerzeichen ( 32) einen fehlenden Baustein darstellt . Sie können ein beliebiges Zeichen für den Baustein auswählen. Es muss nicht über die gesamte Wand verteilt sein, solange es sich nicht um ein Leerzeichen handelt. Das fehlende Backstein-Zeichen muss ein Leerzeichen sein. Für das folgende Beispiel habe ich *die Steine ​​verwendet.

Beispiel

Eingang:

[ 15, 7, 13, 11 ]
  1. [ 1111, 111, 1101, 1011 ]
  2. [ 1111, 0111, 1101, 1011 ]
  3. Ausgabe:

    ****
     ***
    ** *
    * **
    

Regeln

  • Die Eingabe muss in Basis 10 erfolgen, wenn Ihre Sprache andere Basen akzeptiert, dürfen Sie diese nicht verwenden.
  • Führende und nachfolgende neue Zeilen sind erlaubt.
  • Die Eingabe kann als Liste von ganzen Zahlen, getrennten Argumenten oder in einem angemessenen Format erfolgen.
  • Die Ausgabe kann in jedem vernünftigen Format erfolgen: durch neue Zeilen getrennte Zeichenfolge, Array von Zeilen, 2D-Array usw.
  • Standardlücken sind nicht zulässig.

Testfälle

Beachten Sie, dass im ersten Testfall alle Ebenen am Ende einen leeren Stein haben.

[ 14, 4, 6, 2 ]

*** 
 *  
 ** 
  * 

[ 1, 2, 4, 8, 16 ]

    *
   * 
  *  
 *   
*

[ 15, 11, 15, 15 ]

****
* **
****
****

[ 11, 10, 9, 8 ]

* **
* * 
*  *
*   

Dies ist Codegolf, also gewinnt der kürzeste Code!

TheLethalCoder
quelle
Kann die Ausgabe ein Array von Zeilen oder ein 2D-Array von Zeichen sein?
Ovs
@ovs Sorry dachte ich hätte das angegeben, ja man kann ein Array oder 2d Array etc. ausgeben. Beliebiges vernünftiges Format.
TheLethalCoder
Können wir im Fall eines 2D-Arrays Zahlen anstelle von Zeichen für die Bausteine ​​verwenden? zB[[1, " ", 1, " "], ...]
Arnauld
@ Arnauld Ja, das scheint in Ordnung zu sein.
TheLethalCoder
1
@ Giuseppe Nur neue Zeilen, sonst wird es für leere Steine ​​verwechselt.
TheLethalCoder

Antworten:

13

MATL , 5 Bytes

B42*c

Probieren Sie es online!

Erläuterung

B     % Implicitly input an array of numbers. Convert to binary. 
      % Gives a matrix with each row corresponding to a number
42    % Push 42 (ASCII code of '*')
*     % Multiply
c     % Convert to char. Char 0 is displayed as space. Implicitly display
Luis Mendo
quelle
Sie können ein beliebiges Zeichen für den Baustein auswählen. Es muss nicht über die gesamte Wand verteilt sein, solange es sich nicht um ein Leerzeichen handelt. Ja, das heißt, Sie brauchen wahrscheinlich nicht 42*oder so etwas ...
Erik the Outgolfer
@EriktheOutgolfer Ich könnte jede andere Nummer wählen, aber ich brauche diese drei Bytes, denke ich.
Luis Mendo
Was ist, wenn ein 1-Byte-Wert für 100oder eine andere Zahl eingebaut ist ?
Erik der Outgolfer
11

J , 8 Bytes

' *'{~#:

Probieren Sie es online!

Erläuterung

' *'{~#:  Input: array of integers
      #:  Convert each to binary with left-padding
' *'{~    Use the digits to index into the string ' *'
Meilen
quelle
Oh, #:deshalb schlägt das Jelly.
Erik der Outgolfer
8

Oktave, 22 Bytes

@(x)[dec2bin(x)-16,'']

Probieren Sie es online aus

Erläuterung:

Dank Luis Mendo einige Bytes gespart! Außerdem habe ich nicht bemerkt, dass ich auswählen konnte, mit welchem ​​Charakter die Mauer gebaut werden soll, nicht nur *.

@(x)                    % Take the input as a column vector
    dec2bin(x)          % Convert each row of the input to a string with 1 and 0
                        % It gets automatically padded with zeros, to fit the longest number
    dec2bin(x)-16       % Subtract 16, to get from the ASCII-values of 1/0 (48/49)
                        % to 32/33 (space and !)
@(x)[dec2bin(x)-16,'']  % Concatenate with the empty string to convert it to a string.

Oder mit de2bi:

Erläuterung:

@(x)                          % Take the input as a column vector
               de2bi(x)       % Convert each row of the input to a binary number.
                              % Gets automatically padded to fit the longest number
            42*de2bi(x)       % Multiply the matrix by 42, which is the ASCII-value for *
           [42*de2bi(x),'']   % Concatenate the matrix with the empty string to convert
                              % it to a string. 0 are automatically displayed as spaces
@(x)fliplr([42*de2bi(x),''])

Das Folgende funktioniert auf TIO, für 7 Bytes mehr:

@(x)fliplr([42*(dec2bin(x)>48),''])

Probieren Sie es hier aus

Stewie Griffin
quelle
5

Python 3 , 88 84 71 74 72 Bytes

Ein Lambda, das eine Liste von Zeichenfolgen zurückgibt, die jede Zeile darstellen.

lambda n:[bin(x)[2:].replace(*'0 ').rjust(len(bin(max(n)))-2)for x in n]

Probieren Sie es online! (Link zur durch Newline getrennten Version)

Erläuterung

  • lambda n:- Erstellt ein (anonymes) Lambda mit einem Parameter n. Gibt implizit zurück.

  • [...] - Erstellt ein Listenverständnis.

  • bin(x)[2:] - Ruft die binären Darstellungen der Zahlen ab.

  • .replace(*'0 ')- Ersetzt alle Vorkommen 0durch ein Leerzeichen.

  • .rjust(len(bin(max(n)))-2) - Füllt die binären Darstellungen mit der Länge der längsten auf.

  • for x in n- Durchläuft nmit der Variablen x.


Änderungsprotokoll

  • - 1 - 3 Bytes dank @Rod, -(...)+2= 2-(...), Verwendung vonrjust()

  • bin()Stattdessen wurde eine Version mit hinzugefügt , die ungültig war, da sie für 1und nicht funktionierte 2.

  • Behebung des obigen Fehlers mit format().

  • Der Rückgabetyp wurde in die Liste der Zeichenfolgen geändert, da dies vom OP zugelassen wurde.

  • Es wurde ein weiterer Fehler behoben, bei dem @Rod verwendet rjust()und zurückgeschaltet hat bin(), der entdeckt und behoben wurde.

Mr. Xcoder
quelle
5

JavaScript (ES6), 81 79 Byte

Es wurden 2 Byte gespeichert, indem Zahlen anstelle von Zeichen für die Bausteine ​​verwendet wurden, wie von Rick Hitchcock vorgeschlagen

Gibt ein 2D-Array mit 1 für die Bausteine ​​zurück.

f=(a,b=[],x=1)=>a.every(n=>n<x)?a.map(n=>b.map(i=>n&i?1:' ')):f(a,[x,...b],x*2)

Testfälle

Arnauld
quelle
4

05AB1E , 9 Bytes

bí.Bí»0ð‡

Probieren Sie es online!

Erik der Outgolfer
quelle
Schlage mich um 38 Sekunden. Ich hatte auch b0ð:í.Bí»für 9 Bytes.
Riley
4

Rubin, 63 59 Bytes

-4 Bytes mit Hilfe von Alexis Andersen

->*n{puts n.map{|i|("%#{('%b'%n.max).size}b"%i).tr'0',' '}}

Probieren Sie es online!

daniero
quelle
1
Sie benötigen die 0 im Zeichenfolgenformat nicht. Sie könnten ein Byte rasieren, indem Sie n.max.to_s(2).sizemit ersetzen, ('%b'%n.max).sizeund Sie müssen das 1mit eigentlich nicht ersetzen*
Alexis Andersen
@ AlexisAndersen Dank :)
Daniero
4

R 87 88 Bytes

Wandblöcke vertreten durch 8, weil, gut viele acht.

write(ifelse((I=sapply(scan(),intToBits))[(M=max(which(I>0,T)[,1])):1,],8,' '),1,M,,'')

Probieren Sie es online!

Die Eingabe-Integer-Liste wird in ein Array von Bits konvertiert, die von nachfolgenden 0-Bits abgeschnitten und umgekehrt werden.

Das reduzierte Array wird dann unter Verwendung writeeiner Spaltenbreite ausgegeben, die bestimmt wurde, als das Array zugeschnitten wurde.

ifelse() ist die einzige IF-Option, die bei Vektoren leider funktioniert.

MickyT
quelle
@Vlo wies darauf hin, dass Sie 1anstatt ""für die Ausgabedatei verwenden können write.
Giuseppe
@ Giuseppe danke für den Tipp
MickyT
3

APL (Dyalog) , 30 22 20 14 Bytes

6 Bytes gespart dank @ Adám

' *'[⍉2⊥⍣¯1⊢⎕]

Probieren Sie es online!

(setzt voraus ⎕IO←0, dass dies auf vielen Rechnern Standard ist)

Dies nimmt Eingaben als Array und gibt eine Matrix mit *s und s zurück.

Erläuterung

2⊥⍣¯1⊢⎕       Convert input to binary (returns a transposed matrix of 1s and 0s)
              Transpose
' *'[ ... ]    Index into this string
Kritixi Lithos
quelle
Speichern Sie 6 Bytes mit' *'[⍉2⊥⍣¯1⊢⎕]
Adám
@Adam Danke für die Tipps, ich wusste nicht, dass ich das entfernen kann ¨.
Kritixi Lithos
3

T-SQL, 290 Bytes

declare @ int;select @=max(log(a,2))+1from @i;with t as(select convert(varchar(max),a%2)b,a/2c,@-1m,ROW_NUMBER()over(order by(select 1))r from @i union all select convert(varchar(max),concat(c%2,b))b,c/2c,m-1,r from t where m>0)select replace(b,0,' ')from t where m=0group by r,b order by r

Verwendet 1für das Ziegelsteinstück, setzt voraus, dass die Eingabe von der Tabelle stammt@

Ungolfed, mit einer Erklärung

-- assume input is presented in an input table
declare @input table (a int)
insert into @input values (15), (7), (13), (11)

---- start here

-- figure out how many characters are needed, by taking log2
declare @max int
select @max = max(log(a, 2)) + 1
from @input

-- recursive cte
-- will join against itself, recursively finding each digit in the binary string
;with cte as
(
    select 
        convert(varchar(max), a % 2) as b, -- is the least significant bit 1 or 0
        a / 2 as c, -- remove least significant bit, for the next run
        @max - 1 as max, -- keep track of iterations left
        ROW_NUMBER() over (order by (select 1)) as rn -- keep the order of the input
    from @input

    union all -- recursive loop
              -- below columns follow the same pattern

    select convert(varchar(max), 
        concat(cte.c % 2, cte.b)) as b, -- prepend the current binary string with the newest least significant bit
        cte.c / 2 as c, 
        cte.max - 1, 
        cte.rn
    from cte
    where cte.max > 0
)
select replace(b, 0, ' ') -- swap 0s for space
from cte
where max = 0 -- only take the last iteration
group by rn, b -- grab each unique input, 
               -- need to group by row number so it can be ordered by
               -- need to group by binary string, so it can be selected
order by rn -- sort by the order the input arrived in
Brian J
quelle
3

Mathematica, 40 Bytes

Grid@PadLeft@IntegerDigits[#,2]/. 0->""&

Ziegel sind 1s

Mathematica, 48 Bytes

Grid@PadLeft@IntegerDigits[#,2]/.{0->"",1->"#"}& 

Ziegel sind #

J42161217
quelle
Sie brauchen nur einen Schrägstrich in der //.. ( /.bedeutet "einmal ersetzen", //.bedeutet "den Austausch fortsetzen, bis sich das Ding nicht mehr ändert".)
Kein Baum
ok-fixed-thanks
J42161217
In der Funktion IntegerDigits benötigen Sie kein Leerzeichen nach dem Komma.
Mark S.
Ja, ich weiß, dies passiert, wenn Sie von notebook.fixed kopieren / einfügen
J42161217
2

C # (.NET Core) , 112 + 18 = 130, 86 + 41 = 127 Byte

a=>a.Select(n=>C.ToString(n,2).Replace("0"," ").PadLeft(C.ToString(a.Max(),2).Length))

Probieren Sie es online!

Die Byteanzahl umfasst 41 Bytes von using System.Linq;using C=System.Convert;. Verwendet 1als Zeichen für die Wand. Trotzdem ist das auch für C # viel zu lang ...

Charlie
quelle
Platzieren Sie in namespace System.Linq{}, um einige Bytes zu speichern. Ist a.Max()garantiert wahr (ich bin mir sicher, dass ich mit binary: P nicht der klügste bin)? Würden Sie class Convert{}keine Bytes speichern?
TheLethalCoder
1
Wenn ich das Programm in einem bestimmten Namespace platziere, sollte ich dann nicht das gesamte Programm anstelle eines Lambda einreichen? Ich bin mir nicht sicher über die Regeln dafür ...
Charlie
Ich habe in der Regel nur mit Lambda in Namespace platziert. Ich glaube nicht, dass es jemals eine Frage dazu gab und sie ist auf der C # -Tipps-Seite.
TheLethalCoder
Ich glaube nicht, dass dies gültig ist, da Sie es nicht kompilieren können, ohne statische Importe zu verwenden.
MetaColon
2
@MetaColon Das ist der Grund, warum ich die Bytes using System.Linq;using C=System.Convert;zur Byteanzahl hinzugefügt habe , da diese beiden usingAnweisungen für die Kompilierung des Codes benötigt werden.
Charlie
2

Retina , 63 Bytes

.+
$*#<
+`(#+)\1
$1 
 #
#
{T`<`_`^(<.+(¶|$))+$
m`^<
 <
(.)<
<$1

Probieren Sie es online! Erläuterung:

.+
$*#<

In Unary konvertieren und Suffix a <.

+`(#+)\1
$1 
 #
#

In Binärdatei konvertieren.

{T`<`_`^(<.+(¶|$))+$

Wenn alle <s links angekommen sind, löschen Sie sie alle.

m`^<
 <

Fügen Sie ein Leerzeichen vor allen <S ein, die bereits links angekommen sind.

(.)<
<$1

Bewegen Sie alle <s einen Schritt nach links. Spülen und wiederholen.

Neil
quelle
2

PowerShell , 100 Byte

$args|%{if(($c=($a=[convert]::ToString($_,2)).length)-gt$l){$l=$c}$a-replace0,' '}|%{$_.padleft($l)}

Probieren Sie es online!

Es convertist so schmerzhaft, in PowerShell binär zu sein. Plus .lengthy Anrufe an -replacedie 0mit Leerzeichen und einem langen.padLeft() Anruf, um sie alle gleich zu machen .length, alles summiert sich zu einer langen Einreichung.

Golfvorschläge unter 100 sind willkommen.

AdmBorkBork
quelle
2

PHP, 84 Bytes

while(++$i<$argc)echo strtr(sprintf("\n%".-~log(max($argv),2).b,$argv[$i]),10,"* ");

Glücklicherweise wandelt die Bit-Operation das logErgebnis in int um. float würde hier nicht funktionieren.

Probieren Sie es online aus .

Titus
quelle
2

Clojure, 185 Bytes

(fn[i](let[b(map #(Long/toBinaryString %)i)](map #(clojure.string/replace(clojure.string/replace(format(str"%0"(reduce(fn[l i](max l(count i)))0 b)"d")(read-string %))"1""#")"0"" ")b)))

Ungolfed-Version:

(fn [i]
    (let [b (map #(Long/toBinaryString %) i)]
        (map
            #(clojure.string/replace
                (clojure.string/replace
                    (format
                        (str "%0"
                            (reduce
                                (fn [l i] (max l(count i))) 0 b)
                            "d")
                        (read-string %))
                        "1"
                        "#")
                "0"
                " ")
        b)))

Anonyme Funktion, die das Argument als Liste aufnimmt. Liefert die Zeilen als Liste.

Ich wette, die anderen Antworten zu lesen, könnte kleiner sein. clojure.string/replacebraucht eine obszöne Menge an Zeichen, um zu schreiben ..

Joshua
quelle
2

Japt , 33 30 Bytes

¡'0p(¡X¤lÃn o)-X¤l)+X¤)£" *"gX

Probieren Sie es online!

3 Bytes gespart dank gespart @Justin Mariner

Erläuterung

¡                              // map input integers
    (¡X¤lÃn o)                 // longest binary string length
              -X¤l)            // minus current binary string length
 '0p                           // repeat zero
                   +X¤)        // concat with current binary string
                       £       // map chars of binary string
                        " *"gX // swap 0 and 1 with ' ' and '*'
powelles
quelle
Sie können die letzten 3 Zeichen löschen, um nur ein Array von Zeichenfolgen zurückzugeben, und das -RFlag (nicht zur Byte-Anzahl hinzugefügt) verwenden, um die Ausgabe mit Zeilenumbrüchen anzuzeigen: hier .
Justin Mariner
2

Python 3 , 92-90 Bytes

lambda a:[' '*(len(bin(max(a)))-len(i)-2)+i for i in[bin(i)[2:].replace(*'0 ')for i in a]]

Probieren Sie es online!

Gibt eine Liste von Zeilen zurück. Wenn Sie sie aufeinander stapeln, werden sie tatsächlich richtig ausgerichtet.

['111 ', ' 1  ', ' 11 ', '  1 ']
>>>
 111 
  1  
  11 
   1 

Die Panne

Wandelt das Array im Wesentlichen in Binär um und ersetzt dann alle Nullen durch Leerzeichen. NDie Anzahl der Leerzeichen wird vor jeder Zeile hinzugefügt, in der N = [length of longest line] - [length of line].

-1 bytes Vielen Dank an Herrn Xoder

Probieren Sie es online!

Graviton
quelle
Die Ausgabe darf keine führenden oder nachfolgenden Leerzeichen enthalten.
TheLethalCoder
@TheLethalCoder Oh, muss die Regeln falsch verstanden haben! Danke, dass du das verstanden hast.
Graviton
90 Bytes , ersetzen '0',' 'durch *'0 '.
Mr. Xcoder
@ Mr.Xcoder Ah interessant, hätte nie darüber nachgedacht. Vielen Dank!
Graviton
2

Japt , 11 Bytes

m¤z3 z ·r0S

Probieren Sie es online!

Erläuterung

m¤z3 z ·r0S  Implicit input of array
m¤           Map the array to binary strings
  z3 z       Rotate right 270° and then right 90°. This adds left padding to each string
       ·r0S  Join with newlines and replace 0s with spaces
Justin Mariner
quelle
Nizza Exploit mit z3 z. Nicht sicher, warum y yes dort nicht funktioniert, ich werde es später untersuchen ...
ETHproductions
2

Java 7, 130 108 88 Bytes

22 dank @TheLethalCoder gespeichert 20 dank @Xanderhall gespeichert

void a(int[]b){for(int i:b)System.out.println(Long.toBinaryString(i).replace('0',' '));}

Ungolfed:

void a(int[]b){
    for(int i:b)
        System.out.println(Long.toBinaryString(i).replace('0', ' '));       
}
Java Gonzar
quelle
1
Inkrementieren Sie ium b[i], um ein Byte zu speichern. Du kannst die Ausgabe mit 1's behalten , also brauchst du das nicht .replace('1','*'). Verwenden Sie stattdessen Java 8 und kompilieren Sie es in ein Lambda, um Bytes zu sparen. Wenn Sie dies nicht möchten, wird int[]bein Byte gespeichert.
TheLethalCoder
Vielen Dank! Könnten Sie bitte erklären, was "Inkrementiere i bei b [i], um ein Byte zu speichern". meint?
Java Gonzar
i++ausgewertet und idann inkrementiert (wohingegen ++idas Gegenteil der Fall ist), so dass Sie die i++aus der forSchleife bewegen und b[i++]stattdessen verwenden können. Oh, und während wir gerade dabei sind, haben Sie nur eine Linie in Ihrer Schleife, sodass die Klammern nicht benötigt werden.
TheLethalCoder
Wahr! Erstaunlich, danke
Java Gonzar
2
Sie können einige Bytes sparen, indem Sie Ihre Schleife in eine foreach-Schleife umschalten. for(int x:i)Sie können auch Long.toBinaryStringanstelle der Integer-Version 3 Byte speichern.
Xanderhall
1

Python 2, 217 Bytes

Nach 2 Stunden Codierung habe ich entschieden, dass dies eine schlechte Idee ist

import numpy as n
i=n.loadtxt("i")
o=[n.copy(i)]
o[0].fill(10)
while n.count_nonzero(i)>0:
 o.append(i%2+32)
 i=n.vectorize(lambda x:x//2)(i)
print n.fliplr(n.array(o).T).astype('uint8').view('c').tostring().decode()

Verwendung in Ubuntu

Installieren Sie numpy

python2 -m pip install numpy

Erstellen Sie eine Datei mit dem Namen imit Eingabe im Format14 4 6 2

Lauf

python2 prog.py
Евгений Новиков
quelle
1

8. , 232 254 250 Byte

Code

0 >r a:new swap ( nip 2 base drop >s decimal s:len r> n:max >r a:push ) a:each drop a:new swap ( nip '0 G:c# r@ G:#> s:fmt a:push ) a:each drop rdrop a:new swap ( nip /0/ " " s:replace! a:push ) a:each drop ( nip /1/ "*" s:replace! . cr ) a:each drop

Ungolfed-Version mit Kommentaren

\ convert to binary and save longest string length
: f 0 >r a:new swap ( nip 2 base drop >s decimal s:len r> n:max >r a:push ) a:each drop ;

\ pad binary number with zero
: f1 a:new swap ( nip '0 G:c# r@ G:#> s:fmt a:push ) a:each drop rdrop ;

\ replace every 0 with space
: f2 a:new swap ( nip /0/ " " s:replace! a:push ) a:each drop ;

\ replace every 1 with * and print each line of bricks
: f3 ( nip /1/ "*" s:replace! . cr ) a:each drop ;

Diese Wörter müssen nacheinander aufgerufen werden (siehe Beispiel)

Verwendung und Beispiele

ok> [15,7,13,11] 0 >r a:new swap ( nip 2 base drop >s decimal s:len r> n:max >r a:push ) a:each drop a:new swap ( nip '0 G:c# r@ G:#> s:fmt a:push ) a:each drop rdrop a:new swap ( nip /0/ " " s:replace! a:push ) a:each drop ( nip /1/ "*" s:replace! . cr ) a:each drop
****
 ***
** *
* **

Oder klarer

ok> [15,11,15,15] f f1 f2 f3
****
* **
****
****
Chaos Manor
quelle
1

Excel VBA, 170 161 Bytes

Golf gespielt

Anonyme VBE-Direktfensterfunktion, die die Eingabe des Formats 1 2 3 .. naus dem Bereich übernimmt [A1]und die entsprechende Binärwand über den Bereich an das VBE-Direktfenster ausgibt[B1,C1,2:2]

n=Split([A1]):[A2].Resize(1,UBound(n)+1)=n:[C1]="=Int(1+Log(B1,2))":For Each i In n:[B1]=i:?Replace(Replace([Right(Rept(0,C1)&Dec2Bin(B1),C1)],1,"*"),0," "):Next

Formatiert:

n=Split([A1])
[A2].Resize(1,UBound(n)+1)=n
[C1]="=Int(1+Log(B1,2))"
For Each i In n
[B1]=i
?Replace(Replace([Right(Rept(0,C1)&Dec2Bin(B1),C1)],1,"*"),0," ")
Next

Ungolfed

Vollständige SubRoutine, die die Eingabe des Formats übernimmt Array(1, 2, 3...)und die entsprechende Binärwand über den Bereich an das VBE-Direktfenster ausgibt[A1,B1,2:2]

Sub a(ByRef n As Variant)
    Let Range("A1").Resize(1,UBound(n)+1) = n
    Let Range("C1").Value = "=Int(1+Log(A1,2))"
    Dim i As Integer
    For Each i In n
        Let Range("A1").Value = i
        Debug.Print Replace(
                            Replace(
                                    [Right( Rept( 0, C1) & Dec2Bin( B1), C1)],
                                    1,
                                    "*"
                            ),
                            0,
                            " "
                    )
    Next
End Sub
Taylor Scott
quelle
1

Holzkohle , 20 Bytes

WS«⸿≔IιιWι«←§ *ι≧÷²ι

Probieren Sie es online!Link ist eine ausführliche Version des Codes. Konvertiert manuell jede eingegebene Zahl in eine Binärdatei, druckt sie jedoch in der Reihenfolge von rechts nach links. Ich nehme die Eingabe als Newline-terminierte Zeichenfolge, da Charcoal keine gute Möglichkeit hat, Listen einzugeben, da ich sonst so etwas schreiben würde, was derzeit leider 21 Bytes benötigt:

WS⊞υIιW⌈υ«Eυ﹪κ²↓⸿≧÷²υ

Probieren Sie es online! Link ist eine ausführliche Version des Codes. Diese Version vektorisiert über das Eingabearray, obwohl die Ausgabe in -s fest codiert ist, wodurch ein Byte gespart wird.

Neil
quelle