Ausgabe
# # # # # ##### ## # ## #### ####### # # ## #### ## ## # ### ####### # # # # ##### ### # # # # ### ##### ##### # # # ####### ### # ### # ## #### ## # # ### # ####### ## # ## ##### ##### # # # ## # # # # ##### # ## ## ######## # ####### #### ## # ### ### # # # # # ##### # # # # ### ##### # #### ####### ### # ## ## ## # # ####### # # ## ##### # # # # ##### ## # # ####### # # ## ## ## # ### ####### #### # ##### ### # # # # ##### # # # # # ### ### # ## #### ######## # ####### ## ## # ##### # # # # ## # # # ##### ##### ## # ## ####### # ### # # ## #### ## # ### # ### ####### # # # ##### ##### ### # # # # ### ##### # # # # ####### ### # ## ## #### ## # # ####### #### ## # ## ##### # # # # # # ## #### # # # # ### ####### ## # # ## ##### ## # ### # # ## # ### ######## ##### ### # # # # # ## #### #### ## # # # # # # # # ##### ## #### ####### # #### ## ## # ### # # # # ##### # # ### ##### ##### # ####### ### # ### # ## ## # # ### # ######## # ## ##### ##### # # ## # # # ## ## ####### #### ### # # # # # # # # ### #### ####### ## ## # # # ##
Leerzeichen erlaubt. Kürzeste Lösung gewinnt.
Hinweis 1:
danke @Tahg für die Korrektur von hint1
Antworten:
SOGL V0.12 ,
171614 BytesProbieren Sie es hier aus!
Bei einem späteren Update
č▓
könnte für 12 Byte - das konvertiert ToS aus einem Array von Arrays von Zeichen eine mehrzeilige Zeichenfolge in ein Array von Zeichenfolgen - entfernt werden[["#","#"],[" ","#"]] -> ["##"," #"]
-, weil┼
- horizontales Anhängen - Arrays von Arrays von Zeichen - was nicht gut funktioniertI
erstellt, weil es auch für die Array-Rotation verwendet wird. In SOGL sollte ein Array von Zeichenarrays = Array von Zeichenfolgen sein, aber viele Dinge unterstützen das noch nicht.Erläuterung:
quelle
JavaScript (ES6),
233217213198182170163122 BytesBearbeiten: Gespeichert
1418 Bytes dank @Shaggy gespeichert. 3 Bytes dank @ngn gespeichert. Dank der Zusammenarbeit der beiden wurden weitere 12 Bytes eingespart. 41 Bytes wurden gespart, indem @ user202729s Beobachtungen gestohlen wurden, dass die Viertel eher Reflexionen als Rotationen verwenden. Ungolfed:quelle
f=
hier zählen? Übrigens gut gemacht.f=
in Byte zählen, aber Code-Snippet funktioniert nicht ohne.LOGO,
375341297295278 + 3 BytesDurch das Hinzufügen von 3 Bytes aufgrund des
-p
Flags, das den Perspektivmodus standardmäßig aktiviert und daher keinenperspective
Befehl ausführen muss , werden insgesamt 9 Bytes eingespart.Verwenden von FMSLogo unter Windows mit dem Newline-Format von Unix (LF) (FMSLogo hat Probleme beim Parsen des CR-Newline-Formats)
Leider kein "online ausprobieren!" Link, da ich keinen Perspektivmodus für die Unterstützung von Online-Dolmetschern finde.
Idee: Zeichnen Sie ein Bild des Bildes, rufen Sie dann die Pixel des Bildes ab und drucken Sie es als Ausgabe.
Bildaufteilung auf einfache Wiederholteile:
.
Nutzen Sie den obigen Hinweis. Da LOGO jedoch keine Reflexion unterstützt, können wir dies nur simulieren, indem Sie in den 3D (
perspective
) -Modus wechseln und die Schildkröte um 180 Grad um eine Achse parallel zum Computerbildschirm drehen.Dies definiert eine Hilfsfunktion
g
, die bei 2 Parameternl
(Bildseitenlänge) undw
(Verfahren zum Zeichnen des Bildes) 3 Kopien des reflektierten Bildes zeichnet. (siehe Hinweis in der Frage) Die Prozedurh
führt die Hauptprozedur durch.quelle
90 fd
-> weglassen90fd
und ein paar Bytes sparen.05AB1E ,
3026 BytesProbieren Sie es online!
quelle
CJam , 30 Bytes
Probieren Sie es online!
quelle
Python 2 ,
205195 ... 145144142144 BytesProbieren Sie es online!
Inspiriert von Neils JS-Antwort .
quelle
n>>1
istn/=2
.a
wird definiert und dann einmal verwendet. Durch Ersetzen der Referenz durch ihren Wert könnten vier Bytes eingespart werden.[...[x],...[x]][z]
Auswahl vereinfachen .Haskell,
126125113106103 BytesEine direkte Implementierung von hint1 im Spoiler.
Funktion
m
generiert die nächste Iteration. Die Hauptfunktionen geltenm
6 mal. Details zum
:Edit: @ngn speicherte ein Byte und @Laikoni ein weiteres 3. Danke!
quelle
n$n$n$n$n$n["#"]
ist kürzer alsiterate n["#"]!!6
:)e=[]:e;foldr(zipWith(:))e
statt verwendenimport Data.List;transpose
und dann kürzenzipWith
.Java 7,
259 238 237200 Bytes2 Bytes durch Entfernen von {} in der x-Schleife gespart, danke ngn
19 Bytes bei verschiedenen Zuweisungsänderungen
gespart , danke Jonathan 24 Bytes für Druck und Rückgabe gespart (wusste nicht, dass dies zulässig war) und
13 Bytes für Schleifenänderungen gespart, danke Nevay
Probieren Sie es online!
Meine erste Herausforderung, und ich halte Java für seriös. Verwendet Tipp 1 (was übrigens falsch ist, aber ich kann keine Kommentare schreiben). Es kann wohl weiter golfen werden, dieser Pass war im Grunde so wie er ist, ohne hübschen Aufdruck.
quelle
s=1
aus Ihrer for - Schleife und Ersetzenint s,t,x,y;
mitint s=1,t,x,y;
.n[s-1-y][x]=o[y][x];n[y][t-1-x]=o[y][x];
->n[s-1-y][x]=n[y][t-1-x]=o[y][x];
.J ,
3027 BytesProbieren Sie es online!
Originalfassung.
Probieren Sie es online!
quelle
Python 2, 586 Bytes
Probieren Sie es online aus.
Python 2,
10321025 BytesIch mag dieses noch. Aber es ist viel länger. Man könnte Golf spielen, aber das ist nicht nötig. Der Ansatz von officialaimm ist viel kürzer.
-7 Danke an Jonathan Frech
Probieren Sie es online aus.
quelle
[t]railing spaces
, obwohl Ihre Lösung einige Leerzeichen weglässt.x=='!'
->x<'#'
if x.isdigit()
->if"/"<x<"@"
Mathematica,
11290 BytesVielen Dank an Jonathan Frech für die Hilfe beim Speichern von 2 Bytes!
Probieren Sie es online!(Mathematik)
Aus bestimmten Gründen druckt Mathics beim Drucken von mehrzeiligen Zeichenfolgen führende Leerzeichen in allen Zeilen mit Ausnahme der ersten. Auch Mathics unterstützt keine Operator
.Erläuterung:
{{Reverse@#,Reverse/@#},{" "+0#,#}}
: Stellen Sie die Optionen horizontal umkehren, vertikal umkehren, alles durch Ersetzen" "
und Transponieren dar (
ist in Mathematica der Transponierungsoperator), die verschiedenen Möglichkeiten zum Reflektieren oder Drehen des Bildes entsprechen.~Flatten~{{1,3},{2,4}}
: In bestimmten Dimensionen abflachen.Nest[ ... ,{{"#"}},6]
: Wenden Sie die Funktion innerhalb von{{"#"}}
6 mal an.~Riffle~"<literal newline character>"
: Riffle ein Newline-Zeichen zwischen den Zeilen.""<>
: Füge alle Saiten zusammen.quelle
Reverse
durchR
definieren und definierenR=Reverse;
, um zwei Bytes zu sparen.C # (.NET Core) ,
10161002980955 BytesDank Kevin Cruijssen 14 Byte gespeichert!
47 Bytes gespart dank Jonathan Frech!
Probieren Sie es online!
Erläuterung
Das Format der Ausgabe wird in einem Array von 64-Bit-Zahlen mit Vorzeichen gespeichert, das perfekt passt, da jede Zeile 64 Zeichen lang ist. Leerzeichen werden durch dargestellt
0
und#
durch dargestellt1
.Die Zahlen werden dann in ihre Binärzeichenfolge konvertiert, Nullen werden nach links aufgefüllt, bis die Zeichenfolge 64 Zeichen breit ist, und dann werden die Zeichen
und ersetzt
0
und1
durch#
.Der Code wird in einer Lamba-Funktion gespeichert, genauer gesagt in a
System.Func<string>
.Einige Konstanten in der
long[]
werden durch Bitverschiebung gekürzt.quelle
long[] n=new[]
?l
nicht benötigt wird, können Sie wahrscheinlich noch mehr Bytes einsparen .Holzkohle , 42 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Wäre 25 Bytes, wenn dies funktioniert:
Erläuterung:
Generieren Sie die erste Rekursion manuell, da eine Drehung um (1, 0,5) nicht möglich ist. (Eine solche Drehung wäre nur bei 180 ° sinnvoll.)
Überfliege die ersten fünf Potenzen von 2 (1, 2, 4, 8, 16).
Spiegeln Sie die Leinwand vertikal. Dies vervollständigt das obere linke Viertel des Ergebnisses.
Drehen Sie die Leinwand um 180 ° um einen Punkt auf halber Höhe der rechten Seite. Die Kopie landet in der richtigen Position für das obere rechte Viertel des Ergebnisses.
Drehen Sie die Leinwand um 90 ° um die rechte untere Ecke. Die Kopie der oberen rechten Ecke landet in der richtigen Position für die untere rechte Ecke des Ergebnisses. Die Kopie der linken oberen Ecke ist irrelevant.
Schneiden Sie die Leinwand auf die gewünschte Größe. Der Zuschnitt beginnt am Cursor oder oben links auf der Leinwand, je nachdem, was ganz unten rechts ist. Der Cursor wird daher an (0, -1000) gesendet, um sicherzustellen, dass die Trimmung nicht beeinträchtigt wird.
quelle
Dyalog APL , 29 Bytes
Probieren Sie es online!
quelle
((⊖,⌽)⍪∊,⍉)⍣6⍪⍕#
mit⎕ML←0
.Python 2 ,
715711 BytesProbieren Sie es online!
quelle
Perl 5 , 452 Bytes
451 Byte Code + 1 für
-p
.Pack werden alle Daten in den String, anstatt zu stehlen @ Neil ‚s richtige Antwort .
Reversible Ausgabe von
xxd
für 451-Byte-Datei:Probieren Sie es online!
quelle
Jq 1,5 ,
538,535,488,476 BytesDies ist eine einfache Darstellung.
Ich habe noch keine ausgefallenen Codierungen versucht.Ersetzt 0,0 Paare mit Z-Funktion.Nochmals vielen Dank an Jonathan Frech, der dabei geholfen hat, 3 Bytes zu eliminieren!
Zeichenanzahl
Probelauf
quelle
B: rec
und16) as $l|
.if.==0then" "else"#"end
->if.>0then"#"else" "end
.Python 2 ,
174164154 Bytes (basierend auf Matrixoperationen)Probieren Sie es online!
quelle
import *
->import*
;in s.tolist()
->in s
Canvas , 10 Bytes
Probieren Sie es hier aus!
quelle
JavaScript (Node.js) , 1233 Byte
Probieren Sie es online!
quelle
C # (.NET Core) ,
976969 ByteProbieren Sie es online!
quelle
<s>969</s>
die vorherigen Bytes streichen.C # (.NET Core) , 739 Byte
Probieren Sie es online!
Verwendet den gleichen Ansatz ist diese andere Antwort .
quelle
K (ngn / k) ,
323127 BytesProbieren Sie es online!
6{
}/
6 mal machen+x
transponieren|x
vertikal umkehren+|+x
horizontal umkehren,
vertikal verketten,'
horizontal verketten,[A;B]
ist das gleiche wieA,B
. Es hilft dabei, Klammern zu vermeidenA
und um den gesamten Ausdruck""x
Verwenden Sie die Elemente vonx
als Indizes in der leeren Zeichenfolge. Out-of-Bound-Indizierung erzeugt Leerzeichen, sodass dieser Ausdruck eine Matrix mit allen Leerzeichen zurückgibt, die dieselbe Größe wie hatx
quelle