Rechtecke haben diese nette Eigenschaft - ein Rechteck besteht aus genau Zeichen!
Eine interessantere Eigenschaft ist, dass die Rechtecke in einer Multiplikationstabelle gut ausgerichtet werden können - zum Beispiel in einer Tabelle:
# ## ###
# ## ###
# ## ###
# ## ###
# ## ###
# ## ###
Ihre Herausforderung besteht darin, bei einer gegebenen Zahl ( ) eine formatierte Multiplikationstabelle auszugeben .
Regeln
- Sie können die Eingabe oberhalb oder unterhalb von
- 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 Code-Golf , kürzeste Antwort in Bytes, pro Sprache, gewinnt!
Beispiele
Für die Eingabe 2
ist 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 :
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
# ## ### ####
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
Antworten:
Haskell , 43 Bytes
Probieren Sie es online!
Ein cleverer Ansatz von Ørjan Johansen, der mit Nullen und Einsen ausgibt und jeden
10...00
Part als Zeichenfolgendarstellung einer Potenz von 10 generiert .Haskell , 49 Bytes
Probieren Sie es online!
Erzeugt ein Muster wie
[1,0,1,0,0,1,0,0,0,...]
, und erstellt dann eine 2D, indem diemin
Paare genommen werden. Die punktlose Verrücktheit spart 2 Bytes gegenüber den besser lesbaren:Probieren Sie es online!
quelle
flip(map.max)=mapM max
.(->) b
, dannmapM :: (a -> b -> c) -> [a] -> b -> [c]
.flip(map.max)
zumapM max
R ,
5654433630 BytesProbieren 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.n n = 4 1 s 0 s
Dank digEmAll für -7 Bytes.
quelle
JavaScript (ES6),
73 7269 BytesGibt eine Zeichenfolge aus Einsen, Leerzeichen und Zeilenumbrüchen zurück.
Probieren Sie es online!
JavaScript (ES7),
87 8382 Bytes3 Bytes dank @dzaima gespeichert
Gibt eine binäre Matrix zurück, die Zelle für Zelle erstellt wird.
Probieren Sie es online!
Wie?
Die Breite der Matrix ist gegeben durch:w
(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 = X k = Y
deren Determinante ist:
quelle
MATL,
1410 BytesDiese Antwort wird
1
für die Blöcke und0
für den Hintergrund verwendetProbieren Sie es bei MATL Online aus
Erläuterung
quelle
Gelee , 8 Bytes
Probieren Sie es online!
quelle
APL (Dyalog Unicode) ,
121012 Byte SBCSProbieren 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
Die Ausgabe sollte folgendermaßen aussehen:
quelle
⎕
das zu vermeiden{
}
Gelee , 7 Bytes
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.0 1
Erläuterung
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) 1 x y 0
R
Ṭ
stoppt 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.quelle
05AB1E , 9 Bytes
Definiert ein Programm für .f: Nat→List[List[Nat]]
Code:
Verwendet die 05AB1E- Kodierung . Probieren Sie es online! oder verwenden Sie die hübsche gedruckte Version .
Erläuterung:
quelle
C # (Visual C # Interactive Compiler) ,
96 bis95 Byte-1 Byte dank Verkörperung der Ignoranz
Probieren Sie es online!
quelle
n--
imnew string
Abschnitt hinzufügen ?Python 2 , 67 Bytes
Probieren Sie es online!
Druckt Leerzeilen für Leerzeilen, was die Abfrage zulässt.
Gleiche Länge (bei Eingabe einer oben
n
):Probieren Sie es online!
quelle
Wolfram Language (Mathematica) , 41 Bytes
Probieren Sie es online!
quelle
Kohle , 18 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
quelle
C # (.NET Core) ,
208155 BytesProbieren Sie es online!
Eine viel überarbeitete Version dank verschiedener hilfsbereiter Leute (siehe die Kommentare).
quelle
PowerShell ,
42 bis40 Byte-2 Bytes dank mazzy .
Probieren Sie es online!
quelle
Java 11, 109 Bytes
Port der C # .NET-Antwort von @ ASCII-only .
Probieren Sie es online aus.
quelle
repeat
Methode ist es Java 11, nicht 8 .APL + WIN, 29 Bytes
Erläuterung:
Beispiel:
quelle
J , 17 Bytes
Probieren Sie es online!
quelle
I.
Trick!Mouse-2002 , 79 Bytes
Missbrauch von Mausmakros zur Wiederholung von Funktionen.
Probieren Sie es online!
quelle
Ruby , 55 Bytes
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.
quelle
Brain-Flak , 170 Bytes
Probieren Sie es online!
quelle
Perl 6 ,
3533 BytesProbieren Sie es online!
Anonym Callable, der eine Zahl annimmt und die Multiplikationstabelle mit
*
s mit einer nachgestellten Newline druckt.Erläuterung:
quelle
Haskell,
69-68BytesGibt eine Zahlenmatrix zurück.
Probieren Sie es online!
Varianten
f
mit der gleichen Byteanzahl:quelle
Stax , 7 Bytes
Führen Sie es aus und debuggen Sie es
Der gewählte Charakter ist backtick. (Wie codiert man das Format im Markdown?)
Das bedeutet
a
undb
gilt als fremdes Leerzeichen.quelle
MathGolf , 20 Bytes
Probieren Sie es online!
MathGolf braucht dringend mehr Funktionen zum Teilen von Listen und zum Erstellen von 2D-Listen.
Erläuterung
quelle
Tinte ,
151152151 BytesProbieren 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.
quelle
C ++,
170 bis156 BytesDanke an dzaima
quelle
SmileBASIC,
8377 BytesGrafische Ausgabe. Eingabe ist
N-1
quelle
Python 3 ,
8883 Bytes-5 Bytes von Jo King
Probieren Sie es online!
quelle
l
außerhalb der Schleife deklarieren . Probieren Sie es online!Perl 6, 63 Bytes
quelle
.join(' ')
tut nichts,'#'
kann\*
stattdessen sein, die Zeilenumbrüche können wörtliche Zeilenumbrüche verwenden, beidesl.map(str x*)
kann(str Xx l)
stattdessen sein. 38 BytesC (gcc) ,
108104 Bytes-4 Bytes dank Ceilingcat
Probieren Sie es online!
quelle