Nehmen wir an, ich habe ASCII-Kunst:
___
,"---".
: ;
`-.-'
| |
| |
| |
_.-\_/-._
_ / | | \ _
/ / `---' \ \
/ `-----------' \
/,-""-. ,-""-.\
( i-..-i i-..-i )
|`| |-------| |'|
\ `-..-' ,=. `-..-'/
`--------|=|-------'
| |
\ \
) ) hjw
/ /
( (
( Quelle )
Aber ich möchte mich auf das Kabel dieses Joysticks konzentrieren, weil ich eigentlich ein Bild von einem Gartenweg haben möchte, der zu einer Tür führt.
,=.
-|=|-
| |
\ \
) )
/ /
( (
Ich könnte Zeile für Zeile kopieren, einen Texteditor mit Blockauswahlmodus verwenden oder ... ich könnte Code schreiben!
Mein Code benötigt also fünf Argumente:
- Ein Stück ASCII-Kunst, eine durch Zeilenumbrüche getrennte Zeichenfolge.
- Die X-Achse der oberen linken Ecke (1-indiziert, aus der linken Spalte, positive ganze Zahl)
- Die Y-Achse der oberen linken Ecke (1-indiziert, von der oberen Reihe, positive ganze Zahl)
- Breite des resultierenden Bildes (positive ganze Zahl)
- Höhe des resultierenden Bildes (positive ganze Zahl)
Testfälle
ASCII-Bild:
___
,"---".
: ;
`-.-'
| |
| |
| |
_.-\_/-._
_ / | | \ _
/ / `---' \ \
/ `-----------' \
/,-""-. ,-""-.\
( i-..-i i-..-i )
|`| |-------| |'|
\ `-..-' ,=. `-..-'/
`--------|=|-------'
| |
\ \
) ) hjw
/ /
( (
Gartenweg
- X: 10
- Y: 15
- Breite: 5
- Höhe: 7
Ergebnis:
,=.
-|=|-
| |
\ \
) )
/ /
( (
DB-Symbol
- X: 3
- Y: 12
- Breite: 6
- Höhe: 4
Ausgabe:
,-""-.
i-..-i
| |
`-..-'
Alien Elder
- X: 9
- Y: 1
- Breite: 7
- Höhe: 10
___
,"---".
: ;
`-.-'
| |
| |
| |
.-\_/-.
| |
`---'
Unterschrift
- X: 16
- Y: 19
- Breite: 3
- Höhe: 1
hjw
Regeln
- Die Ausgabe kann auf jede bequeme Weise erfolgen .
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig.
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
Y
sollte BEW15
und in TC 2,X
sollte3
Antworten:
Canvas , 1 Byte
Probieren Sie es hier aus!
Es werden Höhe, Breite, Y, X und ASCII-Zeichen in dieser Reihenfolge als Eingaben verwendet.
Obwohl fast alles an ASCII-Kunstobjekten in Canvas 0-indiziert ist,
@
ist es aus irgendeinem Grund 1-indiziert. ¯ \ _ (ツ) _ / ¯quelle
Python 2 ,
6462 BytesProbieren Sie es online!
Wenn
X
undY
kann0
indiziert werden:Python 2 , 56 Bytes
Probieren Sie es online!
quelle
Kohle , 7 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Nimmt 0-indizierte Koordinaten auf. Erläuterung:
Drucken Sie die ASCII-Grafik.
Springe zur oberen linken Ecke des gewünschten Rechtecks.
Schneiden Sie die Leinwand auf die gewünschte Größe.
quelle
Pip
-n
, 21 BytesProbieren Sie es online!
Oder wenn 0-Indizierung erlaubt ist ...
Pip
-n
, 17 Bytes :Probieren Sie es online!
Erläuterung
Nimmt alle fünf Argumente als Befehlszeilenargumente an.
Die obigen Lösungen setzen auch voraus, dass die Eingabe ein perfektes Rechteck ist - dh die Linien sind alle gleich lang. Andernfalls werden 2 zusätzliche Bytes benötigt (
-l
anstelle von verwenden-n
):quelle
05AB1E ,
2119 BytesProbieren Sie es online!
Oder wenn
0-indexing is allowed
:05AB1E , 18 Bytes
Probieren Sie es online!
quelle
[X1, X2]
und[Y1, Y2]
als nehmen könnenv³ŸNåiy²ŸèJ=
Japt
-R
,1311 BytesVersuch es
Dank Kamil Drakari konnten 2 Bytes eingespart werden
9 Byte, wenn nicht für die unnötige Anforderung, dass Lösungen eine 1-basierte Indizierung verwenden.
Erläuterung
quelle
t
und weitere 2 Bytes durch Indizierung auf 0 schalten . Es kann sich lohnen, auf den zweiten zu warten, da OP nicht geklärt hat, ob eine Indexierung von 0 akzeptabel ist, oder die Testfälle behoben hat.t
Methode auch auf Arrays funktioniert.JavaScript (Node.js) ,
70 bis69 Byte-1 Danke @Shaggy für das
splice()
Idee.Probieren Sie es online!
Die ASCII-Kunst ist ärgerlich
quelle
J , 45 Bytes
Probieren Sie es online!
Anmerkungen: J akzeptiert bis zu 2 Argumente, links und rechts. Das rechte Argument ist die ASCII-Zeichenfolge, das linke eine Liste von UHXW-Werten
Ich simuliere die Newline und der Funktionsaufruf hat einen Code, um den String in ein Array umzuwandeln.
quelle
V , 16 Bytes
Probieren Sie es online!
Es wird erwartet, dass die Eingabe mit Leerzeichen aufgefüllt wird, um ein perfektes Rechteck zu bilden. Außerdem steht der 'Y'-Eingang vor dem' X '.
Hexdump:
quelle
C (gcc) ,
118-109BytesDie Eingabe kann gezackte Linien enthalten: Neue Linien werden gedruckt, wenn sie im y-Bereich liegen.
Danke an ceilingcat für den Vorschlag.
Probieren Sie es online!
quelle
Jelly , 11 Bytes
Probieren Sie es online!
Nimmt die ASCII-Grafik als mehrzeiligen Python-R-String (um Probleme mit Backslashes zu vermeiden).
quelle
Haskell , 61 Bytes
Probieren Sie es online!
Nimmt Argumente in der Reihenfolge:
x
,y
,w
,h
,s
.quelle
Bash + Coreutils, 37
Interessanterweise erlaubt GNU Tail 8.28 (unter Ubuntu 18.04) das
+NUM
Formatieren, während GNU Tail 8.29 unter TIO dafür 2 zusätzliche Bytes benötigt-n+NUM
.Probieren Sie es online!
Ich dachte, dies alles in
sed
zu tun könnte kürzer sein, aber bei 50 Bytes ist es nicht:quelle
K4 , 31 Bytes
Lösung:
Beispiele:
Erläuterung:
Nehmen Sie die 1-indizierte Eingabe, generieren Sie die x / y-Koordinaten und indizieren Sie sie in ASCII Art.
quelle
R , 62 Bytes
Vielleicht überraschend kurze Lösung für eine Textaufforderung in R, weil wir nicht den gesamten Text in eine Matrix einlesen müssen.
Probieren Sie es online!
quelle
\ / \ /> , 123 Bytes
Eingabe besteht aus einer einzigen Zeile von Leerzeichen getrennten Eingangsvariablen
x
,y
,w
, undh
, weiter von der ASCII Art auf der nächsten Zeile folgte.Erläuterung
Dieser Code nutzt die Fähigkeit von \ / \ />, sich selbst zu ändern, indem die ASCII-Grafik im Code selbst platziert wird. Dies sieht dann so aus:
Anschließend werden die Zeichen im angegebenen Rechteck aus dem Code entfernt und ausgegeben.
quelle