Drucken Sie eine physikalische Multiplikationstabelle


40

Rechtecke haben diese nette Eigenschaft - ein Rechteck besteht aus genau Zeichen!n×mn×m

Eine interessantere Eigenschaft ist, dass die Rechtecke in einer Multiplikationstabelle gut ausgerichtet werden können - zum Beispiel in einer Tabelle:3×3

# ## ###

# ## ###
# ## ###

# ## ###
# ## ###
# ## ###

Ihre Herausforderung besteht darin, bei einer gegebenen Zahl ( ) eine formatierte Multiplikationstabelle auszugeben .nn>1n×n

Regeln

  • Sie können die Eingabe oberhalb oder unterhalb vonn
  • Es gelten die Standard-E / A-Regeln
  • Sie können ein beliebiges Nicht-Leerzeichen auswählen, um die Blöcke darzustellen. Jedes andere Zeichen (obwohl Zeilenumbrüche etwas Besonderes sind) wird als Leerzeichen betrachtet. Das gewählte Zeichen kann für verschiedene Eingaben unterschiedlich sein, muss jedoch für die gesamte Eingabe gleich sein
  • Das Ergebnis kann nicht benötigte Zeichen enthalten, solange die Tabelle ausgerichtet ist und keine Vorkommen des ausgewählten Zeichens vorhanden sind, die nicht Teil der erforderlichen Ausgabe sind
  • Die Trennzeichen müssen 1 Zeichen breit / hoch sein und die Rechtecke müssen gepackt sein (dh keine Trennzeichen zwischen ihren Zeichen)
  • Die Leerzeilen können leer sein, ein Auffüllen ist nicht erforderlich
  • Das Ergebnis kann eine Zeichenfolge, eine Matrix, ein Linienvektor, ein Array von Zeichenarrays oder eine 2D-Darstellung sein
  • Sie können alternativ eine Matrix / einen Vektor von Vektoren / eine beliebige zweidimensionale Anzahl von Zahlen ausgeben, aber der Hintergrund und der Vordergrund müssen zwei verschiedene Zahlen sein (die von Eingabe zu Eingabe variieren können, jedoch nicht über die gesamte Ausgabe) und es dürfen keine anderen Zahlen vorhanden sein. Zusätzliche umgebende Zeichen sind auch in diesem Format zulässig (obwohl sie mit der Hintergrundnummer übereinstimmen müssen).
  • Dies ist , kürzeste Antwort in Bytes, pro Sprache, gewinnt!

Beispiele

Für die Eingabe 2ist eine gültige ASCII-Kunst-Ausgabe mit dem Zeichen :

        ∙ ∙∙

Result: ∙ ∙∙.
        ∙ ∙∙

Ja, der Punkt ist nur da, um Sie zu verwirren.
Eine weitere gültige Antwort als Zahlenmatrix, wobei 2 die Hintergrundzahl und 9 der Vordergrund ist:

[[9,2,9,9,2,2],
 [2,2,2,2,2,2],
 [9,2,9,9,2,2],
 [9,2,9,9,2,2]]

Ein ungültiges Ausgabebeispiel wäre

#  # #


#  # #

#  # #

da die Rechtecke Trennzeichen zwischen sich haben.

Beispielausgaben für :4×4

# ## ### ####

# ## ### ####
# ## ### ####

# ## ### ####
# ## ### ####
# ## ### ####

# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####


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

Können wir zusätzliche Zeilen / Spalten mit Hintergrundzeichen vor und nicht am Ende der Tabelle haben?
Kirill L.

@KirillL. sicher, solange die reihen
anstehen

2
Nitpick: ∙ (U + 2219: BULLET OPERATOR) ist im ASCII-Zeichensatz nicht vorhanden. Auch nicht • (U + 2022: BULLET) oder ⋅ (U + 22C5: DOT OPERATOR) oder · (U + 00B7: MIDDLE DOT). :)
Andreas Rejbrand

Antworten:


10

Haskell , 43 Bytes

f n=map=<<flip(map.max)$show.(10^)=<<[1..n]

Probieren Sie es online!

Ein cleverer Ansatz von Ørjan Johansen, der mit Nullen und Einsen ausgibt und jeden 10...00Part als Zeichenfolgendarstellung einer Potenz von 10 generiert .

111111111
101001000
111111111
101001000
101001000
111111111
101001000
101001000
101001000

Haskell , 49 Bytes

f n=map=<<flip(map.max)$[0^i|x<-[1..n],i<-[0..x]]

Probieren Sie es online!

Erzeugt ein Muster wie [1,0,1,0,0,1,0,0,0,...], und erstellt dann eine 2D, indem die minPaare genommen werden. Die punktlose Verrücktheit spart 2 Bytes gegenüber den besser lesbaren:

f n|l<-do x<-[1..n];0:(1<$[1..x])=[[a*b|a<-l]|b<-l]

Probieren Sie es online!


3
Dies kann mit meinem alten Trick mit Dreieckszahlen verkürzt werden: 43 Bytes
Ørjan Johansen

1
Gerade realisiert flip(map.max)=mapM max.
Ørjan Johansen

@ ØrjanJohansen Whoa, wie geht das? Ich denke, du könntest eine eigene Antwort
posten

Stellen Sie die Monade (->) b, dann mapM :: (a -> b -> c) -> [a] -> b -> [c].
Ørjan Johansen

@ xnoder Sie haben vergessen, flip(map.max)zumapM max
Nur ASCII

9

R , 56 54 43 36 30 Bytes

x=!!sequence(2:scan())-1;x%o%x

Probieren Sie es online!

Übernimmt eine Eingabe über (gibt also eine 3x3-Matrix für ). Gibt eine Matrix aus (Vordergrund) und (Hintergrund) mit einer zusätzlichen Reihe / Spalte von Nullen vor.nn=41s0s

Dank digEmAll für -7 Bytes.


Danke, übrigens kann es wahrscheinlich sogar 30 sein, wenn die zusätzliche leere Zeile vor und nicht am Ende sein kann.
Kirill L.

Oh, können sie? Das habe ich vermisst !
digEmAll

6

JavaScript (ES6),  73 72  69 Bytes

Gibt eine Zeichenfolge aus Einsen, Leerzeichen und Zeilenumbrüchen zurück.

n=>(g=s=>n-->0?g(s+`${p+=1} `):s[~n]?(+s[~n]?s:'')+`
`+g(s):'')(p='')

Probieren Sie es online!


JavaScript (ES7),  87 83  82 Bytes

3 Bytes dank @dzaima gespeichert

Gibt eine binäre Matrix zurück, die Zelle für Zelle erstellt wird.

n=>[...Array(n*(n+3)/2)].map((_,y,a)=>a.map(h=(z,x)=>(17+8*x)**.5%1&&(z||h(1,y))))

Probieren Sie es online!

Wie?

Die Breite der Matrix ist gegeben durch:w

w=Tn+n1=(n+12)+n1=n(n+3)21

(Anmerkung: Wie es die Herausforderungsregeln erlauben, geben wir stattdessen eine Matrix mit der Breite .)w+1

In ähnlicher Weise ist die Zelle bei leer, wenn das folgende Quadrat eine Ganzzahlwurzel für entweder oder zulässt :(X,Y)k=Xk=Y

x(x+3)21k=0x2+3x22k=0

deren Determinante ist:

Δ=94(22k)=17+8k


Nicht sicher, ob es Bytes sparen kann, aber die Lösung dieses Quadrats wäre , also würde es eine Ganzzahlwurzel geben, wenn ungerade ist, das heißt , ist ein seltsames perfektes Quadrat. 3±17+8k2 ΔΔΔ
Erik der Outgolfer

5

MATL, 14 10 Bytes

:"@:Fv]g&*

Diese Antwort wird 1für die Blöcke und 0für den Hintergrund verwendet

Probieren Sie es bei MATL Online aus

Erläuterung

     % Implicitly grab the input as an integer, N
     %   STACK: { 3 }
:    % Create an array from 1...N
     %   STACK: { [1, 2, 3] }
"    % For each element M in this array
  @: % Create an array from 1...M
     %   STACK (for 1st iteration): { [1] }
     %   STACK (for 2nd iteration): { [1; 0], [1, 2] }
     %   STACK (for 3rd iteration): { [1; 0; 1; 2; 0], [1, 2, 3] }
  F  % Push a zero to the stack
     %   STACK (for 1st iteration): { [1], 0 }
     %   STACK (for 2nd iteration): { [1; 0], [1, 2], 0 }
     %   STACK (for 3rd iteration): { [1; 0; 1; 2; 0], [1, 2, 3], 0 }
  v  % Vertically concatenate everything on the stack
     %   STACK (for 1st iteration): { [1; 0] }
     %   STACK (for 2nd iteration): { [1; 0; 1; 2; 0] }
     %   STACK (for 3rd iteration): { [1; 0; 1; 2; 0; 1; 2; 3; 0] }
] 
g    % Convert everything to be boolean (turns all non-zeros to 1)
     %   STACK: { [1; 0; 1; 1; 0; 1; 1; 1; 0] }
&*   % Perform element-wise multiplication to expand this array out into the 2D grid
     % Implicitly display the result


4

APL (Dyalog Unicode) , 12 10 12 Byte SBCS

∘.×⍨∊,\0,⎕⍴1

Probieren Sie es online!

Edit: -2 Bytes von ngn. +2 Bytes, weil die vorherigen Antworten ungültig waren (mit Idee dank ngn und dzaima).

Erläuterung

∘.×⍨∊,\0,⎕⍴1

             Take input.
           1  An array of 1s of length our input. Example: 1 1 1
       0,      Prepend a 0. Example: 0 1 1 1
     ,\        Take all the prefixes and concatenate them. Example: 0  0 1  0 1 1  0 1 1 1
              Flatten the list. Example: 0 0 1 0 1 1 0 1 1 1
∘.×⍨           Turn the above list into a multiplication table of 0s and 1s
               by multiplying the list with itself.

Die Ausgabe sollte folgendermaßen aussehen:

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

1
Sie könnte nehmen Eingang als das zu vermeiden{ }
ngn

4

Gelee , 7 Bytes

‘RÄṬ|þ`

Probieren Sie es online!

Gibt eine Ziffernmatrix aus, wobei für die Rechtecke und für den Abstand zwischen ihnen verwendet wird. Der TIO-Link enthält eine Fußzeile, in der eine Ziffernmatrix durch Aneinanderreihen der Zeilen und Spalten lesbar formatiert wird.01

Erläuterung

‘RÄṬ|þ`
 R       Take a range from 1 to
‘          {the input} plus 1
  Ä      Cumulative sum; produces the first {input}+1 triangular numbers
   Ṭ     Produce an array with 1s at those indexes, 0s at other indexes
     þ   Create a table of {the array}
      `    with itself
    |      using bitwise OR

Die Zahl in Zelle der resultierenden Tabelle ist wenn entweder oder eine Dreieckszahl ist, oder sonst (weil bitweises ODER wie logisches ODER für 0 und 1 funktioniert). (Wir verwenden , reichen von 1, weil Jelly 1-basierte Indizierung verwendet, sodass wir uns keine Sorgen machen müssen, dass die Spalte 0 fälschlicherweise mit 0en gefüllt ist; wir müssen 1 zur Eingabe hinzufügen, weil das Array von erzeugt wird(x,y)1xy0Rstoppt am größten in der Eingabe angegebenen Element, daher müssen wir rechts und unten eine Linie zeichnen.) Die Lücken zwischen dreieckigen Zahlen sind die aufeinanderfolgenden ganzen Zahlen, sodass die rechteckigen Blöcke, die durch die Lücken zwischen den Linien gebildet werden, enden als die von der Frage geforderten Größen; und durch die Verwendung einer ODER-Verknüpfung (in diesem Fall bitweise) können sich die Zeilen korrekt kreuzen.


Warum ist das ein Community-Wiki ?! Wenn Sie auf einen Reiseleiter verzichten möchten, können Sie ihn Erik dem Outgolfer
Jonathan Allan

1
Ich behalte alle meine Antworten im Auge (es sei denn, ich glaube, sie erhalten möglicherweise ein Kopfgeld. In diesem Fall verwende ich ein temporäres Konto für sie). Ein hohes Ansehen anzustreben bedeutet normalerweise, die Website zu verschlechtern (ich habe einmal pro Tag eine Woche lang eine neue Version erstellt, um zu beweisen, dass dies möglich ist. Es war nicht besonders schwierig, aber es gab eine Menge flacher Fragen / Antworten, die nicht zutrafen.) t wirklich viel zur Website beitragen). Darüber hinaus ist es meistens negativ für das Konto, sich einen guten Ruf zu sichern, da die Website Sie dadurch dazu bringt, Moderationsarbeit zu leisten. und Privilegien zu erlangen erhöht das Risiko, versehentlich Abzeichen zu erhalten.
ais523

Außerdem bin ich größtenteils nicht mit dem Konzept des Besitzes von Posts auf SE einverstanden (obwohl es sich hauptsächlich um Fragen und nicht um Antworten handelt, aber Sie können keine Frage ohne Moderatorhilfe beantworten). Ein CW-Marker sagt sehr deutlich: "Wenn hier etwas nicht stimmt, können Sie es gerne bearbeiten". Also würde ich einen CW-Marker auf alles anwenden, auch wenn er nicht auf den Ruf verzichtet. SE soll ja ein Teil des Wikis sein, aber die Leute benutzen es nicht immer so.
ais523

RE "Streben nach einem hohen Ansehen" Wenn Sie das nicht wollen, posten Sie einfach, wenn Sie denken, dass es sinnvoll ist, und vermeiden Sie, was Sie als "flache" Fragen und Antworten bezeichnen. Entweder haben Sie das Gefühl, dass diese Antwort der Site etwas hinzufügt. In diesem Fall veröffentlichen Sie sie ohne CW, oder Sie halten sie für "flach". In diesem Fall veröffentlichen Sie sie einfach nicht. RE "Ich bin größtenteils nicht einverstanden mit dem Konzept der Inhaberschaft von Posts auf SE" - dann sind Sie einfach auf der falschen Seite.
Jonathan Allan

2
Ich denke, die Antwort fügt der Site etwas hinzu, aber wenn es nicht CW ist, fühle ich mich gezwungen, auf eine Art und Weise zu posten, die mir einen guten Ruf einbringt, anstatt das zu posten, was ich für interessant halte. Damals, als ich 20.000 Jahre alt war, hasste ich die Seite wirklich und hätte mich deswegen fast vom Codegolf im Allgemeinen abgewandt. Deshalb habe ich meinen Account gelöscht. Als ich zurückkam, löschte ich mein Konto mit jeder Antwort, die ich veröffentlichte (und erstellte eine neue für die nächste Antwort), aber jemand anderes wies darauf hin, dass CWing bei jeder Antwort einen ähnlichen Effekt hätte, also mache ich das heutzutage stattdessen.
ais523

4

05AB1E , 9 Bytes

Definiert ein Programm für .fNatList[List[Nat]]

Code:

$L×0ýSDδ*

Verwendet die 05AB1E- Kodierung . Probieren Sie es online! oder verwenden Sie die hübsche gedruckte Version .


Erläuterung:

$ # Drücken Sie die Nummer 1 und die Eingabe n 
 L # Erstellen Sie die Liste [1, 2, 3, ..., n ]
  × # Vektorisierte String-Multiplikation: 1 × [1, 2, 3, ..., n ]
                 Dies würde zu ["1", "11", "111", ..., "1" × n ] führen.
   0ý # Trete der resultierenden Liste mit '0' bei, was zu "10110111011110111110 ..." führt
     S # In einzelne Ziffern aufgeteilt: [1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, ...]
      Dδ * # Multiplikationstabelle mit sich selbst

4

C # (Visual C # Interactive Compiler) , 96 bis 95 Byte

-1 Byte dank Verkörperung der Ignoranz

n=>{var l="";for(;n>0;)l=new string('#',n--)+' '+l;for(;n<l.Length;)WriteLine(l[n++]>32?l:"");}

Probieren Sie es online!


Ich bin mir nicht sicher, ob die Eingabe über ein Argument, aber die Ausgabe über stdout zulässig ist
ASCII

3
Das Mischen von E / A-Formaten ist in Ordnung
Jo King,

1
Warum nicht das n--im new stringAbschnitt hinzufügen ?
Verkörperung der Ignoranz




3

Kohle , 18 Bytes

≔⪫EN×#⊕ι θEθ⭆θ⌊⟦ιλ

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

   N                Input number
  E                 Map over implicit range
       ι            Current value
      ⊕             Incremented
    ×               Repetitions of
     #              Literal `#`
 ⪫                  Join with spaces
≔        θ          Assign to variable
           θ        Retrieve variable
          E         Map over characters
             θ      Retrieve variable
            ⭆      Replace characters with
              ⌊     Minimum of
               ⟦    List of
                ι   Row character
                 λ  Column character
                    Implicitly print each row on its own line

3

C # (.NET Core) , 208 155 Bytes

class M{static void Main(string[]a){int i=int.Parse(a[0]);var l="";for(;i>0;)l=new string('#',i--)+' '+l;for(;;)System.Console.WriteLine(l[i++]>32?l:"");}}

Probieren Sie es online!

Eine viel überarbeitete Version dank verschiedener hilfsbereiter Leute (siehe die Kommentare).




1
@EmbodimentofIgnorance ungültig, funktioniert nicht für n> = 10 ...
Nur ASCII

1
@ ASCII-only das funktioniert: tio.run/…
Verkörperung der Ignoranz

2
@Stackstuck Ja. Ein Programm kann durch einen Absturz beendet werden
ASCII


3

Java 11, 109 Bytes

n->{var l="";for(;n>0;)l="x".repeat(n--)+" "+l;for(;n<l.length();)System.out.println(l.charAt(n++)>32?l:"");}

Port der C # .NET-Antwort von @ ASCII-only .

Probieren Sie es online aus.

n->{                       // Method with integer parameter and no return-type
  var l="";                //  Line-String, starting empty
  for(;n>0;)               //  Loop until `n` is 0:
    l=...+l;               //   Prepend to `l`:
       "x".repeat(n--)+" " //    Repeat "x" `n` amount of times, appended with a space
                           //    And decrease `n` by 1 afterwards with `n--`
    for(;n<l.length();)    //   Inner loop as long as `n` is smaller than the length of `l`:
      System.out.println(  //    Print with trailing newline:
        l.charAt(n++)>32?  //     If the `n`'th character of the line-String is NOT a space:
                           //     And increase `n` by 1 afterwards with `n++`
         l                 //      Print the line-String
        :                  //     Else:
         "");}             //      Print nothing (so only the newlines)

Aufgrund der repeatMethode ist es Java 11, nicht 8 .
Olivier Grégoire

@ OlivierGrégoire Ups .. Behoben
Kevin Cruijssen

Aber ist es akzeptabel, ein Lambda zu haben, das eine Ausnahme auslöst? Ich fand es okay für ein volles Programm, aber nicht für Funktion / Ausnahmen
Olivier Grégoire

@Oliviergrégoire Solange es noch das erwartete Ergebnis ausgibt, verstehe ich nicht warum nicht tbh.
Kevin Cruijssen

1
Dies ist mit dieser Diskussion verbunden . Die Antwort scheint zu sein, wenn REPL akzeptiert werden (was nicht die Standardeinstellung ist). Es ist in Ordnung, auf stderr zu drucken oder eine Ausnahme auszulösen. Wenn REPL jedoch nicht akzeptiert wird, sind keine std / Ausnahmen zulässig.
Olivier Grégoire

2

APL + WIN, 29 Bytes

m/⍉(m←¯1↓∊(⍳n),¨¯1)/(n,n←⎕)⍴1

Erläuterung:

(n,n←⎕)⍴1 prompt for integer n and create a nxn matrix of 1s

(m←¯1↓∊(⍳n) replicate the columns by 1,2,.....n and insert 0s between each replication

m/⍉ repeat replication and 0 insertion for the rows from above 

Beispiel:

⎕:
3
1 0 1 1 0 1 1 1
0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1
1 0 1 1 0 1 1 1
0 0 0 0 0 0 0 0
1 0 1 1 0 1 1 1
1 0 1 1 0 1 1 1
1 0 1 1 0 1 1 1



2

Ruby , 55 Bytes

->n{(s=(1..n).map{|x|?#*x}*' ').chars.map{|c|c<?!?c:s}}

Probieren Sie es online!

Wie?

Erstellen Sie zuerst die erste Zeile und durchlaufen Sie dann die Zeichen. Gibt die gesamte Zeile aus, wenn das Zeichen '#' ist, andernfalls wird das einzelne Zeichen (das ein Leerzeichen ist) gedruckt.



2

Perl 6 , 35 33 Bytes

{((\*Xx$_+1)~"
"Xx$_+1)>>.say}o^*

Probieren Sie es online!

Anonym Callable, der eine Zahl annimmt und die Multiplikationstabelle mit *s mit einer nachgestellten Newline druckt.

Erläuterung:

{                             }o^* # Change the input to the range 0..n-1
  (\*Xx$_+1)    # Cross string multiply '*' by all of range 1..n
                # This creates the string "* ** *** ****" etc.
            ~"\n"                 # Append a newline
                 Xx$_+1           # Cross string multiply again
 (                     )>>.say    # And print all the lines

1

Haskell, 69-68 Bytes

(a#b)0=[]
(a#b)n=(a#b)(n-1)++b:(a<$[1..n])
f n=((1#0)n#(0<$(1#0)n))n

Gibt eine Zahlenmatrix zurück.

Probieren Sie es online!

Varianten fmit der gleichen Byteanzahl:

f n=((#)<*>(0<$)$(1#0)n)n
f n|l<-(1#0)n=(l#(0<$l))n

Helfen die Zeilen und Spalten 0?
16.

1
@dfeuer: ja, sie sparen ein byte. Siehe die erste Version meiner Antwort.
Nimi


1

MathGolf , 20 Bytes

╒ÉÄ10;]h\■mÆε*╣¡§y╠n

Probieren Sie es online!

MathGolf braucht dringend mehr Funktionen zum Teilen von Listen und zum Erstellen von 2D-Listen.

Erläuterung

╒                      range(1,n+1)
 É                     start block of length 3
  Ä                    start block of length 1
   1                   push 1
    0                  push 0
     ;                 discard TOS
      ]                end array / wrap stack in array
                       the stack now contains the list [1, 0, 1, 1, 0, 1, 1, 1, 0, 1, ...]
       h               length of array/string without popping (used for splitting string)
        \              swap top elements
         ■             cartesian product with itself for lists, next collatz item for numbers
          m            explicit map
           Æ           start block of length 5
            ε*         reduce list by multiplication (logical AND)
              ╣¡       push the string " #"
                §      get character at index 0 or 1 based on logical AND value
                       block ends here, stack is now ['#',' ','#','#',' ','#',...]
                 y     join array without separator to string
                  ╠    pop a, b, push b/a (divides the string using the length of a single line)
                   n   join array of strings with newlines

1

Tinte , 151 152 151 Bytes

VAR k=0
=t(n)
~k=n
-(u)
~n--
{n+1:->s(k-n)->u}->->
=r(c)
->g(c)->
{k-c:<>->r(c+1)}->->
=g(n)
{n>1:@<>->g(n-1)}@->->
=s(n)
{n:
->r(1)->
->s(n-1)
}
.->->

Probieren Sie es online!

Gut, dass die Regeln überschüssige Zeichen zulassen.

Edit: +1: Feste Abstände. Zeigen Sie auch mit @ (ohne Escape-Zeichen) anstelle von # (ohne Escape-Zeichen) an.

Edit: -1: Anscheinend bedeutete dieses Update auch, dass ich keine Wartezeit mehr benötigte, um eine neue Zeile auf die nicht leeren Zeilen zu zwingen. Ordentlich.


Ohh, diese Räume habe ich eigentlich gar nicht bemerkt. Ich werde sehen, ob ich etwas dagegen tun kann ...
Sara J

1

C ++, 170 bis 156 Bytes

Danke an dzaima

#include<string>
using v=std::string;v f(int a){v s;for(int i=1;i<=a;++i,s+='\n')for(int k=0;k<i;++k,s+='\n')for(int j=1;j<=a;++j)s+=v(j,'#')+' ';return s;}


0

SmileBASIC, 83 77 Bytes

Grafische Ausgabe. Eingabe istN-1

INPUT N
FOR J=0TO N
X=0FOR I=0TO N
GFILL X,Y,X+I,Y+J
X=X+I+2NEXT
Y=Y+J+2NEXT


0

Perl 6, 63 Bytes

{(1..$_).map(((1..$_).map("#"x*).join(" ")~"\n")x*).join("\n")}

1
.join(' ')tut nichts, '#'kann \*stattdessen sein, die Zeilenumbrüche können wörtliche Zeilenumbrüche verwenden, beides l.map(str x*)kann (str Xx l)stattdessen sein. 38 Bytes
Jo King

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.