Вам предоставляется одна печатаемая строка ASCII, не содержащая символов новой строки, а также многострочная «форма», содержащая пробелы ( ) и хэши (
#
).
Вы должны идти символ за символом в строке и заменять хэши, используя символы из строки в порядке слева направо, сверху вниз. Если строка слишком короткая, чтобы заполнить форму, вы прекращаете вывод, если строка слишком длинная, вы обрезаете строку, чтобы точно заполнить форму.
Пример строки / формы (строка слишком длинная, усеченная):
Loremipsumdolorsitamet,consecteturadipiscingelit.Namsuscipitmagnanoneratgravidacondimentum.Vestibulumnecnisllorem.Fuscemolestieviverranibh,eueleifendnislplaceratnon.Namblanditturpislacus,vitaemolestielacusimperdietquis.Nullapulvinar,exquissollicitudinfacilisis,eratnullavolutpatlectus,etluctusenimvelitegetex.Inhachabitasseplateadictumst.Donecinterdumnullalacinia,sodalesloremin,eleifendturpis.Pellentesqueanisimi.Aeneannonlobortisdiam,quisaliquetquam.Aeneanaugueipsum,imperdietsedaliquetnon,volutpategetsapien.Nullampharetranullaquispretiumornare.Aliquamfermentumvestibulummassavitaevehicula.
###########################################################
##### ############## ###### ###### ######################
##### ## ###### # ##### ###### ######## ######
###### # # #### #### ##### ###### ####### ###### #####
###### ### ### ##### ###### ####### ####### #####
###### ##### ### ########### ###### ####### ### ######
###### ###### ### ########## ###### ##### #########
################## #### ##########################
###########################################################
Пример вывода:
Loremipsumdolorsitamet,consecteturadipiscingelit.Namsuscipi
tmagn anoneratgravid acondi mentum .Vestibulumnecnisllore
m.Fus ce molest i evive rranib h,euelei fendni
slplac e r atno n.Na mblan dittur pislacu s,vita emole
stiela cus imp erdie tquis. Nullapu lvinar, exqui
ssolli citud inf acilisis,er atnull avolutp atl ectus,
etluct usenim vel itegetex.I nhacha bitas seplatead
ictumst.Donecinter dumn ullalacinia,sodalesloremin
,eleifendturpis.Pellentesqueanisimi.Aeneannonlobortisdiam,q
Пример строки / формы (строка слишком короткая, вывод остановлен):
This probably won't look good.
### ### ### ###
# # # # # #
### ### # # #
# # # # #
# # ### ###
Соответствующий вывод:
Thi s p rob abl
y w o n '
t l ook g o
o d .
Самый короткий код в байтах побеждает.
Благодарим за идею этого сайта .
Ответы:
CJam,
1614 байтовСпасибо Sp3000 за сохранение 2 байта.
Завершается с ошибкой, если строка слишком короткая, но ошибка выводится в STDERR.
Попробуйте онлайн!
Альтернативно (тот же счетчик байтов):
объяснение
источник
LabVIEW, 37 примитивов LabVIEW
разбивает строку на текст и плесень, а затем преобразует их в массив. Проверяет шаблон, если есть # и помещает символ из текста, иначе он ничего не делает. Если текст или шаблон пусты, выйдите из цикла
источник
Haskell, 48 байтов
Вызывается как "(заменить на строку) # (строка хешмарка)":
Менее гольф:
источник
import Control.Applicative;main=liftA2(#)getLine getContents>>=putStrLn
Сетчатка ,
4240 байтЧисло байтов предполагает кодировку ISO 8859-1.
Конечный перевод строки является значительным.
Попробуйте онлайн!
объяснение
Сначала мы заменим те,
#
которые являются частью сетки, не-ASCII (но расширенный ASCII) символ,×
поэтому мы не путаем их с#
теми, которые могут появиться в первой строке.Теперь мы заполняем как
×
можно больше из первой строки, многократно заменяя первую, которую×
мы можем найти, первым символом в первой строке (которая удаляется в процессе).Наконец, мы избавляемся от всего, что осталось в первой строке, а также от чего угодно,
×
чтобы усечь ввод в обоих направлениях.источник
JavaScript (ES6),
575655 байтСохранено 1 байт благодаря @Neil !
объяснение
Работает с хэшами во входной строке и сохраняет завершающий пробел после завершения ввода строки.
источник
m.replace(/./g,c=>...)
короче./[^]/
вместо/.|\n/
. (Также извиняюсь за неправильное предложение/./
.)Python 3,
696867 байтIdeone
Спасибо FryAmTheEggman, Chiel ten Brinke за побег. Кроме того, я мог бы использовать Python 2 для дополнительного (
print
без()
).источник
print
сreturn
.пб , 359 байт
В pb ввод строго одномерный. Он не понимает, что вы рисуете фигуру с помощью ввода, он просто видит одну длинную строку с несколькими байтами со значением 10. Первое, что делает эта программа, это копирует все, кроме первой «строки» ввода в Y = 0, Y = 1 и т. Д., Чтобы создать форму пресс-формы.
Что-то, что я заметил в код-гольфе, но особенно при игре в эзотерические языки, это то, что вам часто не хочется иметь две ветви, с которыми приходится иметь дело; вы просто настраиваете себя на то, что вы делаете одно и то же в любом случае. Наивный способ решения этой проблемы, вероятно, будет проверять длину строки по отношению к количеству хешей в остальной части ввода и делать что-то в зависимости от результата, потому что он должен вести себя по-разному в зависимости от того, что обрезается. Но это много байтов.
Вместо этого после заполнения формы дополнительная линия добавляется к нижней части. Это просто
n
хэши в строке, гдеn
длина строки. Теперь строка гарантированно подходит! После вставки всех символов строки эта добавленная строка безоговорочно уничтожается. Любые оставшиеся хеши в самой форме также удаляются, и это необходимый результат!Конечно, было бы нарушением спецификации просто уничтожить все хэши. В конце концов, во входной строке может быть хеш! Чтобы справиться с этим, я ссылаюсь на другую часть спецификации:
(Подчеркните мое.) К тому времени, когда мы имеем дело со строкой, нам все равно, есть ли в ней символы новой строки, но мы знаем, что их нет. Таким образом, все хэши заменяются символами новой строки перед тем, как помещать их в форму! После уничтожения всех хешей все новые строки снова заменяются хешами. Это не превращает весь вывод в одну строку, разделенную хешем, потому что характер двумерного вывода pb означает, что он фактически никогда не ставит новую строку в конце каждой строки, он просто переходит на следующую строку.
Ungolfed:
источник
ES6, 59 байт
70 байтов, если текст может содержать хэши:
источник
Perl,
535142 + 2 = 44 байтаТребуется
-p
для запуска. Объяснение:источник
$a=<>;$/="";say<>=~s/#/substr$a,$i++,1/ger
$/
вместо joinЖеле,
108 байтПопробуй это здесь!
источник
#
входных данных.Perl 6 , 72 байта
источник
ES6, 47 байт
Наверное, самое простое решение.
Этот код создает анонимную функцию, которая получает 2 параметра и возвращает конечный результат.
Первый параметр
S
- это строка «map» с вашим"#"
, а второй параметрR
- это «замена» для них"#"
.источник
Python 3
152127 байтПолная программа.
106 байт
Функция, которая принимает поток в качестве входных данных.
источник