Einfaches binäres Dreieck

18

Geben Sie als Eingabe eine positive Ganzzahl ein n>=1und geben Sie die ersten nZeilen des folgenden Dreiecks aus:

                  1
                1 0 1
              0 0 1 0 0
            1 1 1 0 1 1 1
          0 0 0 0 1 0 0 0 0
        1 1 1 1 1 0 1 1 1 1 1
      0 0 0 0 0 0 1 0 0 0 0 0 0
    1 1 1 1 1 1 1 0 1 1 1 1 1 1 1
  0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1

Die Zeilen wechseln zwischen allen Nullen und allen Einsen, außer dass die mittlere Spalte umgedreht wird.

Testfälle

  • Eingabe :3

  • Ausgabe :

        1
      1 0 1
    0 0 1 0 0
    
  • Eingabe :10

  • Ausgabe :

                      1
                    1 0 1
                  0 0 1 0 0
                1 1 1 0 1 1 1
              0 0 0 0 1 0 0 0 0
            1 1 1 1 1 0 1 1 1 1 1
          0 0 0 0 0 0 1 0 0 0 0 0 0
        1 1 1 1 1 1 1 0 1 1 1 1 1 1 1
      0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
    1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1
    

Ihr Code muss für alle funktionieren n<100. Dies ist , daher gewinnt der kürzeste Code in Bytes!

Nachgestellte Leerzeichen / Zeilenumbrüche und führende Zeilenumbrüche sind erlaubt!

xnor
quelle
Ist überschüssiger Leerraum akzeptabel und wenn ja, welche (führende / führende / nachfolgende / Trainingslinien)?
Jonathan Allan
1
Können wir eine Liste mit Nummernlisten zurückgeben?
Erik der Outgolfer
8
@EriktheOutgolfer Liste der Listen ist in Ordnung!
1
Da eine Liste von Listen in Ordnung ist, gehe ich davon aus, dass die zentrierte Ausrichtung nicht erforderlich ist, oder?
Luis Mendo
1
Es ist Ihre Herausforderung, aber meiner Meinung nach, wenn Sie flexibel genug sind, um eine Liste von Listen zuzulassen, macht es keinen Sinn, streng mit der Formatierung umzugehen
Luis Mendo

Antworten:

7

Gelee , 7 Bytes

Ṭ=Ḃµ€ŒB

Probieren Sie es online!

-1 Byte danke an Erik den Outgolfer

Erläuterung

Ṭ=Ḃµ€ŒB  Main link
    €    For each element in (implicit range of) the input:
Ṭ        List 1s and 0s with 1s in the indices in the left argument (generates `[0, 0, ..., 1]`)
 =Ḃ      Is this equal to `(z % 2)` where `z` is the range number? (Every other row is flipped)
     ŒB  Reflect each row
HyperNeutrino
quelle
Sie können ersetzen ¶Çmit µfür -1.
Erik der Outgolfer
@EriktheOutgolfer ooh danke!
HyperNeutrino
4

Python 2 , 50 Bytes

lambda n:[i*`i%2`+`~i%2`+i*`i%2`for i in range(n)]

Probieren Sie es online!

Das gibt die Zeilen als eine Liste von Zeichenfolgen zurück.

Python 2 , 67 65 63 Bytes (formatiert)

n=input()
for i in range(n):k=i*`i%2`;print(n-i)*" "+k+`~i%2`+k

Probieren Sie es online!

Dies wird mit einem Leerzeichen in jeder Zeile ausgegeben.

Mr. Xcoder
quelle
3

Gelee , 8 Bytes

⁼€=ḂŒḄµ€

Probieren Sie es online!

-2 dank HyperNeutrino .

Erik der Outgolfer
quelle
Oh, im Ernst ... Sekundenbruchteil: p
Jonathan Allan
@ JonathanAllan Es war wirklich eine Regeländerung ... Übrigens denke ich, das ist auch golfen ...
Erik der Outgolfer
Ja, ich hatte ein 15-Byte-Raster, dann die 10-Byte-Listen ...
Jonathan Allan
1
@ JonathanAllan Hyper ist gut ...
Erik der Outgolfer
¬^Ḃkann werden, =Ḃweil NOT (XOR (A B))ist nur IFF (A B) bearbeiten anscheinend Golf ich mehr als ich dachte, ich hatte o_O lol
HyperNeutrino
3

Japt , 12 9 Bytes

õÈÇ¥Y^uÃê

Online testen!

Ziemlich traurig im Vergleich zu Jelly, aber Japt hat so etwas nicht, also muss ich mit dem auskommen, was ich habe ...

Erläuterung

 õÈ   Ç   ¥ Y^ uà ê
UõXY{XoZ{Z==Y^Yu} ê}      Ungolfed
                          Implicit: U = input number
Uõ                        Create the range [1..U].    [1, 2, 3, 4]
  XY{              }      Map each item X and 0-index Y in this to
     Xo                     Create the range [0..X).  [[0], [0, 1], [0, 1, 2], [0, 1, 2, 3]]
       Z{      }            Map each item Z in this to
         Z==Y                 Z is equal to Y         [[1], [0, 1], [0, 0, 1], [0, 0, 0, 1]]
             ^Yu              XORed with Y % 2.       [[1], [1, 0], [0, 0, 1], [1, 1, 1, 0]]
                  ê         Bounce.                   [[1],
                                                       [1, 0, 1],
                                                       [0, 0, 1, 0, 0],
                                                       [1, 1, 1, 0, 1, 1, 1]]
                          Implicit: output result of last expression
ETHproductions
quelle
Hurra für Builtins: P: P: P
HyperNeutrino
Jemand hat die Kette Python-Jelly-Python-Jelly gebrochen!
Mr. Xcoder
@ Mr.Xcoder Wo Jelly wirklich in Python implementiert ist. : p
Erik der Outgolfer
3

Mathematica, 77 Bytes

Table[CellularAutomaton[51,{{1},0},#,{All,All}][[i]][[#-i+2;;-#+i-2]],{i,#}]&

@ Kein Baum hat es auf 48 Bytes gebracht!

Mathematica, 48 Bytes

#&@@@NestList[CellularAutomaton@51,{{1},0},#-1]&
J42161217
quelle
Ich dachte nicht daran, es als zellulare Automaten zu betrachten. Nett!
HyperNeutrino
2
Das gleiche, aber Golfspieler:, #&@@@NestList[CellularAutomaton@51,{{1},0},#-1]&48 Bytes
Kein Baum
3

Pyth , 14 Bytes

Vielen Dank an @Jakube für das Speichern von 2 Bytes!

ms_+Bm%d2d%hd2

Probieren Sie es hier aus!

Pyth , 15 Bytes

Vielen Dank an @Jakube für -1 Byte

m++K*d]%d2%td2K

Probieren Sie es hier aus.

Pyth , 16 Bytes

m++K*d`%d2`%td2K

Probieren Sie es hier aus.

Mr. Xcoder
quelle
Entfernen Sie den zweiten ]im ersten Code.
Jakube
@ Jakube Ja, danke. Automatische Listifizierung für das Anhängen von Elementen an Listen wurde vergessen.
Mr. Xcoder
Und hier ist eine 14-Byte-Lösung:ms_+Bm%d2d%hd2
Jakube
@Jakube Ja, ich habe gerade über eine Gabelung nachgedacht, aber ich konnte das nicht, da ich auf dem Handy bin. Nochmals vielen Dank!
Mr. Xcoder
3

R , 73 Bytes

Vielen Dank an Giuseppe! Schöner Fang.

n=scan();for(i in 1:n)cat(c(rep(" ",n-i),x<-rep(1-i%%2,i-1)),i%%2,x,"\n")

Probieren Sie es online!

R , 78 Bytes

n=scan();for(i in 1:n)cat(x<-c(rep(" ",n-i),rep(1-i%%2,i-1)),i%%2,rev(x),"\n")

Probieren Sie es online!

R 82 Bytes

n=scan();for(i in 1:n){j=i%%2;x=c(rep(" ",n-i),rep(1-j,i-1));cat(x,j,rev(x),"\n")}

Probieren Sie es online!

R , 110 Bytes - Ausgabe auf Standardausgabe

m=matrix(x<-rep_len(0:1,n<-scan()),n,n-1);m[upper.tri(m,T)]=" ";for(i in 1:n)cat(rev(m[i,]),1-x[i],m[i,],"\n")

Probieren Sie es online!

R , 130 Bytes - Ausgabe in eine Datei

m=matrix(x<-rep_len(0:1,n<-scan()),n,n-1);m[upper.tri(m,T)]=" ";for(i in 1:n)cat(rev(m[i,]),1-x[i],m[i,],"\n",file="a",append=i>1)

Probieren Sie es online!

In eine Datei schreiben, da ich nicht weiß, wie ich sie in die Konsole einpassen soll, wenn n==99(siehe das Ergebnis hier ).

Djhurio
quelle
2
Ich glaube nicht, dass Sie sich Sorgen machen müssen, wenn die Konsole größere n einpackt. Persönlich würde ich das, file = "a" fallen lassen, da die Ausgabe zu STDOUT korrekt ist.
MickyT
1
73 Bytes
Giuseppe
1

Pascal , 181 154 Bytes

27 Bytes gespart dank @ThePirateBay

procedure f(n:integer);var i,j:integer;begin for i:=1to n do begin write(' ':(n-i+1)*2);for j:=1to i*2-1do write((ord(j<>i)+i)mod 2,' ');writeln()end end;

Probieren Sie es online!

Ungeplündert

procedure f (n: integer);
    var i, j: integer;
    begin
        for i := 1 to n do
        begin
            write(' ': (n-i+1) * 2);
            for j := 1 to i*2-1 do
                write((ord(j<>i) + i) mod 2, ' ')
            writeln()
        end
    end;
Uriel
quelle
1
126 Bytes
tsh
1

Retina , 25 Bytes

.+
$*0
0
1$`¶
T`d`10`¶.*¶

Probieren Sie es online! Erläuterung: Die erste Stufe konvertiert die Eingabe in eine Folge von Nullen dieser Länge. Die zweite Stufe nimmt dann alle Präfixe dieser Zeichenfolge (ohne die Zeichenfolge selbst) und stellt ihnen eine 1 voran. Die dritte Stufe schaltet dann die Bits auf abwechselnden Leitungen um.

Neil
quelle
1

05AB1E , 24 21 18 Bytes

FNÉN×NÈJûIN>-úˆ}¯»

Probieren Sie es online!


Edit: Nun, es ist mein erstes 05AB1E Golf, daher wundert es mich nicht, dass man Golf spielen kann. Verlauf bearbeiten:

LarsW
quelle
1

Mathematica, 90 Bytes

Array[(x=Table[1,f=(2#-1)];x[[⌈f/2⌉]]=0;If[#==1,{1},If[OddQ@#,x/.{1->0,0->1},x]])&,#]&
Mr. Xcoder
quelle
0

Kohle , 18 Bytes

EN⪫IE⁺¹ι﹪⁺ι¬λ² ‖O←

Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:

EN              For each of the input number of rows
  ⪫             Join with spaces
   I            Convert to string
    E⁺¹ι        For each column
        ﹪⁺ι¬λ²  Calculate the digit
‖O←             Reflect to the left
Neil
quelle
0

JavaScript, 140 132 Bytes (bei richtiger Formatierung)

n=>{A=Array;a='';b=0;for(x of A(n)){for(c of A(n-b))a+=' ';for(c of A(b))a+=b%2;a+=(b+1)%2;for(c of A(b))a+=b%2;a+='\n';b++}return a}

Probieren Sie es online

David Bailey
quelle
Wenn Sie nicht wussten, können Sie A=Array8 Bytes speichern.
Guter Punkt, daran habe ich nicht gedacht
David Bailey
Sie können mindestens 3 weiteres Bytes speichern: 1) Statt A=Array;Sie Variable init können A. Auf dem ersten Array - Aufruf (dh for(x of(A=Array)(n))) , das 1 Byte speichert, 2) Ersetzen '\n'mit wörtlicher neuer Linie (Verwendung Grab Akzente), 3) Sie müssen nicht Ich brauche Klammern, (b+1)%2weil es äquivalent zu ist b+1&1.
0

JavaScript (ES6) , 74 73 71 68 64 Byte

-7 Bytes von @Neil

f=n=>n--?[...f(n), [...Array(n-~n)].map((v,i)=>(n+(i==n))%2)]:[]

Probieren Sie es online!

Einfache rekursive Funktion, die die Zeilen einzeln generiert. Ausgabe als Array von Array von Zahlen.


Ausgaben als formatierter String:

JavaScript (ES6) , 122 119 118 Bytes

f=(n,w=2*n+1,N=n,s=" ".repeat((N-n)*2))=>(--n?f(n,w,N)+s+[...Array(n-~n)].map((v,i)=>(n+(i==n))%2).join(" "):s+1)+"\n"

Probieren Sie es online!

Birjolaxew
quelle
(n%2+(i==n))%2kann vereinfacht werden (n+(i==n))%2.
Neil
Oder 1&n^i==nkönnte funktionieren, aber ich habe es nicht getestet.
Neil
Versuchen Sie es auch n--?...:[]. (Und Sie brauchen nicht den ;Code Golf.)
Neil
2*n+1könnte sein n-~n, aber ich kann mich nie sicher erinnern.
Neil
@ Neil Danke! Fügte die hinzu, die ich arbeiten könnte
Fügte
0

Haskell , 54 Bytes

Einfaches Listenverständnis:

f n=[k++[mod i 2]++k|i<-[1..n],k<-[mod(i+1)2<$[2..i]]]

Probieren Sie es online!

ბიმო
quelle
0

J, 32 Bytes

3 :'-.^:(2|y)(=|.)i.>:+:y'&.>@i.

Probieren Sie es online!Dies ist eine anonyme Funktion, die eine Box-Liste mit Werten zurückgibt.

Ich stelle mir gerne vor, dass die explizite Funktionsdefinition durch das Entfernen von Großbuchstaben und dergleichen Bytes einspart, aber im Vergleich zu einer stillschweigenden Antwort wahrscheinlich ein paar Bytes hinzufügt.

Erläuterung

3 :'-.^:(2|y)(=|.)i.>:+:y'&.>@i.
                              i. For i = 0 ... input - 1
3 :'-.^:(2|y)(=|.)i.>:+:y'        Explicit function: compute nth row
                    >:+:y          2n+1
                  i.               Range [0,2n+1)
             (=|.)                 Equate range to reversed range
                                    (yield 0 0 0 ... 1 ... 0 0 0)
                                   If
                                    n = 1 (mod 2)
                                   Then
                                    Negate each value
                          &.>     Box
cole
quelle
0

05AB1E , 11 Bytes

FN°SRNF_}ûˆ

Probieren Sie es online!

Erläuterung

F             # for N in range [0 ... input-1] do:
 N°           # push 10^N
   S          # split to list of digits
    R         # reverse
     NF_}     # N times do: logical negation
         û    # palendromize
          ˆ   # add to global list
              # implicitly display global list
Emigna
quelle
0

J , 17 Bytes

(2&|~:0=i:)&.>@i.

Probieren Sie es online!

Gibt eine Liste von Boxed Arrays aus.

Erläuterung

(2&|~:0=i:)&.>@i.  Input: n
               i.  Range from 0 to n, exclusive end
           & >     Unbox each and perform on each x
        i:           Range from -x to x, inclusive
      0=             Equal to 0
    ~:               Not equal
 2&|                 x mod 2
           &.>       Perform inverse of unbox (box)
Meilen
quelle
0

Java 8, 121 111 109 101 Bytes

n->{String r[]=new String[n],t;for(int i=0,j;i<n;r[i++]=t+i%2+t)for(j=0,t="";j++<i;t+=i%2);return r;}

Mein aktueller Byte-Score (101) ist ebenfalls eine Zeile des binären Dreiecks. :)

Erläuterung:

Probieren Sie es hier aus.

n->{                         // Method with integer parameter and String-array return-type
  String r[]=new String[n],  //  Result String-array
         t;                  //  Temp String
  for(int i=0,j;             //  Some index-integers
      i<n;                   //  Loop (1) from 0 to `n` (exclusive)
      r[i++]=                //    After every iteration, set the next row to:
        t+                   //     `t` +
        i%2                  //     Center digit (`i` has already been raised by 1 now)
        +t)                  //     + `t` again
    for(j=0,t="";            //   Reset index `j` and the temp-String `t`
        j++<i;               //   Inner loop (2) from 0 to `i` (exclusive)
      t+=i%2                 //    Append `t` with an outer digit
    );                       //   End of inner loop (2)
                             //  End of loop (1) (implicit / single-line body)
  return r;                  //  Return resulting String-array
}                            // End of method
Kevin Cruijssen
quelle