Программа должна взять число, начало диапазона и конец диапазона и вывести, сколько целых чисел появляется между началом и концом диапазона включительно . Обе программы и функции разрешены.
Пример входов
Например:
//Input example 1
3,1,100
//Input example 2
3
1
100
//Input example 3
3 1 100
//Input example 4
a(3, 1, 100);
Все вышеприведенные четыре входных примера действительны, и все они означают, что 3
это число, о котором идет речь, 1
это начало диапазона и 100
конец диапазона.
И тогда программа должна вывести, сколько раз 3
появляется в диапазоне от 1
до 100
включительно . 3
появляется в целых числах 3
, 13
, 23
, 30
, 31
, 32
, 33
, ..., 93
в общей сложности 19 раз. Таким образом, программа должна выводить 19
в качестве выходных данных, потому что именно столько раз 3
появляется в диапазоне от 1
до 100
.
правила
- Обе программы и функции разрешены.
- Все числа будут целыми числами, это означает, что не будет
float
s или double
s.
- Примечание: искомый номер всегда будет в диапазоне
0≤x≤127
. Там не будет ни одного случая , когда он будет находиться вне этого 0≤x≤127
диапазона.
- Как и в первом примере, для случая as
33
число 3
будет считаться появившимся только один раз , а не дважды.
- Значения начала и конца диапазона будут между
-65536
и 65535
включительно.
- Значение начала диапазона никогда не будет превышать или равняться концу диапазона.
start < end
- Также ассортимент включительно. Например, если вход был
8 8 10
, диапазон был бы 8≤x≤10
и следовательно выход будет 1.
- Входные данные могут быть приняты любым из способов, показанных в примерах. Входные данные могут быть приняты в виде строки или числа, так, как вы хотите.
Тестовые случаи
3 1 100
19
3 3 93
19
12,-200,200
24 //This is because 12 appears in -129, -128, ..., -112, -12, 12, 112, 120, 121, 122, ...
123,1,3
0 //This is because all of 123's digits have to appear in the same order
3 33 34
2 //Because 3 appears in 2 numbers: 33 and 34
a(0,-1,1);
1
$ java NotVerbose 127 -12 27
0
Закуска
Чтобы убедиться, что ваш ответ обнаружен, начните его с заголовка, используя следующий шаблон уценки:
# Language Name, N bytes
где N
размер вашего представления. Если вы улучшите свой счет, вы можете сохранить старые результаты в заголовке, вычеркнув их. Например:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Если вы хотите включить в заголовок несколько чисел (например, потому что ваш результат равен сумме двух файлов или вы хотите перечислить штрафы за флаг интерпретатора отдельно), убедитесь, что фактический результат является последним числом в заголовке:
# Perl, 43 + 2 (-p flag) = 45 bytes
Вы также можете сделать название языка ссылкой, которая затем будет отображаться во фрагменте списка лидеров:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
/* Configuration */
var QUESTION_ID = 98470; // Obtain this from the url
// It will be like https://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 41805; // This should be the user ID of the challenge author.
/* App */
var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page;
function answersUrl(index) {
return "https://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER;
}
function commentUrl(index, answers) {
return "https://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER;
}
function getAnswers() {
jQuery.ajax({
url: answersUrl(answer_page++),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
answers.push.apply(answers, data.items);
answers_hash = [];
answer_ids = [];
data.items.forEach(function(a) {
a.comments = [];
var id = +a.share_link.match(/\d+/);
answer_ids.push(id);
answers_hash[id] = a;
});
if (!data.has_more) more_answers = false;
comment_page = 1;
getComments();
}
});
}
function getComments() {
jQuery.ajax({
url: commentUrl(comment_page++, answer_ids),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
data.items.forEach(function(c) {
if (c.owner.user_id === OVERRIDE_USER)
answers_hash[c.post_id].comments.push(c);
});
if (data.has_more) getComments();
else if (more_answers) getAnswers();
else process();
}
});
}
getAnswers();
var SCORE_REG = /<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;
var OVERRIDE_REG = /^Override\s*header:\s*/i;
function getAuthorName(a) {
return a.owner.display_name;
}
function process() {
var valid = [];
answers.forEach(function(a) {
var body = a.body;
a.comments.forEach(function(c) {
if(OVERRIDE_REG.test(c.body))
body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>';
});
var match = body.match(SCORE_REG);
if (match)
valid.push({
user: getAuthorName(a),
size: +match[2],
language: match[1],
link: a.share_link,
});
});
valid.sort(function (a, b) {
var aB = a.size,
bB = b.size;
return aB - bB
});
var languages = {};
var place = 1;
var lastSize = null;
var lastPlace = 1;
valid.forEach(function (a) {
if (a.size != lastSize)
lastPlace = place;
lastSize = a.size;
++place;
var answer = jQuery("#answer-template").html();
answer = answer.replace("{{PLACE}}", lastPlace + ".")
.replace("{{NAME}}", a.user)
.replace("{{LANGUAGE}}", a.language)
.replace("{{SIZE}}", a.size)
.replace("{{LINK}}", a.link);
answer = jQuery(answer);
jQuery("#answers").append(answer);
var lang = a.language;
if (/<a/.test(lang)) lang = jQuery(lang).text();
languages[lang] = languages[lang] || {lang: a.language, user: a.user, size: a.size, link: a.link};
});
var langs = [];
for (var lang in languages)
if (languages.hasOwnProperty(lang))
langs.push(languages[lang]);
langs.sort(function (a, b) {
if (a.lang > b.lang) return 1;
if (a.lang < b.lang) return -1;
return 0;
});
for (var i = 0; i < langs.length; ++i)
{
var language = jQuery("#language-template").html();
var lang = langs[i];
language = language.replace("{{LANGUAGE}}", lang.lang)
.replace("{{NAME}}", lang.user)
.replace("{{SIZE}}", lang.size)
.replace("{{LINK}}", lang.link);
language = jQuery(language);
jQuery("#languages").append(language);
}
}
body { text-align: left !important}
#answer-list {
padding: 10px;
width: 290px;
float: left;
}
#language-list {
padding: 10px;
width: 290px;
float: left;
}
table thead {
font-weight: bold;
}
table td {
padding: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b">
<div id="answer-list">
<h2>Leaderboard</h2>
<table class="answer-list">
<thead>
<tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr>
</thead>
<tbody id="answers">
</tbody>
</table>
</div>
<div id="language-list">
<h2>Winners by Language</h2>
<table class="language-list">
<thead>
<tr><td>Language</td><td>User</td><td>Score</td></tr>
</thead>
<tbody id="languages">
</tbody>
</table>
</div>
<table style="display: none">
<tbody id="answer-template">
<tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
</tbody>
</table>
<table style="display: none">
<tbody id="language-template">
<tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
</tbody>
</table>
{a,b,c->}
Aww ... dangit, я потерял, прежде чем я начал снова.Ÿʒ³å}g
Баш, 20 байт
очевидный ответ
пример
источник
Perl, 20 байт
Сохраненный 2 байта, используя
grep
как в @ ardnew - х ответ .Bytecount включает 18 байтов кода и
-ap
флагов.Дайте 3 числа на трех отдельных строках:
источник
Python 2,
4743 байтаОтносительно просто, используя
repr
краткую форму Python 2 .Ouput:
источник
-~a
вместоa+1
?JavaScript (ES6),
4645 байт(Моя лучшая нерекурсивная версия была 61 байт.) Редактирование: 1 байт сохранен благодаря @ edc65.
источник
!!match
вместоincludes
.Желе , 7 байт
TryItOnline!
Ввод: начало, конец, поиск
Как?
Приведение по умолчанию целого числа к итерируемой для проверки существования подсписка приводит к десятичному списку (не списку символов), поэтому отрицательные числа имеют ведущее отрицательное значение (например,
-122
->,[-1,2,2]
которое не найдет подсписок[1,2]
), поэтому берется абсолютное значение сначала кажется лучшим решением для гольфа.источник
PowerShell v2 +,
646256 байт-6 байт благодаря маззи
Ввод через аргументы командной строки в виде номера lower_bound upper_bound . Немного дурацкий в нотации, потому что точки с запятой внутри
for
вызывают ошибки разбора, если он не окружен$(...)
для создания блока скрипта. Мы в основном цикл вверх через ,$a
пока мы не попали$b
, используяWhere-Object
(|?{...}
) , чтобы вытащить эти числа, регулярное выражение-match
против$c
. Это инкапсулировано в паранах, мы берем.count
их, и это остается на конвейере, и вывод неявен.Однако, если мы гарантируем, что диапазон будет не более 50 000 элементов, мы можем пропустить цикл и просто использовать оператор диапазона
..
напрямую, для4543 байтов . Так как это не указано в технических требованиях, это недопустимо. Облом.источник
param($c,$a,$b)$(for(;$a-le$b){1|?{$a++-match$c}}).count
param($c,$a,$b)($a..$b|?{$_-match$c}).count
работе с диапазоном -65536..65535 наPowershell 5.1
Вим,
46, 41 байтВвод в следующем формате:
источник
Haskell, 65 байт
import
Губит счет. Пример использования:((-200)#200)12
->24
.источник
Java 7 85 байт
источник
Swift 3,
9693 байтаИзменить 1:
Сохранено 3 байта с использованием сокращенных параметров
источник
Скала, 50 байт
принимает первый ввод карри; Назовите это так:
f("12")(-200,200)
Explantion:
источник
R, 32 байта
Довольно просто:
источник
a=scan();sum(grepl(a,a[2]:a[3]))
либо как аргументы функции:function(a,b,c)sum(grepl(a,b:c))
в этом случае оба эквивалента.C #, 71 байт
Побей мой ответ на Java благодаря лямбдам
источник
(n,s,e)=>s>e?0:((""+s).Contains(n+"")?1:0)+f(n,++s,e);
- это намного корочеРубин 44 байта
Тестовые случаи:
источник
PHP, 62 байта
Довольно прямой подход:
Попробуйте онлайн
источник
<?=count(preg_grep("/$argv[1]/",range($argv[2],$argv[3])));
С,
143135 байтовСпасибо @Kritixi Lithos за помощь в сохранении 8 байтов
Конечно, это можно сделать лучше, но это лучшее, что у меня есть на данный момент. C не обрабатывает строки очень изящно, поэтому, естественно, требуется немало операций.
Ungolfed + программа
источник
int i=l
цикл for и вместо этого инициализировать егоint t=0
таким образом,int t=0,i=l
чтобы сэкономить несколько байтов.b[9],n[9],t;C(N,l,h){for(t=!sprintf(n,"%d",N);l<=h;strstr(b,n)&&++t)sprintf(b,"%d",l++);N=t;}
JavaScript,
4645 байтРекурсивно считать до начала> конца
Изменить: переключиться на тест RegExp, чтобы сохранить байт
источник
PHP,
6863 байтаиспользовать как:
редактировать: 5 байтов сохранено благодаря Титу
источник
strstr($a[2]++,$a[1])>""
вместоstrpos($a[2]++,$a[1])!==false
сохранения 5 байтов.Powershell, 48 байт
Согласно правилу, диапазон может содержать более 50000 элементов. Поэтому мы не можем
..
напрямую использовать оператор диапазона . Спасибо AdmBorkBork .Непосредственная:
Тестовый скрипт:
Выход:
источник
Джапт ,
148 байтПринимает целое число, которое будет найдено как последнее входное значение.
Попробуйте онлайн
объяснение
источник
33
число3
будет считаться появившимся только один раз, а не дважды». Ваш счетчик совпаденийW
будет считаться3
дважды.Ява,
928971 байтТеперь с лямбдами!
Решение старой 89-байтовой функции:
Ура за супер функцию приращения!
источник
int i=l
из цикла for и вместо этого объявить его с помощьюa
like,int a=0,i=l;
чтобы сохранить несколько байтовGolfSharp (не конкурирующий), 41 байт
конкурирующие 45 байтов
источник
I
функцию, чтобы сначала преобразовать элемент в строку перед проверкой, содержит ли он его.Groovy, 48 байтов
источник
Ракетка 91 байт
Ungolfed:
Тестирование:
Выход:
источник
Аксиома байтов 90
Результаты
источник
Mathematica, 70 байт
вход
выход
источник
Clojure, 65 байт
источник
PHP, 56 байт
запустить как трубу Попробуйте онлайн
вход
Код
объяснение
источник
Perl 6 , 32 байта
Попробуйте онлайн!
источник