Program powinien wprowadzić liczbę, początek zakresu i koniec zakresu, oraz wypisać liczbę całkowitą, która pojawia się między początkiem i końcem zakresu, włącznie . Zarówno programy, jak i funkcje są dozwolone.
Przykładowe dane wejściowe
Na przykład:
//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);
Wszystkie powyższe cztery przykłady wejściowe są poprawne i wszystkie oznaczają, że 3
to liczba, o której mowa, 1
jest początkiem zakresu i100
końcem zakresu.
Następnie program powinien wypisać, ile razy 3
pojawia się w przedziale od 1
do 100
włącznie . 3
pojawia się w całkowitych 3
, 13
, 23
, 30
, 31
, 32
, 33
, ..., 93
w sumie 19 razy. Zatem program powinien wyświetlać 19
dane wyjściowe, ponieważ tyle razy 3
pojawia się w zakresie od 1
do 100
.
Zasady
- Zarówno programy, jak i funkcje są dozwolone.
- Wszystkie numery będą liczbami całkowitymi, co oznacza, że nie będzie nie być żadnych
float
s lub double
s.
- Uwaga: szukany numer zawsze będzie w zakresie
0≤x≤127
. Nie będzie żadnych przypadków, gdzie będzie poza tym 0≤x≤127
zakresem.
- Podobnie jak w pierwszym przykładzie, w przypadku as
33
liczba 3
będzie liczona jako pojawiająca się tylko raz , a nie dwa razy.
- Wartości początku i końca zakresu będą pomiędzy
-65536
i 65535
włącznie.
- Wartość początku zakresu nigdy nie przekroczy lub nie przekroczy końca zakresu.
start < end
- Zakres obejmuje również. Na przykład, jeśli wejście było
8 8 10
, zakres będzie, 8≤x≤10
a zatem wyjście będzie wynosić 1.
- Dane wejściowe można pobierać w dowolny ze sposobów pokazanych w przykładach. Dane wejściowe można traktować jako ciąg lub liczbę, w dowolny sposób.
Przypadki testowe
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
Aby upewnić się, że Twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:
# Language Name, N bytes
gdzie N
jest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Jeśli chcesz umieścić w nagłówku wiele liczb (np. Ponieważ twój wynik to suma dwóch plików lub chcesz osobno wymienić kary za flagi tłumacza), upewnij się, że rzeczywisty wynik jest ostatnią liczbą w nagłówku:
# Perl, 43 + 2 (-p flag) = 45 bytes
Możesz także ustawić nazwę języka jako link, który pojawi się we fragmencie tabeli wyników:
# [><>](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 ... cholera, przegrałem zanim zacząłem od nowa.Ÿʒ³å}g
Bash, 20 bajtów
oczywista odpowiedź
przykład
źródło
Perl, 20 bajtów
Zaoszczędzono 2 bajty
grep
jak w użytkownika @ ardnew odpowiedź .Liczba bajtów zawiera 18 bajtów kodu i
-ap
flag.Podaj 3 liczby w trzech osobnych wierszach:
źródło
Python 2,
4743 bajtówStosunkowo prosty, wykorzystując
repr
krótką formę Python 2 .Ouput:
źródło
-~a
zamiasta+1
?JavaScript (ES6),
4645 bajtów(Moja najlepsza nierekurencyjna wersja miała 61 bajtów.) Edycja: Zapisano 1 bajt dzięki @ edc65.
źródło
!!match
zamiastincludes
.Galaretka , 7 bajtów
TryItOnline!
Dane wejściowe: Start, End, ToFind
W jaki sposób?
Domyślne rzutowanie liczby całkowitej na iterowalną dla kontroli istnienia podlisty jest rzutowane na listę dziesiętną (nie listę znaków), więc liczby ujemne mają wiodącą wartość ujemną (np.
-122
->[-1,2,2]
która nie znajdzie podlisty[1,2]
), więc wzięcie najpierw wartość bezwzględna wydaje się najbardziej golfowym rozwiązaniem.źródło
PowerShell v2 +,
646256 bajtów-6 bajtów dzięki mazzy
Wprowadzanie za pomocą argumentów wiersza polecenia o numerze postaci dolny_związany górny_związany . Trochę głupkowaty w notacji, ponieważ średniki wewnątrz
for
powodują błędy analizy, jeśli nie są otoczone w$(...)
celu utworzenia bloku skryptu. My w zasadzie pętli w górę przez$a
aż trafiliśmy$b
, używającWhere-Object
(the|?{...}
), aby wyciągnąć te numery, które regex-match
przeciw$c
. To jest zamknięte w parens, bierzemy to.count
, a to pozostaje w potoku, a wynik jest niejawny.Jeśli jednak gwarantujemy, że zakres nie będzie większy niż 50 000 elementów, możemy pominąć pętlę i po prostu bezpośrednio użyć operatora zakresu
..
, dla4543 bajtów . Ponieważ jednak nie jest to określone w specyfikacji wyzwania, nie jest to ważne. Porażka.źródło
param($c,$a,$b)$(for(;$a-le$b){1|?{$a++-match$c}}).count
param($c,$a,$b)($a..$b|?{$_-match$c}).count
prace z zakresu -65536..65535 naPowershell 5.1
Vim,
46, 41 bajtówDane wejściowe są w tym formacie:
źródło
Haskell, 65 bajtów
import
Niszczy wynik. Przykład użycia:((-200)#200)12
->24
.źródło
Java 7 85 bajtów
źródło
Swift 3,
9693 bajtówEdycja 1:
Zapisano 3 bajty przy użyciu parametrów skróconych
źródło
Scala, 50 bajtów
pobiera pierwsze wejście curry; nazwij to tak:
f("12")(-200,200)
Wyjaśnienie:
źródło
R, 32 bajty
Całkiem proste:
źródło
a=scan();sum(grepl(a,a[2]:a[3]))
lub jako argumenty funkcji:function(a,b,c)sum(grepl(a,b:c))
w tym przypadku oba są równoważne.C #, 71 bajtów
Pokonaj moją odpowiedź Java dzięki lambdas
źródło
(n,s,e)=>s>e?0:((""+s).Contains(n+"")?1:0)+f(n,++s,e);
jest o wiele krótszaRuby 44 bajty
Przypadki testowe:
źródło
PHP, 62 bajty
Całkiem proste podejście:
Wypróbuj online
źródło
<?=count(preg_grep("/$argv[1]/",range($argv[2],$argv[3])));
DO,
143135 bajtówDzięki @Kritixi Lithos za pomoc w oszczędzaniu 8 bajtów
Z pewnością można to zrobić lepiej, ale jest to najlepsze, jakie mam na razie. C nie obsługuje napisów bardzo wdzięcznie, więc naturalnie zajmuje sporo operacji.
Program bez golfa +
źródło
int i=l
pętlę for i zamiast tego zainicjować jąint t=0
,int t=0,i=l
aby zaoszczędzić kilka bajtów.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 bajtówRekurencyjnie licz do początku> końca
Edycja: Przejdź do testu RegExp, aby zapisać bajt
źródło
PHP,
6863 bajtówużyj jak:
edycja: 5 bajtów zapisanych dzięki Titusowi
źródło
strstr($a[2]++,$a[1])>""
zamiaststrpos($a[2]++,$a[1])!==false
zapisuje 5 bajtów.PowerShell, 48 bajtów
Zgodnie z regułą zakres może zawierać ponad 50 000 elementów. Nie możemy więc
..
bezpośrednio korzystać z operatora zasięgu . Dzięki AdmBorkBork .Bezpośredni:
Skrypt testowy:
Wynik:
źródło
Japt ,
148 bajtówPobiera liczbę całkowitą jako ostatnią wartość wejściową.
Wypróbuj online
Wyjaśnienie
źródło
33
, liczba3
będzie liczona jako pojawiająca się tylko raz, a nie dwa razy. ” Twoja liczba wystąpień dlaW
liczy3
dwa razy.Java,
928971 bajtówTeraz z lambdas!
Stare 89-bajtowe rozwiązanie funkcji:
Brawo dla funkcji super przyrostowej!
źródło
int i=l
z pętli for i zamiast tego zadeklarować, żea
chceszint a=0,i=l;
zaoszczędzić kilka bajtówGolfSharp (nie konkuruje), 41 bajtów
konkurujące 45 bajtów
źródło
I
funkcję, aby najpierw przekonwertować element na ciąg znaków, a następnie sprawdzić, czy go zawiera.Groovy, 48 bajtów
źródło
Rakieta 91 bajtów
Nie golfowany:
Testowanie:
Wynik:
źródło
Axiom bytes 90
wyniki
źródło
Mathematica, 70 bajtów
Wejście
wynik
źródło
Clojure, 65 bajtów
źródło
PHP, 56 bajtów
uruchom jako potok Wypróbuj online
Wejście
Kod
Wyjaśnienie
źródło
Perl 6 , 32 bajty
Wypróbuj online!
źródło