特定の範囲の数値を含む整数の数


19

プログラムは、入力に数は、範囲の開始と終了の間で表示されますどのように多くの整数の数、範囲の開始と範囲の終了、および出力取るべき包括的に。プログラムと機能の両方が許可されます。

入力例

例えば:

//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);

上記の4つの入力例はすべて有効であり、それらはすべて3問題の数値で1あり、範囲の始まりと範囲100の終わりを意味します。

そして、プログラムは、出力が何回必要がある3の範囲で表示されます1への100 包括的3整数に表示されます3132330313233、...、9319回の合計で。だから、プログラムを出力すべき19出力としてそれが何回かあるので、3の範囲で表示されます1まで100

ルール

  • プログラムと機能の両方が許可されます。
  • すべての数字がありますことを意味し、整数になりませんいずれであってもfloatSまたはdoubleS。
  • 注:求められる数は常にの範囲になります0≤x≤127。この範囲外になる場合はありません0≤x≤127
  • 最初の例のように、ケースがの場合33、数3は2 なく1回だけ表示されるとカウントされます。
  • 範囲の開始と終了の値はの間になります-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

ヘッダーに複数の数字を含める場合(たとえば、スコアが2つのファイルの合計であるか、インタープリターフラグペナルティーを個別にリストする場合)、実際のスコアがヘッダーの最後の数字であることを確認します。

# Perl, 43 + 2 (-p flag) = 45 bytes

言語名をリンクにして、リーダーボードスニペットに表示することもできます。

# [><>](http://esolangs.org/wiki/Fish), 121 bytes

回答:


8

05AB1E、6バイト

上限下限数値の形式で入力します。

Ÿvy³åO

説明:

Ÿ       # Inclusive range, [a, ..., b]
 vy     # For each element...
   ³å   # Check if the third input is a substring of the number
     O  # Sum up the results

CP-1252エンコードを使用します。オンラインでお試しください!


4
Groovy {a,b,c->} Awwを選択します...ダンギット、再び始める前に負けました。
魔法のタコUr

このチャレンジに勝ってくれてありがとう!
Kritixi Lithos

@KritixiLithosありがとうございます!:)
アドナン

6バイトの代替:Ÿʒ³å}g
Kevin Cruijssen

9

Bash、20バイト

明らかな答え

seq $2 $3|grep -c $1

$ bash golf 3 1 100
19

6

Perl、20バイト

grep@ ardnew's answerのように使用して2バイトを節約しました。

バイトカウントには、18バイトのコードと-apフラグが含まれます。

$_=grep/@F/,<>..<>

3つの別々の行に3つの数字を入力します。

perl -ape '$_=grep/@F/,<>..<>' <<< "3
1
100"

5

パイソン2、47の 43バイト

比較的簡単で、Python 2のrepr短い形式を使用します。

f=lambda n,a,b:a<b and(`n`in`a`)+f(n,-~a,b)

出力:

f(  3,    1, 100) -> 19
f(  3,    3,  93) -> 19
f( 12, -200, 200) -> 24
f(123,    1,   3) -> 0
f(  3,   33,  34) -> 2
f(  0,   -1,   1) -> 1
f(127,   12,  27) -> 0

なぜあなたはすべてのファンシーであり、-~a代わりに使用する必要がありましたa+1か?
アーティアー

1
@Artyer for fun!
ケード

4

JavaScript(ES6)、46 45バイト

f=(n,s,e)=>s<=e&&!!`${s++}`.match(n)+f(n,s,e)

(私の非再帰バージョンは61バイトでした。)編集:@ edc65のおかげで1バイト保存されました。


!!matchの代わりにincludes
edc65

4

ゼリー、7 バイト

rAẇ@€⁵S

TryItOnline!

入力:開始、終了、ToFind

どうやって?

rAẇ@€⁵S - Main link: Start, End, ToFind
r       - range: [Start, ..., End]
 A      - absolute values
     ⁵  - third input: ToFind
  ẇ@€   - sublist exists in with reversed @rguments for €ach
      S - sum

サブリストの存在チェックのために整数をイテレート可能にデフォルトでキャストすると、10進数リスト(文字リストではない)にキャストされるため、負の数値の先頭には負の値があります(たとえば、-122-> [-1,2,2]はサブリストを見つけられません[1,2])絶対値は、最初に最もゴルフの解のように思えます。


4

PowerShell v2 +、64 62 56バイト

param($c,$a,$b)$(for(;$a-le$b){1|?{$a++-match$c}}).count

mazzyのおかげで-6バイト

番号lower_bound upper_boundの形式のコマンドライン引数を介した入力。スクリプトブロックを作成するためにfor囲まれ$(...)ていない場合、解析エラーの原因となるセミコロンが原因で、表記が少し間抜けになります。基本的に、$aヒットするまで上方向にループし$bWhere-Object(the |?{...})を使用して、正規表現に-match反する数値を引き出し$cます。それは括弧にカプセル化されており、それを取得し.countます。それはパイプラインに残り、出力は暗黙的です。


ただし、範囲が50,000要素を超えないことを保証する場合は、ループをスキップして、範囲演算子を..直接45 45バイト使用できます。ただし、チャレンジ仕様には含まれていないため、これは無効です。残念。

param($c,$a,$b)($a..$b|?{$_-match$c}).count

すばらしいです!50Kの要素情報をありがとう。提案のカップルparam($c,$a,$b)$(for(;$a-le$b){1|?{$a++-match$c}}).count
mazzy

param($c,$a,$b)($a..$b|?{$_-match$c}).count上の範囲-65536..65535と作品Powershell 5.1
mazzy

3

Vimは、46、41のバイト

C<C-r>=r<tab><C-r>")<cr><esc>jC0<esc>:g/<C-r>"/norm G<C-v><C-a>
kd{

入力は次の形式です。

1, 100
3

2

Haskell、65バイト

import Data.List
(s#e)i=sum[1|x<-[s..e],isInfixOf(show i)$show x]

importスコア遺跡。使用例:((-200)#200)12-> 24


使用例べき-200と200との間の出力24 12なぜなら現れる24回
KritixiのLithos

@KritixiLithos:すみません!もちろん、それは単なるコピー&ペースエラーです。
nimi


2

Swift 3、96 93バイト

import Cocoa
func c(n:Int,s:Int,e:Int){print((s...e).filter{"\($0)".contains("\(n)")}.count)}

編集1:

略記パラメーターを使用して3バイトを節約


2

Scala、50バイト

(c:String)=>(_:Int)to(_:Int)count(""+_ contains c)

カリー化された最初の入力を受け取ります。次のように呼び出します:f("12")(-200,200)

外植:

(c:String)=>  //define an anonymous function taking a string parameter
  (_:Int)     //create a range from an anonymous int parameter
  to          //to
  (_:Int)     //another anonymous int parameter
  count(      //and count how many...
   ""+_       //elements converted to a string
   contains c //contain c
  )

2

R、32バイト

とても簡単です:

function(a,b,c)sum(grepl(a,b:c))

1
PPCGへようこそ!いい答えですが、入力がすでに指定されていると仮定することは一般に受け入れられません。答えを修飾するには、次のような標準入力から入力を読み取るかa=scan();sum(grepl(a,a[2]:a[3]))、関数の引数として入力する必要がありますfunction(a,b,c)sum(grepl(a,b:c))
ビリーウォブ

@Billywobありがとう、これを覚えておいてください!それに応じて答えを編集しました。
-Nutle

1

C#、71バイト

ラムダのおかげで私のJavaの答えを打ち負かす

(t,l,u)=>{int d=0;for(;l<=u;)if((l+++"").Contains(t+""))d++;return d;};

Javaにはラムダもあります
Kritixi Lithos

そう私はちょうどそれについて読み始めたが、彼らは:バイトが大きくなるだろうか、私はそれを数えることができないいくつかの定型のものを必要としない
Yodle

臆面もなくは@Graxのjavascriptの答えは盗んだ(n,s,e)=>s>e?0:((""+s).Contains(n+"")?1:0)+f(n,++s,e);道短い
hstde

1

ルビー44バイト

m=->(n,s,f){(s..f).count{|x|x.to_s[/#{n}/]}}

テストケース:

m.(3,1,100)     #=> 19
m.(3,3,93)      #=> 19
m.(12,-200,200) #=> 24
m.(123,1,3)     #=>  0
m.(3,33,34)     #=>  2
m.(0,-1,1)      #=>  1
m.(127,-12,27)  #=>  0


1

C、143 135バイト

8バイトの節約を支援してくれた@Kritixi Lithosに感謝

確かにこれはもっと良くできますが、今のところ私が持っている最高のものです。Cは文字列をあま​​り上品に処理しないため、当然、かなりの数の操作が必要です。

int C(int N,int l,int h){char b[99],n[99];int t=0,i=1;sprintf(n,"%d",N);for(;i<=h;i++){sprintf(b,"%d",i);if(strstr(b,n))++t;}return t;}

Ungolfed +プログラム

#include <string.h>
#include <stdlib.h>
#include <stdio.h>

int C(int N,int l,int h)
{
    char b[99], n[99];
    int t=0,i=1;
    sprintf(n,"%d",N);
    for(;i<=h;i++)
    {
        sprintf(b,"%d",i);
        if(strstr(b,n))
            ++t;
    }
    return t;
}

int main()
{
  printf("%d\n", C(3, 1, 100));
}

int i=lforループからを削除し、代わりにそのint t=0ようなように初期化してint t=0,i=l数バイトを節約できると思います。
クリチキシリトス

これはコンパイルできませんか?C(N、l、h){char b [99]、n [99]; int t = 0、i = l; sprintf(n、 "%d"、N); for(; i <= h; i ++ ){sprintf(b、 "%d"、i); if(strstr(b、n))++ t;} return t;} includeなしでもコンパイルできると思います...
RosLuP

93バイト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;}
-ceilingcat

1

JavaScript、46 45バイト

f=(i,s,e)=>s>e?0:RegExp(i).test(s)+f(i,++s,e)

開始>終了まで再帰的にカウントします

編集:RegExpテストに切り替えてバイトを保存します


1

PHP、 68 63バイト

for($a=$argv;$a[2]<=$a[3];)$o+=strstr($a[2]++,$a[1])>'';echo$o;

次のように使用します:

 php -r "for($a=$argv;$a[2]<=$a[3];)$o+=strstr($a[2]++,$a[1])>'';echo$o;" 3 1 100

編集:タイタスのおかげで5バイト保存


strstr($a[2]++,$a[1])>""strpos($a[2]++,$a[1])!==false5バイトを節約する代わりに。
タイタス

1

Powershell、48バイト

ルールに従って、範囲には50,000個を超える要素を含めることができます。したがって、範囲演算子を..直接使用することはできません。AdmBorkBorkに感謝します

わかりやすい:

param($c,$a,$b)for(;$a-le$b){$i+=$a++-match$c}$i

テストスクリプト:

$f = {

param($c,$a,$b)for(;$a-le$b){$i+=$a++-match$c}$i

}

@(
    ,(19, 3,1,100)
    ,(19, 3,3,93)
    ,(24, 12,-200,200)
    ,(0, 123,1,3)
    ,(2, 3,33,34)
    ,(1, 0,-1,1)
    ,(0, 127,-12,27)
    ,(44175, 0,-65536,65535)
) | % {
    $e,$a = $_
    $r = &$f @a
    "$($e-eq$r): $r"
}

出力:

True: 19
True: 19
True: 24
True: 0
True: 2
True: 1
True: 0
True: 44175

1

Japt14 8バイト

最後の入力値として見つかった整数を取ります。

õV èÈsøW

オンラインで試す


説明

             :Implicit input of integers U=start, V=end & W=number
õV           :Range [U,V]
    È        :Map
     s       :  Convert to string
      øW     :  Contains W?
   è         :Count truthy values

以前のバージョンには説明がないため、それらについてはわかりませんが、現在の6バイトのソリューションは間違っています。このルールを参照してください。「最初の例のように、ケースasの場合33、数3は2回ではなく1回だけカウントされます。」の発生W回数は32回カウントされます。
ケビンクルーッセン

おかげで、@ KevinCruijssenは1か月後に戻ってきて、なぜもっと短い方法があったときのようにそれをやっていたのか疑問に思っていました。私は今それをロールバックしました。
シャギー

同じことが何度か起こりました。私は答えを見て、考えます:これはずっと簡単になり、それを変えています。そして、変更を保存する直前に、チャレンジを誤解していることがわかりました。ところで、私はまだ8バイトのソリューションの説明に興味があります。:)
ケビンクルーイッセン

1
@KevinCruijssen:説明が追加されました。
シャギー

0

Java、92 89 71バイト

ラムダで!

(t,l,u)->{int z=0;for(;l<=u;)if((l+++"").contains(t+""))z++;return z;};

古い89バイト関数ソリューション:

int d(int t,int l,int u){int a=0,i=l;for(;i<=u;)if((i+++"").contains(t+""))a++;return a;}

スーパーインクリメント機能に感謝します!


あなたは削除することができint i=lて、それを宣言し、ループのため、代わりのaようなint a=0,i=l;いくつかのバイトを保存するために
KritixiのLithos

ああ、私は何かを逃したことを知っていました、ありがとう!
ヨドル

1
基本的にこの答えと同じです。
クリティキシリトス

0

GolfSharp(非競合)、41バイト

(w,q,e)=>r(q,1+e-q).w(n=>n.T().I(w)).L();

競合する45バイト

(w,q,e)=>r(q,1+e-q).w(n=>n.T().I(w.T())).L();

1
最後のコミットは8分前であったため、これが競合する回答であるためには、チャレンジが始まる前にこれが機能する必要があります。これを確認できますか?
ケード

そうではない場合、私はそれを非競合に変更する場合、修正されたバグを編集する必要があります。今すぐ変更します(言語を改善するためにチャレンジを使用します)
-downrep_nation

2
8分前のコードコミットIは、要素が含まれているかどうかを確認する前に、最初に要素を文字列に変換するように関数を変更しました。
ケード


0

ラケット91バイト

(for/sum((i(range s(+ 1 e))))(if(string-contains?(number->string i)(number->string d))1 0))

ゴルフをしていない:

(define(f d s e)
  (for/sum ((i (range s (+ 1 e))))
    (if(string-contains?
        (number->string i)
        (number->string d))
       1 0 )))

テスト:

(f 3 1 100)
(f 3 3 93)
(f 12 -200 200)
(f 123 1 3)
(f 3 33 34)
(f 0 -1 1)

出力:

19
19
24
0
2
1

0

公理バイト90

f(y,a,b)==(c:=0;for x in a..b repeat(if position(y::String,x::String,1)~=0 then c:=c+1);c)

結果

(3) -> f(3,1,100)=19,f(3,3,93)=19,f(12,-200,200)=24,f(123,1,3)=0,f(3,33,34)=2
   (3)  [19= 19,19= 19,24= 24,0= 0,2= 2]
                                  Type: Tuple Equation NonNegativeInteger
(4) -> f(0,-1,1)=1, f(127,12,27)=0
   (4)  [1= 1,0= 0]
                                  Type: Tuple Equation NonNegativeInteger

0

Mathematica、70バイト

(w=ToString;t=0;Table[If[StringContainsQ[w@i,w@#1],t++],{i,#2,#3}];t)&

入力

[12、-200,200]

出力

24


0

Clojure、65バイト

#(count(for[i(range %2(inc %3)):when(some(set(str %))(str i))]i))

0

PHP、56バイト

パイプとして実行 オンラインで試す

入力

$argv = [number_to_find, range_start, range_end];

コード

<?=substr_count(join(range(($a=$argv)[1],$a[2])),$a[0]);

説明

#substrcount, counts the aparitions of a subtring in a string
substr_count( 
           join( range(($a=$argv)[1],$a[2])), # String with the range
           $a[0]);                            # The number you are looking for

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.