X marca el lugar
Su objetivo es agregar una cruz alrededor de la X mayúscula:
Ejemplo de entrada / salida
Entrada:
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
Salida:
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
Entrada:
000000000000
000000000000
0000X0000000
0000000X0000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
Salida:
|
0000|00|0000
0000|00|0000
-----X--+--00
00--+--X-----
0000|00|0000
0000|00|0000
0000000|0000
000000000000
000000000000
000000000000
000000000000
000000000000
Entrada:
00000000000000000
00000000000000000
00000000000000000
00000X000X0000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
Salida:
00000|000|0000000
00000|000|0000000
00000|000|0000000
----+#+++#+----00
00000|000|0000000
00000|000|0000000
00000|000|0000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
Punto de mira
Su punto de mira debe ser de 3 de alto y 5 de ancho:
|
|
|
-----X-----
|
|
|
Entrada
La entrada tendrá un tamaño de al menos 12x12 caracteres y consistirá solo en caracteres ASCII. Se puede tomar a través de STDIN o argumento de función. La entrada no siempre contendrá una X. La entrada tendrá cualquier forma y tendrá una cantidad arbitraria de espacios en blanco. La entrada no contendrá ninguna de: +
, -
, #
, y|
Salida
La salida puede ser a través de STDOUT o el valor de retorno de una función. La salida debe ser la imagen de entrada con la cruz dibujada. Si no hay suficiente espacio para dibujar la cruz, debe agregar líneas / espacios para dibujarla. Los puntos superpuestos deben reemplazarse con a +
. Si el |
o -
del retículo se superpone , debería aparecer un X
, en lugar de un .+
#
El espacio en blanco al final no está permitido, excepto para una nueva línea al final.
Este es el código de golf, ¡el código más corto en bytes gana!
+
superpone-
y se|
aplica solo cuando esos caracteres son parte de la mira, o afecta literalmente-
y se|
encuentra también en la entrada?#
un punto de mira encuentra un literal en la entrada? ¿Se sobreescribirá?Respuestas:
CoffeeScript,
345336327 bytesX
es la función para llamar.Explicado:
Ejecutable:
Mostrar fragmento de código
fuente
Python 3,
577519515490475467454 bytesNo estoy seguro de cuánto más puedo jugar golf.
Uso:
Dónde
g
está la cuadrícula de entrada yd
es el carácter de marca de cruz.fuente
Perl, 370 bytes
Uso, guardar arriba como
xmarks.pl
:perl xmarks.pl <<< 'X'
No estoy seguro de cuánto más pequeño puedo hacer esto, ¡pero estoy seguro de que volveré a hacerlo más tarde! Podría publicar una explicación si alguien también está interesado.
Maneja la entrada de entradas
X
no cuadradas también ahora.fuente
Python 2,
755 706 699 694 678626 BytesEspera entrada en stdin, con una nueva línea final. El final de la entrada se activa con
cmd+d
.Programa completo:
Estoy seguro de que se podría hacer mucho más golf en esto (ya que todavía estoy aprendiendo Python), por lo que cualquier ayuda es apreciada.
Ediciones
findX
mediante el uso de comprensionesrange
lugar de una matriz literalfindX
a una lambdaxs
por 4 y eliminando eltry-except
bloqueoh=i=j=k=l=0
lugar deh,j,k,l=0,0,0,0
chooseChar
fuente
R=range
acortar los rangos. Entonces también puedes cambiarfor i in[5,4,3,2,1,-1,-2,-3,-4,-5]:
afor i in R(5,0,-1)+R(-1,-6,-1):
q
lambda me parece muy ineficiente. ¿Se puede acortar eso? Por lo menos, no creo que los paréntesis sean necesarios, pero creo que la lógica booleana y las comparaciones de cadenas también se pueden acortar.