El programa debe ingresar el número, el inicio del rango y el final del rango, y mostrar cuántos enteros aparece el número entre el inicio y el final del rango, inclusive . Se permiten tanto programas como funciones.
Entradas de ejemplo
Por ejemplo:
//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);
Los cuatro ejemplos de entrada anteriores son válidos y todos ellos significan que 3es el número en cuestión, 1es el comienzo del rango y 100el final del rango.
Y a continuación, el programa debe ser la salida cuántas veces 3aparece en el rango de 1al 100 incluyente . 3aparece en los números enteros 3, 13, 23, 30, 31, 32, 33, ..., 93en un total de 19 veces. Entonces, el programa debería salir 19como salida porque esa es la cantidad de veces que 3aparece en el rango de 1a 100.
Reglas
- Se permiten tanto programas como funciones.
- Todos los números serán números enteros, lo que significa que habrá no haber ningún
floats o doubles.
- Nota: el número buscado siempre estará en el rango
0≤x≤127. Habrá hay casos en los que será fuera de esta 0≤x≤127gama.
- Como en el primer ejemplo, con el caso como
33, el número 3se contará como aparece solo una vez , no dos veces.
- Los valores del inicio y el final del rango serán entre
-65536e 65535inclusive.
- El valor del inicio del rango nunca excederá o será igual al final del rango.
start < end
- También el rango es inclusivo. Por ejemplo, si la entrada fue
8 8 10, el rango sería 8≤x≤10y, por lo tanto, la salida será 1.
- La entrada se puede tomar de cualquiera de las formas que se muestran en los ejemplos. La entrada puede tomarse como una cadena o como un número, de la forma que desee.
Casos de prueba
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 asegurarse de que su respuesta se muestre, comience con un título, usando la siguiente plantilla de Markdown:
# Language Name, N bytes
¿Dónde Nestá el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Si desea incluir varios números en su encabezado (por ejemplo, porque su puntaje es la suma de dos archivos o desea enumerar las penalizaciones de la bandera del intérprete por separado), asegúrese de que el puntaje real sea el último número en el encabezado:
# Perl, 43 + 2 (-p flag) = 45 bytes
También puede hacer que el nombre del idioma sea un enlace que luego aparecerá en el fragmento de la tabla de clasificación:
# [><>](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, perdí antes de comenzar de nuevo.Ÿʒ³å}gBash, 20 bytes
la respuesta obvia
ejemplo
fuente
Perl, 20 bytes
Se guardaron 2 bytes usando
grepcomo en la respuesta de @ ardnew .Bytecount incluye 18 bytes de código y
-apbanderas.Dé los 3 números en tres líneas separadas:
fuente
Python 2,
4743 BytesRelativamente sencillo, haciendo uso de la forma
reprcorta de Python 2 .Ouput:
fuente
-~alugar dea+1?JavaScript (ES6),
4645 bytes(Mi mejor versión no recursiva fue de 61 bytes). Editar: Guardado 1 byte gracias a @ edc65.
fuente
!!matchen lugar deincludes.Jalea , 7 bytes
TryItOnline!
Entrada: Inicio, Fin, ToFind
¿Cómo?
La conversión predeterminada de un entero a un iterable para la existencia de la sublista verifica la conversión a una lista decimal (no una lista de caracteres), por lo que los números negativos tienen un valor negativo inicial (por ejemplo,
-122->[-1,2,2]que no encontrará una sublista de[1,2]), por lo que El valor absoluto primero parece la solución más golfista.fuente
PowerShell v2 +,
646256 bytes-6 bytes gracias a mazzy
Entrada a través de argumentos de línea de comandos del número de formulario lower_bound upper_bound . Un poco tonto en la notación, debido a los puntos y comas dentro de los
forerrores de análisis que causan si no está rodeado$(...)para crear un bloque de script. Básicamente, hacemos un bucle ascendente$ahasta que golpeamos$b, usandoWhere-Object(the|?{...}) para extraer esos números-matchcontra los que regexamos$c. Eso está encapsulado en parens, tomamos el.countmismo, y eso queda en la tubería y la salida está implícita.Sin embargo, si garantizamos que el rango no será más de 50,000 elementos, podemos omitir el ciclo y simplemente usar el operador de rango
..directamente, para4543 bytes . Sin embargo, como eso no está en las especificaciones del desafío, esto no es válido. Gorrón.fuente
param($c,$a,$b)$(for(;$a-le$b){1|?{$a++-match$c}}).countparam($c,$a,$b)($a..$b|?{$_-match$c}).counttrabajos con rango -65536..65535 enPowershell 5.1Vim,
46, 41 bytesLa entrada está en este formato:
fuente
Haskell, 65 bytes
El
importarruina el marcador. Ejemplo de uso:((-200)#200)12->24.fuente
Java 7 85 bytes
fuente
Swift 3,
9693 bytesEditar 1:
Guardado 3 bytes mediante el uso de parámetros abreviados
fuente
Scala, 50 bytes
toma la primera entrada al curry; llámalo así:
f("12")(-200,200)Explantación
fuente
R, 32 bytes
Bastante sencillo:
fuente
a=scan();sum(grepl(a,a[2]:a[3]))o como argumentos de una función:function(a,b,c)sum(grepl(a,b:c))ambos equivalentes en este caso.C #, 71 bytes
Batir mi respuesta Java gracias a lambdas
fuente
(n,s,e)=>s>e?0:((""+s).Contains(n+"")?1:0)+f(n,++s,e);es camino más cortoRuby 44 bytes
Casos de prueba:
fuente
PHP, 62 bytes
Enfoque bastante directo:
Pruébalo en línea
fuente
<?=count(preg_grep("/$argv[1]/",range($argv[2],$argv[3])));C,
143135 bytesGracias a @Kritixi Lithos por ayudar a ahorrar 8 bytes
Seguramente esto se puede hacer mejor, pero es lo mejor que tengo por ahora. C no maneja las cadenas con mucha gracia, por lo que, naturalmente, requiere bastantes operaciones.
Ungolfed + programa
fuente
int i=ldel bucle for y, en su lugar, inicializarloint t=0como talint t=0,i=lpara guardar algunos 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 bytesCuenta recursivamente hasta el inicio> fin
Editar: cambie a la prueba RegExp para guardar un byte
fuente
PHP,
6863 bytesusar como:
editar: 5 bytes guardados gracias a Titus
fuente
strstr($a[2]++,$a[1])>""en lugar destrpos($a[2]++,$a[1])!==falseguardar 5 bytes.Powershell, 48 bytes
Según la regla, el rango puede contener más de 50,000 elementos. Por lo tanto, no podemos usar el operador de rango
..directamente. Gracias AdmBorkBork .Sencillo:
Script de prueba:
Salida:
fuente
Japt ,
148 bytesToma el entero como el último valor de entrada.
Pruébalo en línea
Explicación
fuente
33, el número3se contará como aparece sólo una vez, no dos veces. " Su ocurrencia de conteo paraWque cuente el3doble.Java,
928971 bytesAhora con lambdas!
Antigua solución de función de 89 bytes:
¡Hurra por la función súper incremental!
fuente
int i=lel bucle for y, en su lugar, declararlo conaint a=0,i=l;GolfSharp (no competidor), 41 bytes
45 bytes competidores
fuente
Ifunción para convertir el elemento a una cadena primero antes de verificar si lo contiene.Groovy, 48 bytes
fuente
Raqueta 91 bytes
Sin golf:
Pruebas:
Salida:
fuente
Axioma bytes 90
resultados
fuente
Mathematica, 70 bytes
entrada
salida
fuente
Clojure, 65 bytes
fuente
PHP, 56 bytes
correr como tubería Pruébalo en línea
Entrada
Código
Explicación
fuente
Perl 6 , 32 bytes
Pruébalo en línea!
fuente