Входные данные:
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
Выход:
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....
Входные данные:
2
XX
XX
XX
XX
XX
XX XX
XX XX
XX XX
XX XX
Выход:
.XX
..XX
...XX
....XX
.....XX
..XX..XX
...XX..XX
....XX..XX
.....XX..XX
Спецификация:
- Вы должны принять в качестве входных данных
- Флаг, указывающий, идет ли свет сверху слева или сверху справа. Это может быть
1
или2
,-1
или1
,0
или65536
, или то, что вам удобно, если оба флага являются целыми числами. - Строки состоят из одного
X
иливсех символов одинаковой длины (т. Е. Дополнены
)
- Все
X
s либо будут находиться в последнем ряду, либо будут иметьX
под ними (что означает отсутствие плавающих зданий)
- Все
- Флаг, указывающий, идет ли свет сверху слева или сверху справа. Это может быть
- Вы должны вывести строки (здания) с добавленными тенями. Это делается с помощью следующей процедуры:
- Если свет идет сверху слева, нарисуйте прямоугольный треугольник
.
s с той же высотой и шириной, что и высота здания, начиная с одного пространства за его правым краем и направляясь вправо. - В противном случае, если это сверху справа, сделайте то же самое, но начните с одного пробела за левым краем и указав налево.
- Помните, не изменяйте
X
s, изменяя их на.
s; оставь их как есть. - Для ваших теней всегда будет «место», т. Е. Если в конце есть трехэтажное высотное здание, то после него будет как минимум 3 пробела.
- Если свет идет сверху слева, нарисуйте прямоугольный треугольник
- Это код-гольф , поэтому выиграет самый короткий код в байтах!
{}
и{-1*}
как значения флага?potato
иwhile(1){}
. Как указано в вопросе, «все, что удобно».Regex.Replace
которой я не могу обойтись ... у меня сейчас две проблемы?Ответы:
GolfScript, 67 символов
1 / -1 для теней, идущих вправо / влево. Запустите пример онлайн :
источник
Perl - 85
РЕДАКТИРОВАТЬ: Я полностью забыл о
-p
флаге, с которым нужно работать. Добавлено 2 к количеству символов.Флаг, указанный в первой строке, предназначен
0
для теней, идущих влево, и2
для теней, идущих вправо.источник
Питон 3 - 233
Ну, это оказалось дольше, чем ожидалось ...
1 для теней, идущих вправо, -1 для теней, идущих влево.
РЕДАКТИРОВАТЬ: не видел обе стороны отступа в правилах. Ehehe. ^^
источник
JavaScript - 14
Флаг в первой строке предназначен
for(p='';l=prompt();)console.log(p=l.replace(/ /g,function(a,b){return p[b+1]=='.'||p[b]=='.'||l[b+1]=='X'?'.':a}));
для теней, направленных влево илиfor(p='';l=prompt();)console.log(p=l.replace(/ /g,function(a,b){return p[b-1]=='.'||p[b]=='.'||l[b-1]=='X'?'.':a}));
для теней справа.Это может привести к нарушению правила «все, что вам удобно» для флага: P
Редактировать: без злоупотреблений (127):
Флаг для этого
1
или-1
источник
potato
...», если неpotato
является целым числом. :-Pc=+prompt()
или жеb+c
будет объединен как строка.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}))
(демо)c
в число, вычитая вместо этого.b-c
илиb-=c
в моем коде выше. (демо)Python 2.7 - 229
Безголовая версия
источник