X отмечает место
Ваша цель - добавить перекрестие вокруг заглавной буквы X:
Пример ввода / вывода
Входные данные:
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
Выход:
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
Входные данные:
000000000000
000000000000
0000X0000000
0000000X0000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
000000000000
Выход:
|
0000|00|0000
0000|00|0000
-----X--+--00
00--+--X-----
0000|00|0000
0000|00|0000
0000000|0000
000000000000
000000000000
000000000000
000000000000
000000000000
Входные данные:
00000000000000000
00000000000000000
00000000000000000
00000X000X0000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
00000000000000000
Выход:
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
Ваше перекрестие должно быть 3-х высотой и 5-шириной:
|
|
|
-----X-----
|
|
|
вход
Ввод будет иметь размер не менее 12x12 символов и будет состоять только из символов ASCII. Это может быть принято через STDIN или аргумент функции. Входные данные не всегда будут содержать X. Входные данные будут иметь любую форму и иметь произвольное количество пробелов. Вход не будет содержать каких - либо: +
, -
, #
, и|
Выход
Выход может быть через STDOUT или возвращаемое значение функции. На выходе должно быть входное изображение с нарисованным перекрестием. Если для рисования перекрестия недостаточно места, вы должны добавить линии / пробелы, чтобы нарисовать его. Перекрывающиеся пятна следует заменить на +
. Если |
или -
перекрестья перекрывает X
, вместо +
, #
должен появиться.
Конечный пробел не допускается, за исключением одной новой строки в самом конце.
Это код-гольф, поэтому выигрывает самый короткий код в байтах!
+
перекрытие-
и|
применяется только тогда, когда эти символы являются частью перекрестия, или оно влияет на литерал-
и также|
присутствует во входных данных?#
во входных данных встречается с перекрестием? Будет ли оно перезаписано?Ответы:
CoffeeScript,
345336327 байтX
это функция для вызова.Разъяснение:
Исполняемые:
Показать фрагмент кода
источник
Python 3,
577519515490475467454 байтаЯ не уверен, насколько дальше я могу играть в гольф.
Использование:
Где
g
находится входная сетка иd
является символом перекрестия.источник
Perl, 370 байт
Использование, сохранить выше как
xmarks.pl
:perl xmarks.pl <<< 'X'
Я не уверен, насколько меньше я могу сделать это, но я уверен, что вернусь к этому позже! Я мог бы опубликовать объяснение, если кому-то тоже интересно.
X
Теперь обрабатывает ввод и неквадратных вводов.источник
Python 2,
755 706 699 694 678626 байтОжидается ввод по стандартному вводу строки с завершающим переводом строки. Конец ввода запускается с помощью
cmd+d
.Полная программа:
Я уверен, что на этом можно было бы сделать гораздо больше игры в гольф (так как я все еще изучаю питон), поэтому любая помощь приветствуется.
Правки
findX
использования для пониманияrange
вместо литерального массиваfindX
на лямбдуxs
на 4 и устраненияtry-except
блокаh=i=j=k=l=0
вместоh,j,k,l=0,0,0,0
chooseChar
источник
R=range
чтобы сократить диапазоны. Тогда вы также можете изменитьfor i in[5,4,3,2,1,-1,-2,-3,-4,-5]:
наfor i in R(5,0,-1)+R(-1,-6,-1):
q
лямбда кажется мне очень неэффективной. Это может быть сокращено вообще? По крайней мере, я не думаю, что скобки необходимы, но я думаю, что логическая логика и сравнения строк тоже могут быть сокращены.