Вы узнаете логотип PPCG? это выглядит так, когда вы делаете это ascii art.
+---+
|PCG|
+---+
v
Теперь, в этом Code Golf, Вы сделаете код, который делает логотипы для других сайтов, похожие на логотип PPCG.
Что ты должен делать
«Сокращенная» строка будет строкой со всеми заглавными буквами и цифрами во входной строке (что будет, PPCG
если входная строка Programming Puzzles & Code Golf
).
Коробка" (
+---+
| |
+---+
v
) должен идеально подходить к укороченной струне (не больше и не меньше)
Также v
часть должна быть ровно на 1 вниз и 1 слева направо вниз +
.
Затем выведите поле с укороченной строкой.
пример
Stack Overflow
:
+--+
|SO|
+--+
v
Area 51
:
+---+
|A51|
+---+
v
правила
Вы можете предположить, что ввод содержит как минимум одну цифру или заглавную букву.
Применяются стандартные правила игры в гольф .
^
не добавляет много по сравнению со вторым вызовом, который я связал, но я не буду бросать на это двуручный молоток, но пусть коммунитц решит, считают ли они это обманом или не.99 Bottles Of Beer
, это было бы99BOB
.Ответы:
Вим, 42 удара
Заменить
<DOWN>
на ↓,<LEFT>
с ←,<ESC>
с escи<C-V>
на CTRL+ V.Вот анимация запуска этого скрипта (старая версия, которая использует
V
вместоv
):Объяснение сценария:
источник
i+↓←|␛␖ky$p
на,A+↓|␛␖ky0P
чтобы сохранить байт.I|<END>|␛
V 34 байта
Обратите внимание, что это работало в более старой версии, но не работает в текущей версии, попробуйте онлайн. Я изменил
Ä
наYP
что функционально эквивалентно.Попробуйте онлайн!
Объяснение:
Удалите все, кроме цифр и заглавных букв.
Теперь буфер выглядит так:
И наш курсор находится в первом столбце последней строки.
Не конкурирующая версия: (31 байт)
источник
Programming Puzzles & Code Golf
неверная строкаPP&CG
.&
Должны быть удалены16-битный машинный код x86, 72 байта
В шестнадцатеричном виде:
Параметры:
SI
= строка ввода,DI
- буфер вывода.Выводит строку с нулевым символом в конце со строками, разделенными символом новой строки. Использует входную строку в качестве временного буфера.
источник
3c 41 cmp al,a'
не должно ли быть3c 41 cmp al,'a'
?Сетчатка , 43 байта
Попробуйте онлайн!
Это идеальная задача для демонстрации Retina, языка Мартина Эндера, играющего в гольф.
Это решение разделено на два этапа (так называемые этапы), причем оба этапа являются этапом замены.
Первый этап:
Это соответствует подстрокам, которые соответствуют
[^A-Z\d]
, то есть символам, которые не являются заглавными и не цифрами, и затем заменяют их ничем, означая удаление их.Второй этап:
Соответствует
.+
всему результату, а затем заменяет его второй строкой.Во второй строке:
$&
относится ко всему матчу$.&
относится к длине всего матча$*
означает взять предыдущее целое число, повторить следующий символ много раз. Здесь$.&$*-
означает повторить, как-
долго матч.¶
относится к новой строке.источник
T`dLp`dL_
но, к сожалению, такой же длины.C #,
183 177165 байтовумножение символов ужасно в C #. предложения приветствуются
большое спасибо aloisdg за -18 байт
источник
| |
на|
return$"+{x}+\n|{s}|\n+{x}+\n{new string(' ',m+1)}v";}
string.Join("",
наstring.Concat(
return
Excel VBA,
375359358 байт:Это работает, я отказываюсь от попыток сделать его короче ...
Редактировать: переключено на регистр с операторов if, -16 байт
Edit2: избавился от вас и заменен на Len (b), -1 байт
источник
Луа,
14599 байтНе много сказать, манипулирование строками всегда многословно в lua :). Принимает аргумент командной строки и выводит через STDOUT
Спасибо @LeakyNun за спасение мне 45 байт!
100 байтов, предложенных @LeakyNun
СТАРЫЙ 145 Байт
Ungolfed
источник
n=(...):gsub("[^A-Z%d]","")s="+"..("-"):rep(#n).."+\n"return s.."|"..n.."|\n"..s..(" "):rep(#n).."V"
составляет 100 байтов%u
мы получаем еще несколько байтов. В любом случае, спасибо :) (позже обновлю некольфа)2sable ,
3634333231 байтПредставляем 2sable :). Хотя он имеет много общего с 05AB1E, на самом деле он автоматически присоединяется к стеку, а не выводит его верх. Код:
Использует кодировку CP-1252 .
источник
JavaScript (ES6), 99 байт
источник
Haskell, 107 байт
Этот ответ в значительной степени основан на ответе Зилвий и комментариях Ними . Я бы добавил больше комментариев к этому ответу, но, увы, мне не хватает представителя.
Используются дополнительные приемы:
intersect
его реализацией, поэтому импорт может быть отброшен. (Примечание: реализация почти дословно библиотечная, я не смог найти более короткую версию.)where
предложение, чтобы функции могли использоватьn
параметр внутри.(#)
был достаточно коротким, чтобы его можно было вставить.источник
Python 3.5,
11493112 байтов:Полная программа. В основном используется регулярное выражение для сопоставления всех вхождений прописных букв и цифр, затем создается поле точного размера на основе длины списка совпадений и, наконец, помещается объединенный список совпадений «внутри» него.
Попробуйте онлайн! (Ideone)
источник
Python 3,
121124 байтаИсправлена глупая ошибка
не импортирует библиотеки, как другие ответы Python.
источник
Java 8, 149 байт
Попробуйте онлайн.
Объяснение:
источник
Пайк, 39 байт
Попробуй это здесь!
12 байтов создания мини-строки, 20 байтов форматирования. Радость!
источник
Pyth,
3837 байтПопробуйте онлайн.
Обратите внимание на новую строку в начале.
источник
Python 2, 113 байт
источник
47<x<58|64<x<91
:)char
тип - все символы в строках Python сами являются строками и не могут напрямую сравниваться с целыми числами. Это должно быть47<ord(x)<58or 64<ord(x)<91
.[x for x in n if x.isupper()^x.isdigit()]
на один байт корочеfilter(lambda x:x.isupper()^x.isdigit(),n)
x.isupper()^x.isdigit()
->x.isupper()|x.isdigit()
Джольф, 35 байт
Мне нужен более короткий способ удалить все, кроме заглавных букв и цифр ...
источник
С
171163Функция
f()
изменяет свой ввод и выводит результат.Тестовая программа
Требуется один параметр, строка для использования в значке:
источник
Хаскелл, 161
использование
источник
replicate
,length
иf
исключительно в этой комбинации, чтобы вы могли объединить их в одну функцию:r=replicate.length.f
и вызывать ее какr n '-'
. Вы можете сохранить еще больше байтов, используя инфиксный оператор:(#)=replicate.length.f
иn#'-'
/n#' '
. Дополнительноreplicate.length
есть>>
(с одиночной строкой вместо символа), так что это:(#)=(>>).f
иn#"-"
/n#" "
, оба без( )
него.( )
вокругt n
иf n
."|"++
есть'|':
. В общем и целом:o n=t n++'|':f n++"|\n"++t n++n#" "++"V"
.Баш,
9974 байтаИспользование: Запустите указанную выше команду, введите имя сайта, нажмите ввод, а затем Ctrl+D (отправьте «конец файла»).
источник
CJam, 41
Попробуйте онлайн
источник
R, 108 байт
объяснение
Идти изнутри (потому что кто не любит присваивать глобальные переменные внутри регулярного выражения), предполагая
s
наша входная строка:y<-gsub("[^A-Z0-9]","",s)
сохраняет заглавные буквы и цифры, присваивает полученное значение y.gsub(".","-",y<-...)
заменяет все символы с дефисами в приведенном выше.x<-gsub("(.*)","+\\1+\n",gsub(...))
бросает a+
на любом конце строки дефисов и новой строки, и мы сохраняем это как x.Все остальное довольно просто, выведите в соответствующем порядке и используйте тот факт, что число пробелов перед
v
символом будет равно длине y.источник
Брахилог , 61 байт
Связано с хранилищем 7 июля для обеспечения обратной совместимости.
Не конкурирует, 53 байта
Попробуйте онлайн!
источник
APL,
5249 байт(до 49 благодаря комментарию).
источник
{x⍪2⌽'v'↑⍨≢⍉x←⍉z⍪⍨(z←'+|+')⍪'-','-',⍨⍪⍵/⍨⍵∊⎕D,⎕A}
(Вы никогда не заключаете в скобки один из аргументов в функции обратного аргумента при игре в гольф. Это всегда может быть в обычном порядке, чтобы сохранить байт.)Perl, 57 байт
56 байт код + 1 для
-p
.Первоначально я пытался сделать это только с помощью регулярных выражений, но это было намного больше, чем я надеялся, поэтому вместо этого я использовал некоторое повторение строк.
Попробуйте онлайн!
источник
MATL , 34 байта
Попробуйте онлайн!
источник
JavaScript (ES6), 119 байт
источник
J , 52 байта
Попробуйте онлайн!
источник
Рубин, 81 байт (78 +
-p
флаг)источник
Common Lisp (Lispworks), 159 байт
ungolfed:
Использование:
источник