Entrada:
1
X
X
X
X XX XXXXXX X X X
X XX XXXXXX X X X
XXX X XX XXXXXX X X X
XXX X XX XXXXXX X X X
Saída:
X.
X..
X...
X.... XX. XXXXXX. X.X.X.
X..... XX.. XXXXXX.. X.X.X..
XXX. X......XX... XXXXXX... X.X.X...
XXX.. X......XX....XXXXXX.... X.X.X....
Entrada:
2
XX
XX
XX
XX
XX
XX XX
XX XX
XX XX
XX XX
Saída:
.XX
..XX
...XX
....XX
.....XX
..XX..XX
...XX..XX
....XX..XX
.....XX..XX
Especificação:
- Você deve tomar como entrada
- Uma bandeira indicando se a luz vem do canto superior esquerdo ou do canto superior direito. Pode ser
1
ou2
,-1
ou1
,0
ou65536
, ou o que for conveniente para você, desde que os dois sinalizadores sejam inteiros. - Linhas compostas por um
X
oucom o mesmo comprimento em caracteres (ou seja, preenchidas com
)
- Todos os
X
s estarão na última linha ou terão umX
sob eles (o que significa que não há edifícios flutuantes)
- Todos os
- Uma bandeira indicando se a luz vem do canto superior esquerdo ou do canto superior direito. Pode ser
- Você deve gerar as linhas (edifícios) com sombras adicionadas. Isso é feito com o seguinte procedimento:
- Se a luz estiver vindo do canto superior esquerdo, desenhe um triângulo retângulo de
.
s com a mesma altura e largura que a altura do edifício, começando de um espaço além da borda direita e indo para a direita. - Caso contrário, se for do canto superior direito, faça o mesmo, mas comece de um espaço além da borda esquerda e apontando para a esquerda.
- Lembre-se, não altere
X
s alterando-os para.
s; deixe-os como estão. - Sempre haverá "espaço" para as suas sombras, ou seja, se houver um edifício alto de três espaços no final, haverá pelo menos três espaços de preenchimento após ele.
- Se a luz estiver vindo do canto superior esquerdo, desenhe um triângulo retângulo de
- Isso é código-golfe , então o código mais curto em bytes vencerá!
{}
e{-1*}
como valores de sinalizador?potato
ewhile(1){}
. Como citado na pergunta, "o que for conveniente".Regex.Replace
que eu não posso resolver ... eu tenho dois problemas agora?Respostas:
GolfScript, 67 caracteres
1 / -1 para sombras indo para a direita / esquerda. Execute o exemplo online :
fonte
Perl - 85
Edição: Eu esqueci totalmente sobre a
-p
bandeira que precisa ser executado. Adicionado 2 à contagem de caracteres.O sinalizador especificado na primeira linha é
0
para sombras indo para a esquerda e2
para sombras indo para a direita.fonte
Python 3-233
Bem, isso acabou mais do que o esperado ...
1 para sombras indo para a direita, -1 para sombras indo para a esquerda.
EDIT: Não viu o preenchimento de ambos os lados nas regras. Ehehe. ^^ '
fonte
JavaScript - 14
A bandeira na primeira linha é
for(p='';l=prompt();)console.log(p=l.replace(/ /g,function(a,b){return p[b+1]=='.'||p[b]=='.'||l[b+1]=='X'?'.':a}));
para sombras voltadas para a esquerda oufor(p='';l=prompt();)console.log(p=l.replace(/ /g,function(a,b){return p[b-1]=='.'||p[b]=='.'||l[b-1]=='X'?'.':a}));
para sombras para a direita.Isso pode abusar da regra "o que for conveniente para você" para a bandeira: P
Editar: sem abuso (127):
A bandeira para isso é
1
ou-1
fonte
potato
...", a menos quepotato
seja um inteiro :-P.c=+prompt()
oub+c
concatenará como uma string.for(c=p=+(P=prompt)(d='.');l=P();)console.log(p=l.replace(/ /g,function(a,b){return p[b]==d|p[b+=c]==d|l[b]=='X'?d:a}))
(demo)c
para um número, subtraindo-o.b-c
oub-=c
no meu código acima. (demo)Python 2.7 - 229
Versão Ungolfed
fonte