O programa deve inserir o número, o início do intervalo e o final do intervalo e gerar quantos números inteiros o número aparece entre o início e o final do intervalo, inclusive . Programas e funções são permitidos.
Exemplo de entradas
Por exemplo:
//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);
Todos os quatro exemplos de entrada acima são válidos e todos significam que esse 3
é o número em questão, 1
é o início do intervalo e 100
o fim do intervalo.
E, em seguida, o programa deve saída quantas vezes 3
aparece na faixa de 1
até 100
inclusiva . 3
aparece nos números inteiros 3
, 13
, 23
, 30
, 31
, 32
, 33
, ..., 93
em um total de 19 vezes. Portanto, o programa deve produzir 19
como saída, porque é quantas vezes 3
aparece no intervalo de 1
até 100
.
Regras
- Programas e funções são permitidos.
- Todos os números serão inteiros, o que significa que não vai não ser nenhum
float
s ou double
s.
- Nota: o número procurado estará sempre no intervalo
0≤x≤127
. Haverá há casos em que ele vai estar fora desta 0≤x≤127
gama.
- Como no primeiro exemplo, com o caso como
33
, o número 3
será contado como aparecendo apenas uma vez , não duas.
- Os valores do início e do fim do intervalo serão entre
-65536
e 65535
inclusive.
- O valor do início do intervalo nunca será superior ou igual ao final do intervalo.
start < end
- Também a gama é inclusiva. Por exemplo, se a entrada fosse
8 8 10
, o intervalo seria 8≤x≤10
e, portanto, a saída será 1.
- A entrada pode ser obtida de qualquer uma das maneiras mostradas nos exemplos. A entrada pode ser tomada como uma sequência ou como um número, da maneira que você desejar.
Casos de teste
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
Snack Snippet
Para garantir que sua resposta seja exibida, inicie-a com um título, usando o seguinte modelo de remarcação:
# Language Name, N bytes
onde N
está o tamanho do seu envio. Se você melhorar sua pontuação, poderá manter as pontuações antigas no título, identificando-as. Por exemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Se você quiser incluir vários números no cabeçalho (por exemplo, porque sua pontuação é a soma de dois arquivos ou você deseja listar as penalidades do sinalizador de intérpretes separadamente), verifique se a pontuação real é o último número no cabeçalho:
# Perl, 43 + 2 (-p flag) = 45 bytes
Você também pode transformar o nome do idioma em um link que será exibido no snippet da tabela de classificação:
# [><>](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, eu perdi antes de começar de novo.Ÿʒ³å}g
Bash, 20 bytes
a resposta óbvia
exemplo
fonte
Perl, 20 bytes
Economizou 2 bytes usando
grep
como na resposta de @ ardnew .Bytecount inclui 18 bytes de código e
-ap
sinalizadores.Dê os 3 números em três linhas separadas:
fonte
Python 2,
4743 bytesRelativamente simples, usando o Python 2
repr
forma abreviada .Ouput:
fonte
-~a
vez dea+1
?JavaScript (ES6),
4645 bytes(Minha melhor versão não recursiva foi de 61 bytes.) Editar: salvou 1 byte graças a @ edc65.
fonte
!!match
em vez deincludes
.Geléia , 7 bytes
TryItOnline!
Entrada: Início, Fim, ToFind
Quão?
A conversão padrão de um número inteiro para um iterável para a verificação da existência da sub-lista é convertida em uma lista decimal (não em uma lista de caracteres); portanto, os números negativos têm um valor negativo inicial (por exemplo,
-122
->[-1,2,2]
que não encontrará uma sub-lista[1,2]
), o valor absoluto primeiro parece ser a solução mais eficiente.fonte
PowerShell v2 +,
646256 bytes-6 bytes graças ao mazzy
Entrada via argumentos da linha de comando do número do formulário lower_bound upper_bound . Um pouco pateta na notação, por causa do ponto-e-vírgula dentro dos
for
erros de análise de causa, se não estiver entre eles$(...)
para criar um bloco de script. Basicamente, fazemos um loop ascendente$a
até atingirmos$b
, usandoWhere-Object
(the|?{...}
) para extrair os números-match
contra os quais regex$c
. Isso é encapsulado em parênteses, nós aceitamos o.count
mesmo e é deixado no pipeline e a saída está implícita.Se, no entanto, garantirmos que o intervalo não excederá 50.000 elementos, podemos pular o loop e usar o operador do intervalo
..
diretamente, por4543 bytes . Como isso não está nas especificações do desafio, isso não é válido. Vadio.fonte
param($c,$a,$b)$(for(;$a-le$b){1|?{$a++-match$c}}).count
param($c,$a,$b)($a..$b|?{$_-match$c}).count
trabalhos com intervalo -65536..65535 onPowershell 5.1
Vim,
46, 41 bytesA entrada está neste formato:
fonte
Haskell, 65 bytes
As
import
ruínas a pontuação. Exemplo de uso:((-200)#200)12
->24
.fonte
Java 7 85 bytes
fonte
Swift 3,
9693 bytesEditar 1:
Salva 3 bytes usando parâmetros abreviados
fonte
Scala, 50 bytes
recebe a primeira entrada com curry; chame assim:
f("12")(-200,200)
Explicação:
fonte
R, 32 bytes
Bem direto:
fonte
a=scan();sum(grepl(a,a[2]:a[3]))
ou como argumentos para uma funçãofunction(a,b,c)sum(grepl(a,b:c))
:, ambas equivalentes neste caso.C #, 71 bytes
Bata minha resposta Java graças a lambdas
fonte
(n,s,e)=>s>e?0:((""+s).Contains(n+"")?1:0)+f(n,++s,e);
é muito menorRuby 44 bytes
Casos de teste:
fonte
PHP, 62 bytes
Abordagem bastante direta:
Experimente online
fonte
<?=count(preg_grep("/$argv[1]/",range($argv[2],$argv[3])));
C,
143135 bytesObrigado a @Kritixi Lithos por ajudar a economizar 8 bytes
Certamente isso pode ser feito melhor, mas é o melhor que tenho por enquanto. C não lida com strings muito graciosamente, então, naturalmente, são necessárias algumas operações.
Ungolfed + program
fonte
int i=l
do loop for e, em vez disso, inicializá-loint t=0
como talint t=0,i=l
para economizar alguns bytes.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 bytesConte recursivamente até o início> o fim
Editar: Alterne para o teste RegExp para salvar um byte
fonte
PHP,
6863 bytesuse como:
editar: 5 bytes salvos graças a Titus
fonte
strstr($a[2]++,$a[1])>""
em vez destrpos($a[2]++,$a[1])!==false
salva 5 bytes.Powershell, 48 bytes
De acordo com a regra, o intervalo pode conter mais de 50.000 elementos. Portanto, não podemos usar o operador de intervalo
..
diretamente. Obrigado AdmBorkBork .Direto:
Script de teste:
Resultado:
fonte
Japt ,
148 bytesLeva o número inteiro a ser encontrado como o último valor de entrada.
Experimente online
Explicação
fonte
33
, o número3
será contado como aparecendo apenas uma vez, não duas. " Sua contagem de ocorrências paraW
contaria3
duas vezes.Java,
928971 bytesAgora com lambdas!
Solução antiga de função de 89 bytes:
Viva a função de super incremento!
fonte
int i=l
a partir do loop for e em vez declará-la coma
comoint a=0,i=l;
para salvar alguns bytesGolfSharp (não concorrente), 41 bytes
competindo 45 bytes
fonte
I
função para converter o elemento em uma cadeia de caracteres antes de verificar se ele a contém.Groovy, 48 bytes
fonte
Raquete 91 bytes
Ungolfed:
Teste:
Resultado:
fonte
Bytes de axioma 90
resultados
fonte
Mathematica, 70 bytes
entrada
resultado
fonte
Clojure, 65 bytes
fonte
PHP, 56 bytes
correr como tubo Experimente online
Entrada
Código
Explicação
fonte
Perl 6 , 32 bytes
Experimente online!
fonte