X markiert die Stelle
Ihr Ziel ist es, ein Fadenkreuz um die Hauptstadt X hinzuzufügen:
Beispiel Eingabe / Ausgabe
Eingang:
mdhyyyyyyyhhhddmmm
mdyyssoo oooosyyyhhhdmm
hsso oossoooooyyhhdhhdmmm
yoooooo oo ssysssyhhdyyyhmmmm
myso oso o oyo hhhdhhyhyhhm mm m
mhsyhhys oss yyyhhhsosyhhmmmmdmmm
mhyhhhy y ssyhoho o shhdmmmmdmmmm
hhyyyh s oo syysyyhhdysso oyhdhhhmmmmm
dhysyys sdysoXoyyyyhhso syshm mmm
hhyhyo o osss y shhyyhd mmmmmm
yyhyyyss o oyyyydmmdmmmmmmmmm mm
ysyhyhhho s osy sdm m mddmmddhydmmm
h oshhhyyyddhoo ooyysshdmdohdmmdmddsshmmm
y oyhhhdhhsyhsssshdddsss hdddyyyhddm
dyyshyyhssyyhyyyyddhhmmdmmmdy syssoosyhdm
hsyyhhhhsoo sooyyhhdoohdhhyhyysoo osdm
doyhhhyyyyhhhysyyy oossyyssso osydm
soyhyyhhhhhhyhyyyooos ohdddm
msoyyyyyyyhyyyyo ooo syyd
ho oyyysooo osso osyd
dhyyysssyyyyyysoosdm
mmdddddmmm
Ausgabe:
mdhyyyyyyyhhhddmmm
mdyyssoo oooosyyyhhhdmm
hsso oossoooooyyhhdhhdmmm
yoooooo oo ssysssyhhdyyyhmmmm
myso oso o oyo hhhdhhyhyhhm mm m
mhsyhhys oss | yyyhhhsosyhhmmmmdmmm
mhyhhhy y |ssyhoho o shhdmmmmdmmmm
hhyyyh s oo s|ysyyhhdysso oyhdhhhmmmmm
dhysyys -----X-----hhso syshm mmm
hhyhyo o | osss y shhyyhd mmmmmm
yyhyyyss |o oyyyydmmdmmmmmmmmm mm
ysyhyhhho s |sy sdm m mddmmddhydmmm
h oshhhyyyddhoo ooyysshdmdohdmmdmddsshmmm
y oyhhhdhhsyhsssshdddsss hdddyyyhddm
dyyshyyhssyyhyyyyddhhmmdmmmdy syssoosyhdm
hsyyhhhhsoo sooyyhhdoohdhhyhyysoo osdm
doyhhhyyyyhhhysyyy oossyyssso osydm
soyhyyhhhhhhyhyyyooos ohdddm
msoyyyyyyyhyyyyo ooo syyd
ho oyyysooo osso osyd
dhyyysssyyyyyysoosdm
mmdddddmmm
Eingang:
000000000000
000000000000
0000X0000000
0000000X0000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
Ausgabe:
|
0000|00|0000
0000|00|0000
-----X--+--00
00--+--X-----
0000|00|0000
0000|00|0000
0000000|0000
000000000000
000000000000
000000000000
000000000000
000000000000
Eingang:
00000000000000000
00000000000000000
00000000000000000
00000X000X0000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
Ausgabe:
00000|000|0000000
00000|000|0000000
00000|000|0000000
----+#+++#+----00
00000|000|0000000
00000|000|0000000
00000|000|0000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
Fadenkreuz
Dein Fadenkreuz sollte 3 groß und 5 breit sein:
|
|
|
-----X-----
|
|
|
Eingang
Die Eingabe hat eine Größe von mindestens 12 x 12 Zeichen und besteht nur aus ASCII-Zeichen. Es kann durch STDIN oder Funktionsargument übernommen werden. Die Eingabe enthält nicht immer ein X. Die Eingabe hat eine beliebige Form und ein beliebiges Leerzeichen. Die Eingabe wird nicht enthalten alle: +
, -
, #
, und|
Ausgabe
Die Ausgabe kann über STDOUT oder den Rückgabewert einer Funktion erfolgen. Die Ausgabe sollte das Eingabebild mit dem Fadenkreuz sein. Wenn nicht genügend Platz zum Zeichnen des Fadenkreuzes vorhanden ist, müssen Sie Linien / Leerzeichen hinzufügen, um es zu zeichnen. Überlappende Stellen sollten durch a ersetzt werden +
. Wenn sich das |
oder -
des Fadenkreuzes mit einem überschneidet X
, sollte anstelle von einem +
ein #
angezeigt werden.
Leerzeichen dürfen nicht nachgestellt werden, mit Ausnahme einer einzelnen Zeile am Ende.
Das ist Code-Golf, also gewinnt der kürzeste Code in Bytes!
+
für Überlappungen-
und|
nur, wenn diese Zeichen Teil eines Fadenkreuzes sind, oder wirkt es sich auf das Literal aus-
und wird|
auch in der Eingabe gefunden?#
ein Fadenkreuz auf ein Literal in der Eingabe stößt? Wird es überschrieben?Antworten:
CoffeeScript,
345336327 BytesX
ist die aufzurufende Funktion.Erklärt:
Ausführbar:
Code-Snippet anzeigen
quelle
Python 3,
577519515490475467454 BytesIch bin mir nicht sicher, wie weit ich damit Golf spielen kann.
Verwendung:
Wo
g
ist das Eingaberaster undd
ist das Fadenkreuz-Zeichen.quelle
Perl, 370 Bytes
Verwendung, oben speichern als
xmarks.pl
:perl xmarks.pl <<< 'X'
Ich bin nicht sicher, wie viel kleiner ich das machen kann, aber ich bin sicher, ich werde später darauf zurückkommen! Ich könnte eine Erklärung posten, wenn sich auch jemand dafür interessiert.
Behandelt
X
jetzt auch die Eingabe von und nicht-quadratischen Eingaben.quelle
Python 2,
755 706 699 694 678626 BytesErwartet eine Eingabe in stdin mit einer nachgestellten Newline. Das Ende der Eingabe wird mit ausgelöst
cmd+d
.Volles Programm:
Ich bin mir sicher, dass diesbezüglich viel mehr Golf gespielt werden könnte (da ich noch Python lerne), daher ist jede Hilfe willkommen.
Bearbeitungen
findX
indem zum Verständnis verwendet wirdrange
anstelle eines wörtlichen Arrays ein Array zu verwenden, wurden 7 Byte eingespartfindX
zu einem Lambda gewechselt wurdexs
um 4 erweitert und dertry-except
Block entfernt wurdeh=i=j=k=l=0
anstelle vonh,j,k,l=0,0,0,0
chooseChar
quelle
R=range
, um Bereiche zu verkürzen. Dann können Sie auchfor i in[5,4,3,2,1,-1,-2,-3,-4,-5]:
zufor i in R(5,0,-1)+R(-1,-6,-1):
q
scheint mir Ihr Lambda sehr ineffizient zu sein. Kann das überhaupt gekürzt werden? Zumindest glaube ich nicht, dass die Klammern notwendig sind, aber ich denke, dass die boolesche Logik und die Zeichenfolgenvergleiche auch verkürzt werden können.