Многие из вас, возможно, когда-то общались с людьми из России через Интернет, и некоторые из вас, возможно, заметили немного странный способ выражения себя.
например удали игру нуб)))
где )))
добавлены акценты для предыдущего утверждения, я работаю над теорией, согласно которой отношение )
«s» к остальной части строки прямо пропорционально количеству подразумеваемого акцента, однако мне часто бывает трудно вычислить отношение на лету, так как я также пытаюсь справиться с целым рядом злоупотреблений, поэтому я хотел бы, чтобы кратчайший код помог мне вычислить, какой должна быть полученная строка, для значения энтузиазма от 0 до 500%, учитывая исходный не вызывающая энтузиазма строка, это очень поможет моему исследованию, так как мне не придется печатать громоздкие сценарии каждый раз, когда я хочу проверить свою гипотезу.
Итак, задача:
написать полную программу или функцию, которая при условии двух аргументов, строки неизвестной длины и числа в целочисленном формате (от 0 до 500) или в десятичном формате (от 0 до 5 с 2 точками точности) будет
- Возвращение / отобразить исходную строку с буквой ряда
)
«с - число будет вычислено как отношение числа ввода к длине строки.
- поэтому, если было указано число 200 или 2,00, к 200% строки следует добавить суффикс
)
«s». - количество скобок, округленное до десятичного числа, не имеет значения.
- Сценарий необходим для поддержки печатных символов ASCII.
- должен поддерживать только один формат ввода номера, на ваш выбор.
Примеры:
"codegolf" 125 = codegolf))))))))))
"codegolf" 75 = codegolf))))))
"noob team omg" 0.5 = noob team omg))))))
"hi!" 4.99 = hi!)))))))))))))))
Пример кода (PowerShell) (с десятичным вводом):
Function Get-RussianString ([string]$InputStr,[decimal]$Ratio){
$StrLen = $InputStr.Length
$SuffixCount = $StrLen * $Ratio
$Suffix = [string]::New(")",$SuffixCount)
return $InputStr + $Suffix
}
Get-RussianString "codegolf" 0.5
codegolf))))
Это код-гольф, поэтому выигрывает самый короткий код!
)
акцент как!
? Это какая-то проблема с кодировкой?!
s, но они печатают их как есть, это не очень распространено, но это довольно знаково.)
смайликов:)
. Насколько я знаю, он очень распространен среди молодежи.)
это не акцент, это просто смайлик. Насколько я знаю, печатать на:
русской раскладке сложнее , поэтому улыбаются без глаз.:
на русском языке так же сложно писать (ЙЦУКЕН), как^
на QWERTY. Но на самом деле)
это сокращенная версия:)
. Нажимать и удерживать клавишу Shift-0 намного проще, чем многократно чередовать клавиши.Ответы:
Желе , 7 байт
Попробуйте онлайн!
Использует десятичный формат.
Как?
источник
Perl 6, 21 байт
источник
Обыкновенный Лисп,
595250Скобки? Я нахожусь в.
подробности
Строка управления форматом
~a
: довольно печатный аргумент (здесь данная строка)~v@{...~}
: блок итерации, ограниченный V итерацией, где V берется в качестве аргумента, а именно(* ...)
выражения. Предполагается, что итерация выполняет итерацию по списку, но когда вы добавляете@
модификатор, список является оставшимся списком аргументов функции форматирования. В итерированном списке должен быть хотя бы один элемент (в противном случае мы завершаем работу, игнорируя V). Вот почему есть дополнительный аргумент для формата (0).Поскольку ни один элемент в списке не используется форматом, цикл бесконечен, но, к счастью, он также ограничен символом V, то есть количеством печатаемых скобок.
Edit: спасибо Michael Vehrs за указание на то, что нет необходимости округлять числовой аргумент (вопрос позволяет урезать / округлить, как мы хотим, поэтому здесь работает стандартное поведение).
источник
format
принимает десятичный аргумент дляv
. Может, Common Lisp тоже?format
accept ...", поскольку стандартная схемаformat
не поддерживает~r
; и Guileformat
следует примеру Common Lisp.JavaScript ES6,
383130 байтисточник
s=>n=>s+')'.repeat(s.length*n)
(тогда он будет называться какf("hi!")(4.99)
)Python 2 , 29 байт
s в строке, p - это процент (целое число).
Попробуйте онлайн!
источник
05AB1E ,
98 байтПопробуйте онлайн!
Работает как для целых, так и для десятичных чисел, порядок аргументов:
f(String, Double)
источник
ï
неявно выполняется×
с аргументом float.Python, 30 байт
Использует десятичный ввод.
Попробуйте онлайн!
источник
Pyth, 8 байт
Онлайн тест! Сначала берется коэффициент возбуждения, а затем струна, которая должна вызывать восторг.
Объяснение:
источник
PowerShell , 33 байта
Попробуйте онлайн!
Поддерживает десятичный формат.
источник
R,
624642 байтаАнонимная функция, которая принимает строковые
a
и десятичные числаn
, печатает вывод на стандартный вывод.источник
Pyth, 9 байт
Принимает две строки ввода: строка и соотношение (десятичное число).
Попробуйте это на pyth.herokuapp.com
объяснение
A
обозначает первый аргумент функции,B
ее второй аргумент.источник
TI-Basic, 33 байта
Принимает десятичный ввод.
источник
Perl 5, 29 байт
(Номер - первый аргумент, строка - второй.)
Попробуйте онлайн!
источник
CJam , 9 байт
Попробуйте онлайн!
Введите строку в первой строке, коэффициент выделения в диапазоне от 0 до 5 во второй.
объяснение
источник
MATL,
11108 байтЭто решение использует десятичную форму второго ввода
Попробуйте онлайн!
объяснение
источник
сБ ~ 17 байт
Разъяснение:
Скобки закрываются автоматически
Вот вывод компилятора, если вам интересно:
Эта версия компилятора была написана 27.01.2017 в 23:12, что могло произойти через несколько минут после публикации этого вопроса. Итак, вот версия, которая работает на самой старой версии компилятора, написанной на час раньше:
iS$,N?S$;')'*(N*l(S$))
(22 байта)источник
PostgreSQL, 102 байта
подробности
Использует целочисленный формат ввода.
Это просто добавляет правую строку ввода с паренсом к целевой длине.
Вызывается с
источник
Bash + coreutils, 45 байт
Попробуйте онлайн!
Целочисленный ввод.
источник
echo $1`jot -b \) -s '' $[${#1}*$2/100]`
40 байт :) попробуйGroovy, 27 байт
Простое решение
Тестовая программа:
источник
Реболь, 39 байт
источник
Clojure, 40 байт
Довольно скучное решение:
Просто уменьшает
str
функцию в списке закрывающих скобок со строкой в качестве начального параметра.Смотрите это онлайн: https://ideone.com/5jEgWS
Не очень скучное решение (64 байта):
Преобразует входной строки в символ (чтобы избавиться от кавычек) и повторно применяет функцию
list
на нем генерации бесконечной последовательности , как это:(a (a) ((a)) (((a))) ... )
. Принимаетnth
элемент преобразует его в строку и заменяет все открывающие скобки ничем.Смотрите это онлайн: https://ideone.com/C8JmaU
источник
#(.replaceAll(str(nth(iterate list %)(*(count %)%2)))"[(\"]""")
На 1 байт меньше (yay). Я хотел сделать комп, но не могу получить его ниже 70 байт.")"
чтобы\)
сохранить байты.SimpleTemplate, 92 байта
Принимает строку в качестве первого параметра и «коэффициент» в качестве второго.
Соотношение между 0 и 5, с двумя десятичными знаками.
Как видите, это неоптимально.
Число 2
{echo}
может быть уменьшено до 1.Из-за ошибки в компиляторе этот код не может быть уменьшен намного дальше.
Ungolfed:
Если бы не было ошибки, код выглядел бы так: 86 байт:
источник
C # Интерактивный,
7767 байтC # интерактив сладок.
источник
using System;
или полностью указатьMath
. Кроме того, не уверен, что вы можете сделать это в интерактивном режиме, но вы можете скомпилировать в aFunc<string, Func<int, string>>
для сохранения байтов, т.s=>p=>s+new...
Math.Round
просто приводить кint
вызовуFloor
Floor
Ceiling
SmileBASIC, 29 байт
источник
3*4.99
=14.97
, только14
или15
будет приемлемым в качестве ответов, 29-байтовая версия должна работать нормально, хотя, извините!Gol> <> (Golfish), 17 байтов
Попробуй это здесь .
Верхняя строка читает символы (
i
) до тех пор, пока не найдет новую строку (ASCII 10,a
), а затем идет вниз (v
).Затем мы отбрасываем один символ (перевод строки)
~
, нажимаем длину стека (l
), читаем число с плавающей точкой (I
, увеличиваем ), умножаем два и многократно (R
) нажимаем символ ")" столько раз. Наконец, переверните stack (r
), выведите его и halt (H
).источник
PHP, 50 байт
принимает в качестве аргументов командной строки строку и десятичное число; отрубы прокладки. Беги с
-r
;сломать
источник
Рубин, 25 байт
Я использую лямбды . Тестовая программа будет выглядеть примерно так:
источник
Clojure, 68 байт
Анонимная функция, которая принимает десятичный ввод.
Буквально первая программа на Лиспе, которую я когда-либо написал! Мне уже весело.
источник
#(...)
и избавиться от нихprint
(поскольку возврат функции должен быть приемлемым). Вы можете изменитьreduce
наapply
дляstr
функции, и вы можете изменить")"
на\)
, что делает то же самое. Итак, окончательный код должен быть:#(str %(apply str(repeat(*(count %)%2)\)))))
.(#(...) "codegolf" 125)
необходимо добавить 125 процентов длины «codegolf» вместо 125- кратной длины «codegolf». Таким образом, фиксированная программа будет:,#(str %(apply str(repeat(*(count %)%2 1/100)\))))
что составляет 49 байтов.C ++ 14, 43 байта
Как и неназванная лямбда, изменяющая входные данные, предполагается, что
s
он похож наstd::string
(имеет.append(int,char)
и предполагаетp
тип с плавающей запятой:Использование:
источник
Haskell , 37 байт
Попробуйте онлайн! Использование:
"codegolf" ! 125
Версия, которая принимает десятичное число: (41 байт)
Попробуйте онлайн!Использование:
"codegolf" ! 1.25
источник