брифинг
Сложность вопроса Code Golf можно рассчитать следующим образом:
Где v
количество просмотров вопроса
и a
количество ответов на вопрос
и ⌈ x ⌉ - оператор потолка .
Также:
Текущая сложность этого вопроса: ***
задача
Напишите программу, которая будет принимать два целых числа (v and a)
и выводить сложность в asterisks (*)
.
Входные данные могут быть в виде массива, отдельной строки или отдельных аргументов функции
Тестовые данные
Views Answers Difficulty Program Output
163 2 2 **
548 22 1 *
1452 24 1 *
1713 37 1 *
4162 32 2 **
3067 15 3 ***
22421 19 10 **********
Пример с псевдокодом
v: 1713
a: 37
out = clamp(ceil(((v/a)/700)*10), 0, 10); // evaluates to 1
//program will output '*'
Самый короткий код в байтах побеждает! Трейлинг / ведущие пробелы разрешены.
/700 * 10
вместо/70
?Ответы:
JavaScript (ES6),
4039 байтПотому что
substring
обеспечивает требуемое зажимное и «потолочное» поведение. Изменить: Обычно я слишком ленив, чтобы беспокоиться, но, поскольку он получил 4 отзыва, я последовал совету @ MarsUltor, чтобы сэкономить 1 байт путем карри.источник
v=>a=>
substr
вместо этого? Я знаю, что второй параметр имеет значение, но не уверен насчет первого ...slice
будет еще короче.substr
иslice
интерпретируют отрицательный аргумент как обратный отсчет от конца строки.Я давно хотел сделать это ...
HTML + CSS
491487485 байт-4 байта благодаря Conor O'Brien
-2 байта благодаря выпуску ядра гелия
Ввод принимается как ширина и высота окна страницы; width - количество просмотров, а height - количество ответов.
Вы можете попробовать это в своем браузере, введя
как URL в новой вкладке.
источник
}
с.05AB1E, 11 байт
объяснение
Попробуйте онлайн
источник
Javascript (ES6),
3736 байтБлагодаря TheLethalCoder сэкономил 1 байт при помощи карри
Показать фрагмент кода
источник
v=>a=>
вместо(v,a)=>
?v=70, a=1
не так ли?Mathematica,
3835 байтСпасибо @MartinEnder за 3 байта
источник
Clip
, что имеет почти такой же синтаксис, что и OP-Clamp, но потом я увидел, что уStringRepeat
него есть необязательный третий аргумент для усечения.Ceiling[]
.EXCEL, 29 байт
Если вы считаете Excel как представление VBA Excel, то вы можете использовать
где
v
иa
- название ссылочных ячеек.источник
CJam,
181514 байтовСохранено 1 байт благодаря Питеру Тейлору и 3 байта благодаря Аднану
Попробуйте онлайн
источник
C #,
684948 байтовЭто версия C # этого превосходного ответа Нила.
Сохранено еще 19 байтов благодаря Нейлу
источник
(int)System.Math.Floor(10-v/a/70)
или просто(int)(10-v/a/70)
.70d
покое, но работает лучше, спасибоd
там.v=>a=>
Java 8, 57 байт
Использует лямбду для сохранения байтов, выполняет вычисления и подстроки для возврата ответа.
Вот мой класс для его тестирования.
Обновить
источник
java.lang.
так как это пакет по умолчанию.System.out.println((int)2.99);
распечатал,2
и так как я беру предварительно установленное значение из 10, а затем полагаю его, это равносильно снятию потолка с 10.MATL , 12 байт
Попробуйте онлайн!
объяснение
Округление и ограничение выполняются одновременно следующим образом: число
x = v/a/70
сравнивается с каждым элементом массива[0 1 ... 9]
. Номера этого массива, которые превышены,x
станут звездочками, а остальные будут пробелами.источник
Python2, 32 байта
сохранено 3 + 2 байта и исправлено одной ошибкой благодаря Leaky Nun
похоже на ответ Нилса. Использует тот факт, что Python2 делает целочисленное деление.
источник
v=70
иa=1
f=
Может быть удаленv, a
может статьv,a
Haskell, 35 байт
[1..min(ceiling$v/a/70)10]
создает диапазон от 1 до вычисляемой сложности (пустой список для сложности 0).a>>b
повторяет списокb
length a
часто.источник
Пайк,
139 байтПопробуй это здесь!
Объяснение:
источник
C #,
978987774241 байтСохранено 10 байтов благодаря Адаму
Сохранено несколько байтов благодаря Арно
источник
(int)System.Math.Ceiling(v/a/70d)
на(v+69)/(70*a)
... Обратите внимание, что, кроме того, v / a не может быть отрицательным, поэтомуc
может быть сильно упрощено, потому что вам не нужно проверять это.Perl,
3532 байтаИспользуйте
-E
для активацииsay
и введите аргументы в обратном порядке:Если допустимы аргументы в STDIN, то это 29 байтов:
источник
0|
вместо этого$-=
? (Мышление приоритета оператора может быть неправильным ...)0|
превращает отрицательное число в огромное число (ведущее в ноль*
с),$-=
обрезает в 0 (ведущее в десять*
с), что мне и нужноR,
68, 5052 байтаrep
неявно ставит мин на число 0.Спасибо @plannapus и @ Anastasiya-Romanova 秀 за обнаружение моей ошибки.
источник
f=
1+
послеmin(
, чтобы получить те же результатыPyth ,
1713 байт4 байта в кредит Луису Мендо за его алгоритм .
Тестирование.
источник
Javascript ES6, 48 байт
источник
C,
54,51,50, 49 байтовЕсли предположить, что
v
это положительное или нулевое иa
положительное значение,x < min
случай зажима никогда не встречается, так как результат операции потолка не может быть отрицательным. Кроме того, целочисленная математика для неотрицательных значений всегда дает пол результата, поэтому мы добавляем,1
чтобы получить потолок.Это решение требует
write
функции, работает как минимум на Linux.Основной тест:
источник
(v=v/a/70)
с(v/=a*70)
сохранением 1 байта.JavaScript:
8273 байтаисточник
console.log
, возвращение в порядке. Вы также можете сохранить байтv=>a=>
вместо(v,a)=>
Дьялог АПЛ , 15 байт
'*'⍴⍨
персонаж повторял это много раз:10⌊
min (10, ...⎕÷
input делится на70×
семьдесят раз⎕
inputПопробуй APL онлайн!
источник
'*'/⍨(⎕÷70×⎕)>⍳10
Медуза , 18 байт
Принимает ввод в формате
[a v]
. Попробуйте онлайн!объяснение
%
является взаимным, так%70
что 1/70.i
вводится как двухэлементный массив./%
с входамиi
и%70
уменьшает массивi
путем зеркального деления с начальным значением%70
. Другими словами, он вычисляет v / (a / (1/70)) , что равно v / (70 * a) .M
берет потолок этого значения иm
берет максимум этого и10
.#'*
повторяет буквальный*
символ, который много раз.P
выводит результат без кавычек.источник
MATLAB,
3433 байтаПоскольку мне очень нравится этот вызов, вот один для MATLAB (выводит конечные пробелы):
Вдохновленный ответом @Luis Mendo. Спасибо @pajonk за сохранение одного байта.
источник
[... '']
вместоchar(...)
. И вам действительно нужно,ceil
когда в конце вы сравниваете с целыми числами?м4,
136135 байтОпределяет макрос,
f
который принимаетv
иa
, и расширяется до правильного вывода. Большая часть программы представляет собой реализацию потолка.источник
постоянный ток
110 108 10498 байтЭто было глупо, так как нарезка - это не вещь. Кроме того, dc не манипулирует строками. Я просто действительно ожидал строку, которая будет <5 часов кодирования. С положительной стороны, я наконец начал записывать общие конструкции, например, для циклов. Также пришлось сформулировать закругление / потолок, так что спасибо за это.
Вызывается в bash:
Заменить (вверху) на код, а также
v
иa
на их соответствующие аналоги выше. Одиночные кавычки важны (в противном случае вы получите историю bash).Разъяснение:
Вероятно, это больше подходит для игры в гольф, но я пытался закончить его, чтобы избежать преждевременной оптимизации.
источник
[*]n
=>42P
. Каждый экземпляр10
может быть заменен наI
.[]p
=>IP
Haskell, 35 байт
Это решение так же совершенно отличается от ответа Лайкони, как и для чего-то такого тривиального. Тем не менее, оценка (на данный момент) точно такая же.
Это дает десять звезд, а затем сбрасывает некоторые. Легко расширить до произвольной сложности с бесконечным списком.
Мне удалось сбрить еще один байт. Но хотя все тестовые случаи работают, это не должно быть правильным в целом.
источник
TI-Basic, 39 байт
источник
PowerShell v2 +, 47 байт
Отчасти ответ @ Neil's на JavaScript .
Принимает входные данные
$args
и делит их, затем делит на70
и добавляет.499
. Поскольку PowerShell выполняет банковское округление , это даетceil
точность с точностью до двух десятичных знаков. Если требуется дополнительная точность, добавьте столько дополнительных9
значений, сколько требуется.Наряду с
1..
, это формирует индекс диапазона в строку. Строка'*'*11
, то есть'***********'
. Это приводит к массиву символов, поэтому мы-join
вместе возвращаем его в строку. Эта строка остается в конвейере и вывод неявный. Как и ответ Нейла, это эффективно «зажимает» выходной сигнал от 1 до 10 звезд.Тестирование
источник
Python 3,
6968 байтЯ не хотел копировать ответ Python 2, поэтому мой немного длиннее.
Сохранено 1 байт благодаря программе Man
источник
from math import *
вы сэкономите пару байтовimport*
без пробелов.На самом деле, 14 байтов
Попробуйте онлайн!
Воспользуется тем фактом, что 0 просмотров и 0 ответов невозможны и, таким образом
ceil(v/a) > 0
.Объяснение:
источник