X Zaznacza miejsce
Twoim celem jest dodanie krzyżyka wokół stolicy X:
Przykład wejścia / wyjścia
Wejście:
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
Wynik:
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
Wejście:
000000000000
000000000000
0000X0000000
0000000X0000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
Wynik:
|
0000|00|0000
0000|00|0000
-----X--+--00
00--+--X-----
0000|00|0000
0000|00|0000
0000000|0000
000000000000
000000000000
000000000000
000000000000
000000000000
Wejście:
00000000000000000
00000000000000000
00000000000000000
00000X000X0000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
Wynik:
00000|000|0000000
00000|000|0000000
00000|000|0000000
----+#+++#+----00
00000|000|0000000
00000|000|0000000
00000|000|0000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
Celownik
Twój celownik powinien być 3-wysoki i 5-szeroki:
|
|
|
-----X-----
|
|
|
Wejście
Dane wejściowe będą miały rozmiar co najmniej 12 x 12 znaków i będą się składały wyłącznie ze znaków ASCII. Może być przejęty przez STDIN lub argument funkcji. Dane wejściowe nie zawsze będą zawierać X. Dane wejściowe będą miały dowolny kształt i będą miały dowolną ilość białych znaków. Wejście nie będzie zawierać żadnego z: +
, -
, #
, i|
Wynik
Dane wyjściowe mogą być przesyłane przez STDOUT lub wartość zwracaną przez funkcję. Wyjściem powinien być obraz wejściowy z narysowanym krzyżykiem. Jeśli nie ma wystarczająco dużo miejsca, aby narysować celownik, musisz dodać linie / spacje, aby go narysować. Nakładające się miejsca należy zastąpić symbolem +
. Jeżeli |
ani -
z krzyżyka nakładała się X
, zamiast +
, #
powinien pojawić.
Końcowe białe znaki nie są dozwolone, z wyjątkiem jednej nowej linii na samym końcu.
To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach!
+
dla nakładających się-
i|
stosuje się tylko wtedy, gdy te znaki są częścią celowniku, czy to wpływa na dosłowne-
i|
znaleźć na wejściu, jak również?#
tekst wejdzie w celownik? Czy to zostanie nadpisane?Odpowiedzi:
CoffeeScript,
345336327 bajtówX
to funkcja do wywołania.Wyjaśniono:
Plik wykonywalny:
Pokaż fragment kodu
źródło
Python 3,
577519515490475467454 bajtówNie jestem pewien, jak daleko mogę grać w golfa.
Stosowanie:
Gdzie
g
jest siatka wejściowa id
znak krzyżyka.źródło
Perl, 370 bajtów
Użycie, zapisz powyżej jako
xmarks.pl
:perl xmarks.pl <<< 'X'
Nie jestem pewien, jak bardzo mogę to zrobić, ale na pewno wrócę do tego później! Mogę opublikować wyjaśnienie, jeśli ktoś też jest zainteresowany.
Obsługuje teraz dane wejściowe
X
i dane niekwadratowe.źródło
Python 2,
755 706 699 694 678626 bajtówOczekuje wejścia na standardowe wejście, z końcowym znakiem nowej linii. Koniec wejścia jest uruchamiany za pomocą
cmd+d
.Pełny program:
Jestem pewien, że można by na tym zrobić znacznie więcej gry w golfa (ponieważ wciąż uczę się języka Python), więc każda pomoc jest mile widziana.
Edycje
findX
, używając do zrozumieniarange
zamiast literalnej tablicyfindX
na lambdaxs
o 4 i eliminująctry-except
blokh=i=j=k=l=0
zamiasth,j,k,l=0,0,0,0
chooseChar
źródło
R=range
aby skrócić zakresy. Następnie możesz również zmienićfor i in[5,4,3,2,1,-1,-2,-3,-4,-5]:
nafor i in R(5,0,-1)+R(-1,-6,-1):
q
lambda wydaje mi się bardzo nieefektywna. Czy można to w ogóle skrócić? Przynajmniej nie uważam, że nawiasy są konieczne, ale myślę, że logikę logiczną i porównania łańcuchów również można skrócić.