O x marca o lugar
Seu objetivo é adicionar uma mira ao redor da capital X:
Exemplo de entrada / saída
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
Resultado:
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
Resultado:
|
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
Resultado:
00000|000|0000000
00000|000|0000000
00000|000|0000000
----+#+++#+----00
00000|000|0000000
00000|000|0000000
00000|000|0000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
Crosshair
Sua mira deve ter 3 e 5 de largura:
|
|
|
-----X-----
|
|
|
Entrada
A entrada terá pelo menos 12x12 caracteres e será composta apenas por caracteres ASCII. Pode ser captado através de STDIN ou argumento de função. A entrada nem sempre conterá um X. A entrada terá qualquer forma e terá uma quantidade arbitrária de espaço em branco. A entrada não irá conter qualquer um: +
,-
, #
, e|
Resultado
A saída pode ser através de STDOUT ou do valor de retorno de uma função. A saída deve ser a imagem de entrada com a mira desenhada. Se não houver espaço suficiente para desenhar a mira, você deverá adicionar linhas / espaços para desenhá-la. Os pontos sobrepostos devem ser substituídos por a +
. Se o |
ou -
da mira se sobrepuser a um X
, em vez de a +
, um#
deve aparecer.
O espaço em branco à direita não é permitido, exceto por uma nova linha no final.
Este é o código-golfe, pelo que o código mais curto em bytes vence!
+
sobrepõe-
e se|
aplica somente quando esses caracteres fazem parte da mira, ou afeta literalmente-
e também é|
encontrado na entrada?#
na entrada for encontrado por uma mira? Será substituído?Respostas:
CoffeeScript,
345336327 bytesX
é a função a ser chamada.Explicado:
Executável:
Mostrar snippet de código
fonte
Python 3,
577519515490475467454 bytesNão sei o quanto mais posso jogar isso.
Uso:
Onde
g
está a grade de entrada ed
o caractere de marcação de retículo.fonte
Perl, 370 bytes
Uso, salve acima como
xmarks.pl
:perl xmarks.pl <<< 'X'
Não tenho certeza de quanto menor posso fazer isso, mas tenho certeza de que voltarei mais tarde! Posso postar uma explicação se alguém também estiver interessado.
Manipula entradas de entrada
X
e não quadradas também agora.fonte
Python 2,
755706999946678bytesEspera entrada no stdin, com uma nova linha à direita. O final da entrada é acionado com
cmd+d
.Programa completo:
Tenho certeza de que muito mais golfe poderia ser feito nisso (já que ainda estou aprendendo python), então qualquer ajuda é apreciada.
Editar% s
findX
usando para compreenderrange
vez de uma matriz literalfindX
para um lambdaxs
por 4 e eliminando otry-except
blocoh=i=j=k=l=0
vez deh,j,k,l=0,0,0,0
chooseChar
fonte
R=range
para diminuir os intervalos. Então você também pode mudarfor i in[5,4,3,2,1,-1,-2,-3,-4,-5]:
parafor i in R(5,0,-1)+R(-1,-6,-1):
q
lambda parece muito ineficiente para mim. Isso pode ser reduzido? No mínimo, não acho que os parênteses sejam necessários, mas acho que a lógica booleana e as comparações de strings também podem ser reduzidas.