Schreiben Sie ein Programm oder eine Funktion, die eine nicht negative Ganzzahl N von stdin oder als Funktionsargument aufnimmt. Es muss eine Zeichenfolge eines hohlen ASCII-artigen Quadrats drucken oder zurückgeben, dessen Seiten jeweils mit N Kopien der Nummer N versehen sind.
Speziell:
Wenn N ist 0
, werden keine Kopien von N verwendet, sodass keine Ausgabe erfolgen sollte (oder nur eine einzelne nachgestellte Zeile).
Wenn N ist 1
, ist die Ausgabe:
1
Wenn N ist 2
:
22
22
Wenn N ist 3
:
333
3 3
333
Wenn N ist 4
:
4444
4 4
4 4
4444
Wenn N ist 5
:
55555
5 5
5 5
5 5
55555
Das Muster setzt sich für 6
durch 9
.
Wenn N ist 10
, ist die Ausgabe:
10101010101010101010
10 10
10 10
10 10
10 10
10 10
10 10
10 10
10 10
10101010101010101010
Beachten Sie, dass dies nicht wirklich quadratisch ist. Es ist 10 Zeilen hoch, aber 20 Spalten breit, da 10
es zwei Zeichen lang ist. Das ist beabsichtigt. Der Punkt ist, dass jede Seite des "Quadrats" N Kopien von N enthält. Also werden alle Eingaben darüber hinaus 9
technisch ASCII-Rechtecke sein.
Wenn beispielsweise N ist 23
, ist die Ausgabe:
2323232323232323232323232323232323232323232323
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
2323232323232323232323232323232323232323232323
Hier sind Pastebins der erforderlichen Ausgaben für 99
, 100
, 111
, und 123
(sie in einem Browser falsch aussehen, aber in einem Texteditor werden sie richtig aussehen). Die Ausgabe für 1000
ist für Pastebin zu groß, hätte aber 1000 Zeilen und 4000 Spalten. Zahlen mit 4 oder mehr Ziffern müssen genau wie kleinere Zahlen funktionieren.
Einzelheiten:
- N muss in der üblichen Dezimalzahldarstellung ohne
+
Vorzeichen oder andere Nicht-Ziffern geschrieben werden. - Der Hohlraum darf nur mit Leerzeichen gefüllt werden.
- Zeilen dürfen keine führenden oder nachfolgenden Leerzeichen enthalten.
- Optional ist eine einzelne Zeile nach der letzten Zeile der Quadrate zulässig.
- Sprachen, die nach dieser Herausforderung geschrieben wurden, sind willkommen. Sie sind einfach nicht gewinnberechtigt .
- Der kürzeste Code in Bytes gewinnt!
quelle
Antworten:
Jolf,
31272523 BytesDies ist in der ISO-8859-7-Codierung codiert und enthält nicht druckbare Dateien.
Probieren Sie diese Geige online aus oder überprüfen Sie alle Testfälle auf einmal (verwenden Sie die Schaltfläche für den vollständigen Start) .
Dies wird mit einem Fehler für n = 0 beendet, der standardmäßig zulässig ist.
Ein großes Dankeschön an Conor für das Abschlagen von
46! Bytes. inb4 durchgestrichen vier sieht immer noch aus wie ein Kommentar vierErläuterung
quelle
xxd -r
.Versendet , 317 Bytes
Während ich die Frage stelle, kann ich meine neue "puristische" Sprache zur Schau stellen.
(Funktioniert definitiv in v1.0.0 )
In Shtriped sind keine mathematischen Operationen integriert, außer Inkrementieren und Dekrementieren. Es gibt auch keine Schleifen oder Bedingungen, so dass all diese Dinge in jedem Programm von Grund auf neu aufgebaut werden müssen.
Das ist, was mein Programm macht, zB
@
ist im Wesentlichen eine for-Schleife,+
ist eine Additionsfunktion,}
ist>=
. Die tatsächliche Ausgabe wird nur in den letzten 8 Zeilen des Programms erzeugt.In Shtriped gibt es auch keine Zeichenketten. Sie können Zeichenfolgen eingeben und ausdrucken, aber alle werden intern als Ganzzahlen mit willkürlicher Genauigkeit dargestellt, die nur inkrementiert und dekrementiert werden können. Es gibt also keine einfache Möglichkeit, die Länge der Zeichenfolge
10
zum Ausfüllen der quadratischen Mitte mit der richtigen Anzahl von Leerzeichen zu ermitteln. Ich musste die Funktion zusammensetzen~
, die effektiv berechnetfloor(log10(N)) + 1
, um die Länge von N in Dezimal zu finden.Dies könnte wahrscheinlich ein bisschen besser sein, indem man wo und wie welche Variablen verwendet werden, aber nicht so viel mehr. An den inhärenten Einschränkungen von Shtriped führt kein Weg vorbei. (Es war sowieso nie als Golfsprache gedacht.)
Kommentierter Code (ein Backslash ist ein Kommentar):
quelle
Im Ernst,
32313029 BytesProbieren Sie es online!
Erläuterung:
quelle
JavaScript (ES6),
73 8278 ByteA4 Bytes dank @ user81655 gespeichert
Nimmt eine Zeichenfolge und keine Zahl für die Eingabe.
Probieren Sie es online aus (alle Browser funktionieren)
quelle
*(n-2)
mit*~-~-n
einem Byte zu speichern.MATL ,
342926 BytesDies funktioniert mit der aktuellen Version (13.0.0) der Sprache / des Compilers
Probieren Sie es online!
quelle
T-SQL / SQL Server 2012+,
167161 ByteAusgabe:
LiveDemo
Geben Sie die gewünschte Größe ein und klicken Sie Run query, um die Textdarstellung zu erhalten.
Bitte beachten Sie, dass in dieser Demo keine Schrift mit fester Breite angezeigt wird . Ist
7
also dicker als1
.BEARBEITEN:
Wenn wir Eingaben als Zeichenfolge behandeln:
LiveDemo2
quelle
Julia, 78 Bytes
Dies ist eine anonyme Funktion, die eine Ganzzahl akzeptiert und das ASCII-Rechteck an STDOUT ausgibt. Um es aufzurufen, weisen Sie es einer Variablen zu.
Ungolfed:
Probieren Sie es online aus
quelle
Ruby, 100 Bytes
Schade, dass ich es nicht geschafft habe, JS zu schlagen. Jede weitere Hilfe beim Golfspielen wäre willkommen.
Hier ist eine mehr oder weniger ungolfed Version:
quelle
n.to_s
da Sie sie so häufig verwenden, dass Siem*n
für den ersten Teil undm+" "*[(n-2)*m.length,0].max+m
für den zweiten Teil erhalten.Netzhaut, 76 Bytes
Erklärung kommt vielleicht morgen.
Probieren Sie es hier online aus.
quelle
C ++ 14, 156 Zeichen
Ich fand es eine ziemlich coole Lösung, obwohl die meisten anderen Einträge hier offensichtlich nicht zu toppen sind.
Ungolfed:
Und wie immer, um die Funktion aufzurufen, verwenden Sie
[](string t) { ... }("10");
quelle
TSQL,
112104 Bytesquelle
Minkolang 0,15 , 57 Bytes
Probieren Sie es hier aus!
Erläuterung
quelle
Perl,
797674 BytesZiemlich einfach. Das erste Befehlszeilenargument wird als Zahl verwendet. Platziere das Skript in einer Datei und starte mit
perl file.pl 1
.quelle
shift
kann durch ersetzt werdenpop
.Perl,
626058 + 2 = 60 BytesBenötigt
-nlE
Flaggen:Mit Leerzeichen hinzugefügt:
quelle
R, 90 Bytes
Dies erzeugt eine
x*x
Größenmatrix und füllt sich dann mit Größenräumennchar(x)
. Wennx
kleiner als 2, wird nichts gefüllt.quelle
x=scan();m=matrix(x,x,x);m[k<--c(1,x),k]=format("",w=nchar(x));write(m,"",x,,"")
ist 10 Byte weniger, wenn negative Indizierung und Ersetzungn=x,s=''
durchx,,''
tio.run/nexus/r#DYpBCsAgDAT/…write("[<-"(matrix(x<-scan(),x,x),k<--c(1,x),k,gsub("."," ",x)),1,x,,"")
für 72 Bytes.Pyth - 26 Bytes
Probieren Sie es hier online aus .
quelle
Pip
-l
, 21 BytesVerwendet Sprachfunktionen, die neuer sind als die Frage, die gemäß der aktuellen Richtlinie zulässig ist. Wenn der Wortlaut der Frage so interpretiert wird, dass er diese Richtlinie außer Kraft setzt, lesen Sie die 25-Byte-Antwort weiter unten.
Probieren Sie es online!
Danke an Luis Mendos MATL-Antwort für den
(a+1)%n<2
Trick.Erläuterung
Yq
liest eine Zeile aus stdin und reißt sie hineiny
. Dann:Ursprüngliche Antwort 2016, 25 Bytes (plus
-l
Flag):Änderungsprotokoll:
MC
wurde vor kurzem hinzugefügt; Zu der Zeit verwendete ichMMCG
(Karte-Karte + Koordinaten-Gitter).++
von Listen verhinderte , musste ich stattdessen++*
Folgendes tun (++
auf jedes Element anwenden ).M
ap wurde erweitert: gibt jetzt<string1> M <string2>
eine Liste vonlen(<string2>)
Kopien von<string1>
; Zu der Zeit habe ich dassX#y
Zeichenfolgen-wiederholende Leerzeichen von verwendetlen(y)
.quelle
Pyth,
3730 BytesProbieren Sie es hier aus.
quelle
Netzhaut , 90
Auch hier bin ich mir ziemlich sicher, dass dies von den Experten sehr gut gespielt werden kann:
Probieren Sie es online aus.
quelle
¶
anstatt;
die letzte Stufe loszuwerden?)[^¶]+
ist handlich.+
.Gelee, 28 Bytes
Grr, kann nicht sagen, ob Jelly schlecht in Streichern ist oder ob ich schlecht in Jelly bin.
Probieren Sie es online aus.
quelle
Pyke , 33 Bytes (nicht konkurrenzfähig)
Erläuterung:
quelle
CJam, 27 Bytes
Vielen Dank an @ MartinBüttner für den Vorschlag
ff
. Dasa+[0X(]&
ist ziemlich faul, aber na ja.Probieren Sie es online!
quelle
Python 2, 70 Zeichen
quelle
Haskell, 78 Bytes
Anwendungsbeispiel:
Die Funktion
>>
ist praktisch:<list> >> <string>
machtlength <list>
Kopien<string>
, zB Kopf- und Fußzeilen fürx=10
sind[1..10] >> "10"
->"10101010101010101010"
.quelle
1
welche Shout-Ausgabe eine Single1
. Außerdem geben Sie eine Liste von Zeichenfolgen zurück, während die Abfrage nach einer einzelnen Zeichenfolge fragt. Wir hatten damals viel strengere E / A-Regeln, flexible E / A-Regeln sind eine neuere Sache.Perl, 72 Bytes
Verlässt sich auf moderne Perl-Funktionen:
ist seit Perl 5.10 automatisch verfügbar (verwenden Sie einfach v5.10 oder höher).
glücklich übernimmt auf einem R - Wert (ein str_expr nicht notwendigerweise reduziert auf einen skalare Variable) gereinigt , wobei eine arbeiten r RGEBNIS (die ‚ r ‘ Option am Ende des regulären Ausdrucks) , ohne die anfängliche str_expr zu verändern.
quelle
PHP, 151 Bytes
Absolutes Chaos, brauche mehr Zeit, um zu optimieren.
s(Number)
gibt Ihnen die Ausgabe.quelle
Java 8, 280 Bytes
Es ist nur etwa zehnmal so lang wie die kürzesten Antworten, was für Java wirklich gut ist!
Beispiellauf:
quelle
Python 3,
10896148 BytesUngolfed / erklärt:
Da dies meine erste Code-Golf- Antwort ist, wären konstruktive Kritik und / oder Vorschläge hilfreich!
quelle
while b!=0:print(a+" "*int(len(a))*c+1);b-=1
. Darüber hinauswhile b:
ist äquivalent zuwhile b!=0
, so dass 3 weitere Bytes weg sind.Rust,
141137 BytesEinige Formatierungen missbraucht, sonst wäre dies viel länger gewesen.
Unverpackt:
Spielplatz-Link
quelle
Powershell,
989695838275 BytesUngolfed und erklärtes Testskript:
Ausgabe:
quelle