Oreoorererereoo
Учитывая, что входная строка похожа на слово «oreo», задайте ASCII-представление файла cookie, ширина которого равна входной строке (для обеспечения стабильности файла cookie).
правила
- Ввод нижнего регистра, непустая строка без пробелов, содержащая любую комбинацию строк «o» и «re», и содержащая только эти строки.
- Строка «o» представляет сплошное печенье, в то время как строка «re» представляет начинку.
- Выходными данными должен быть сложенный файл cookie, ширина которого равна ширине входной строки.
- Вывод не может быть массивом строк
- Печенье должно перекрывать заполнение одним символом с каждой стороны
- Символы, используемые для вывода, не должны совпадать с выводом ниже (█ и ░), они просто должны быть разными непробельными символами для двух частей файла cookie.
- Заполнение пробелов в левой части заливки обязательно, и любые пробелы в конце не обязательны
Примеры
Input: oreo
Output:
████
░░
████
Input: o
Output:
█
Input: re
Output: (two spaces)
Input: rere
Output:
░░
░░
Input: oreoorererereoo
Output:
███████████████
░░░░░░░░░░░░░
███████████████
███████████████
░░░░░░░░░░░░░
░░░░░░░░░░░░░
░░░░░░░░░░░░░
░░░░░░░░░░░░░
███████████████
███████████████
Так как это кодовый гольф, выигрывает самый короткий ответ, удачи :)
re
теперь должен быть приемлемым, а1 or 2 spaces
не обязательно 2?Ответы:
Желе ,
16 1413 байт-1 Спасибо Эрику Аутгольферу
Используется
1
для крема и0
для печенья.Попробуйте онлайн!
Как?
Предыдущие 16 байтов:
Использует
r
дляr
камеры иo
дляo
ОК.Попробуйте онлайн!
источник
Пепе , 364 байта
К сожалению, онлайн-интерпретатор не заботится о сжатии комментариев, поэтому все
o
символы будут заменены пробелом. Ни пробелы, ни символы неo
нужны, поэтому это может быть 295 байт, но мне больше нравится этот способ:Попробуйте онлайн!
Ungolfed
Могут быть некоторые возможности для игры в гольф с флагами, которые я пропустил, но я уже закончил:
источник
Холст ,
191817 байтовПопробуй это здесь!
Использует раздражающе длинный код
:r≠*┤]
для удаленияr
s из ввода.источник
Japt
-R
,1615 байтПопробуй
альтернативы
источник
C # (интерактивный компилятор Visual C #) , 95 байт
Попробуйте онлайн!
Альтернатива с использованием Aggregate, 108 байт
Попробуйте онлайн!
источник
o
, посколькуn.Length-2
приведет к-1
.n.Length-2
для того, когда вход имеетre
.R , 106 байт
Попробуйте онлайн!
Предыдущая версия с объяснением:
R , 118 байт
Попробуйте онлайн!
Развернутый код и объяснение:
источник
05AB1E ,
181716 байтов-1 байт благодаря @Emigna
Используется
o
для печенья иr
для начинки.Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
источник
oro
не является возможным вводом, так как ввод будет содержать толькоo
s иre
s. Несмотря на это,oro
кажется , все еще выводит правильно, следуя спецификации, так как он выводитooo\n r\nooo
. Что в этом плохого?2*
может быть,·
и пропущенный пробел можно исправить, изменив».c
на.c.B»
·
, спасибо! :) И всегда приятно иметь меняющиеся спецификации во время испытания, вздох ..Retina ,
7473 байтаЯ чувствую, что не отправил ответ в течение очень долгого времени. Ну вот и я. Кроме того, Retina сильно изменилась, и я чувствую, что сосу это сейчас.
Попробуйте онлайн!
источник
[or]
значитo
илиr
вместо[
или]
. У меня болит голова.Сетчатка , 21 байт
Попробуйте онлайн! Объяснение:
Удалить
r
с.Перечислите каждую букву в отдельной строке, повторяя длину исходного ввода.
Замените первые два
ee
s в каждой строке пробелом.источник
&
: PC (gcc) ,
135113109104 байтадвадцать двадвадцать семь байтов благодаря NieDzejkob .Попробуйте онлайн!
источник
-D$=putchar
e=o
условие в первый цикл for, а затем удалите else.JavaScript ES6, 103 байта
Используя заменить 103 байта:
Попробуйте онлайн!
Используя split и map 116 байтов:
Попробуйте онлайн!
источник
${"|".repeat(s>1?s-2:0)}
и его пробелами, вместо использования" "+"|".repeat(s>1?s-2:0)
.Perl 5
-p
, 47 байтПопробуйте онлайн!
источник
Python 3 , 77 байт
Попробуйте онлайн!
источник
+" \n"
чтобы сохранить байт.Mathematica,
11191 байтПопробуйте онлайн!
Это главно укорачивается благодаря Мише «s правок .
Мой оригинальный код:
Этот код не очень сложный, но кажется слишком дорогим, чтобы преобразовать его из строки, а затем обратно или сделать что-нибудь еще более умное.
В частности, только с 3-4 командами, имеющими имя String, мой оригинальный подход вообще не мог сохранить байты, пытаясь абстрагироваться от этого. Например, следующее составляет 129 байтов:
источник
StringRepeat
может быть,Table
так<>
как позже преобразует список в строку; вIf
этом нет необходимости, поскольку мы беремre
ветвь только тогда, когдаn
есть хотя бы 2; мы можем сэкономить на скобках, определяяn
только тогда, когда мы его используем. Попробуйте онлайн!If
Добавлен, потомуStringRepeat
что выдает ошибку в случае «re»; это не позволяет вам повторить строку 0 раз.Table
не имеет такого ограничения, так что это большая экономия!Perl 6 , 37 байт
Попробуйте онлайн!
Блок анонимного кода, который принимает строку и печатает oreo, используя
o
в качестве файла cookie иr
как крем.Объяснение:
источник
o
может быть использован вместо∘
. Очень красиво в гольф.Java 11, 110 байт
Используется
=
для печенья и~
для начинки.Попробуйте онлайн.
Объяснение:
Вышеупомянутое решение использует замену. Следующие карты вместо символов ввода вместо:
Java 11,
113112 байт-1 байт благодаря @Neil .
Попробуйте онлайн.
Объяснение:
источник
~c&1
?PHP ,
1009993 байтаПопробуйте онлайн!
УЧ. Имена функций PHP waaaay_too_long снова появляются!
Выход:
источник
PHP ,
968785 байтБлагодаря @gwaugh -9 байт
Благодаря @manatwork -2 байт
Попробуйте онлайн!
Попробуйте онлайн! (87 байт)
Попробуйте онлайн (оригинал 97 байтов)!
И рекурсивная функция
PHP , 135 байт
Попробуйте онлайн! (Рекурсивный)
источник
<?=
мы можем использовать<?
, или я ошибаюсь?' '.$r(o,$l-2).""
→" {$r(o,$l-2)}"
.""
istead of''
$argn
: Попробуйте онлайн!JavaScript,
726564 байтаПопробуйте онлайн
источник
Powershell,
716966 байт-2 байта спасибо @Veskah
-3 байта спасибо @AdmBorkBork
Менее гольф тестовый скрипт:
Выход:
источник
$args
69 байтов[string[]]
- это[int[]]
... Это[int[]]
,[int]
если массив содержит только один элемент. Большой! Спасибо!r
что" "+'%'*($l-2)
вместо этого можно использовать -3 байта.Древесный уголь , 19 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Переберите символы входной строки.
Включите каждого персонажа.
Если это,
o
то выведите строку ввода, замененную на#
s, в отдельной строке.Если это
e
движение затем вправо, выведите строку-
s, которая на два меньше длины входной строки, затем двигайтесь вниз и влево.источник
Баш, 87 байт
Без
sed
:Благодаря @manatwork.
С
sed
(90 байт):источник
test.sh
. Затем вы вызываете test.sh из командной строки следующим образом :bash test.sh oreoorererereoo
.f
необходимо повторить характер$2
$1
количество разC # (интерактивный компилятор Visual C #) , 71 байт
Попробуйте онлайн!
Заимствовал некоторые идеи от ответа «Реализации невежества» наверняка.
-6 байт благодаря @ASCIIOnly!
Общая концепция состоит в том, чтобы вычислить агрегат строки по входным символам, следуя этим правилам:
r
встречается, добавьте один пробелдля отступа. Мы знаем, что следующий персонаж будет
e
.o
илиe
, генерируйте строку, повторяя текущий символ определенное количество раз и добавляя его к новой строке или некоторому заполнению и новой строке.PadLeft
Функция используется для создания повторяющейся строки символов.Результатом является объединение всех этих строк.
источник
Pyth , 28 байт
Попробуй это здесь! Этот использует цикл.
Pyth, 30 байт
(Как строку заменить)
Попробуй это здесь! Этот использует замену строки.
Мне действительно нравится python (это то, для чего я написал свои оригинальные тестовые сценарии), поэтому я подумал, что сделаю запись pyth для удовольствия :)
источник
█
и░
три байта каждый. Или я что-то здесь упускаю?N
, даже сохранив несколько байтов!33 chars, 37 bytes
, но не на языках гольфа на TIO. Но в ваших решениях просто изменение этих персонажей действительно решает проблему, так что здесь это не так уж важно.Рубин ,
6260 байтПопробуйте онлайн!
Используется
O
для печенья,*
для начинки.-1 благодаря @manatwork, указывающему на глупую ошибку, и еще -1 из-за ослабления правил о пробелах.
источник
.gsub
параметров.C # (.NET Core) , 143 байта
Без LINQ.
Попробуйте онлайн!
источник
Clojure , 137 байт
Я не использую хороших персонажей в распечатке в гольф-версии, потому что они дорогие. Возвращает строку для печати.
Попробуйте онлайн!
Смотрите объяснение ниже.
Pre-golfed:
источник
Дротик ,
120106107 байтПопробуйте онлайн!
источник
Python 2 ,
777672 байтаПопробуйте онлайн!
Внешняя часть cookie - «o», а начинка - «r».
источник
+' '
после(l-2)
. Кроме того, у вас есть опечатка,*' '
должно быть+' '
.машинный код x86-64 (Linux), 97 байт
Эта функция x86-64 принимает указатель на входную строку в rsi и создает вывод, начиная с указателя в rdi (это регистры, используемые для передачи первых двух аргументов из функции C в Linux). Для удобства я написал оболочку C ++ для этого, которая также хорошо очищает ввод и печатает вывод. Этот код можно найти здесь . Это также показывает оригинальную синтаксическую сборку nasm, которую я написал для этой функции (а также версию без игры в гольф, которую я начал работать первым).
Следует отметить, что этот код не учитывает сохраненные регистры вызываемого абонента, а это означает, что код C ++, скорее всего, потерпит крах, если будет выполнен некоторое время после вызова этой функции. На моей машине это не так, но это довольно удивительно. Я также не добавляю нулевой байт для разделения выходной строки, а вместо этого пространство, выделенное для выходной строки, предварительно заполняется байтами. (Если это не разрешено, я могу добавить нулевой терминатор по стоимости 3 байта).
Логика для этого кода заключается в подсчете длины строки, затем построении строки этой длины для каждого символа «o» и «r», видимого во входной строке, а затем для любого символа «e», заменяющего первый и последние символы в предыдущей строке с пробелами.
Я не могу найти где-нибудь в Интернете, чтобы скомпилировать и запустить смесь исходного кода C ++ и nasm, поэтому я мог бы написать небольшой код-обертку для этого, чтобы доказать, что он работает.В противном случае вы сможете скомпилировать и запустить это с make-файлом по ссылке, которую я дал с командой:Мне удалось отформатировать сборку до чего-то приемлемого для gcc, так что попробуйте это онлайн!
источник