একটি পূর্ণসংখ্যার উপস্থিতি গণনা করুন [বন্ধ]


13

প্রশ্নটির ভিত্তিতে কত ধনাত্মক পূর্ণসংখ্যা <1,000,000 2 সংখ্যাটি ধারণ করে? । আমি পূর্ণসংখ্যা থাকা থেকে শুরু Xকরে Yসমস্ত পূর্ণসংখ্যার গণনা করার সৃজনশীল সমাধানের সন্ধান করছি ZZ0 থেকে হতে পারে Y

প্রতিটি প্রাপ্ত পূর্ণসংখ্যার শুধুমাত্র একবার গণনা করা হয়, এমনকি পূর্ণসংখ্যার Zপ্রায়শই প্রদর্শিত হয়। উদাহরণ স্বরূপ:

Z = 2
123 counts 1
22222 also counts 1

আমি জাভাতে লেখা একটি খুব সাধারণ অ্যালগরিদম দিয়ে শুরু করব (কারণ এটি সবার কাছে প্রিয়):

public class Count {
    public static void main(String[] args) {
        int count = 0;
        for (int i = Integer.parseInt(args[0]); i <= Integer.parseInt(args[1]); i++) {
            if (Integer.toString(i).contains(args[2])) {
                count++;
            }
        }
        System.out.println(count);
    }
}

আপনি যদি এটি দিয়ে চালান

java -jar Count.jar 0 1000000 2

আপনি ফলাফল হিসাবে এটি পেতে:

468559

কারণ এই সমস্যাটি সমাধান করা কঠিন নয় এটি কেবল একটি । ২৮ শে ফেব্রুয়ারির পোস্ট পোস্ট করা সর্বাধিক উত্সাহিত উত্তর!


এটি আপনার পোস্ট থেকে সম্পূর্ণ পরিষ্কার নয়, তবে আমার ধারণা জেড 0 এবং ইনফের মধ্যে থাকতে পারে? নাকি মাত্র 0 থেকে 9 এর মধ্যে?
মিমমবস

জেড 0 এবং Y এর মধ্যে হতে পারে It এটি বোঝা যায় না যে জেড Y এর চেয়ে বড় হতে পারে
ওবল টবল

@ ওবলটিব্ল আপনি কি জেড> ওয়াই মামলাটি স্পষ্টভাবে বাদ দিতে চান? সেক্ষেত্রে কেবল প্রত্যাশিত আউটপুট 0 হবে না কেন?
ক্রুঙ্কার

@ ক্রંચার আমি কিছু মনে করি না! তবে এটি আমার কাছে অল্প অল্প অযোগ্য বলে মনে হয় ;-)
ওবাল টাবল

এর অর্থ কি এটি Nহতে পারে 123এবং এটি কেবল তখনই মিলবে যদি স্ট্রিংিং 123 উপস্থিত থাকে?
পপুলাস

উত্তর:


26

বাশ (20)

seq $1 $2|grep -c $3

ব্যবহার

$ bash count.sh 0 1000000 2
468559

10
কলটি প্রোগ্রামের চেয়ে বেশি দীর্ঘ হলে এটি মজাদার ;-)
ওবল টবল

11

Funciton

যথারীতি, যেহেতু স্ট্যাকএক্সচেঞ্জের সাথে যুক্ত রেখার উচ্চতা লাইনগুলি বিচ্ছিন্ন করে, তাই এটি $('pre').css('line-height',1)ঠিক করতে আপনার ব্রাউজার কনসোলটিতে চলমান বিবেচনা করুন ।

আমার অন্যান্য ফানসিটনের উত্তরগুলির বিপরীতে, এটি কোনও ফাংশন ঘোষণা ব্যবহার করে না। এটি কেবল একটি প্রোগ্রাম। এটি ল্যাম্বডা এক্সপ্রেশন ব্যবহার করে, যদিও - একটি বৈশিষ্ট্য যা আমি ডিসেম্বর মাসে ফানসিটনে যুক্ত করেছি :)

ফাঁকা স্থান (যেমন x y z) দ্বারা পৃথক তিনটি দশমিক পূর্ণসংখ্যার (নেতিবাচক হতে পারে) হিসাবে ইনপুটটি প্রত্যাশা করে । আসলে, zযে কোনও স্ট্রিং হতে পারে; উদাহরণস্বরূপ, বিরতিতে নেতিবাচক সংখ্যার গণনা করা কেবল বিয়োগ চিহ্ন ( , U + 2212) হতে পারে :)

           ┌───╖
     ┌───┬─┤ ♯ ╟──────────┐
     │   │ ╘═══╝ ╔════╗ ┌─┴─╖             ┌────╖ ╔═══╗
   ┌─┴─╖ └────┐  ║ 21 ║ │ × ╟─────────────┤ >> ╟─╢   ║
 ┌─┤ ʃ ╟───┐  │  ╚══╤═╝ ╘═╤═╝             ╘═╤══╝ ╚═══╝
 │ ╘═╤═╝   │  └──┐  └─────┘   ┌───────────┐ │
 │ ╔═╧═╗ ┌─┴─╖ ┌─┴─╖ ╔════╗ ┌─┴─╖   ┌───╖ ├─┴────────┐
 │ ║   ╟─┤ · ╟─┤ ʘ ╟─╢ 32 ╟─┤ · ╟───┤ ʘ ╟─┘          │
 │ ╚═══╝ ╘═╤═╝ ╘═══╝ ╚════╝ ╘═╤═╝   ╘═╤═╝ ┌─────┐    │
 │         └───────┐  ╔═══╗ ┌─┴─╖     │ ┌─┴─╖   │    │
 │ ┌───────────┐   └──╢ 0 ╟─┤ ʃ ╟─┐   │ │ ♯ ║   │    │
 │ │   ┌───╖ ┌─┴─╖    ╚═══╝ ╘═╤═╝ │   │ ╘═╤═╝ ┌─┴─╖  │
 │ │ ┌─┤ ♯ ╟─┤   ╟─┬─┐ ╔════╗ │ ┌─┴─╖ │   │ ┌─┤ × ║  │
 │ │ │ ╘═══╝ └─┬─╜ └─┘ ║ −1 ║ └─┤ · ╟─┴───┘ │ ╘═╤═╝  │
 │ │ │    ┌────┴────┐  ╚══╤═╝   ╘═╤═╝       │ ╔═╧══╗ │
 │ │ │    │ ┌───╖ ┌─┴─╖ ┌─┴─╖ ┌───┴─────╖   │ ║ 21 ║ │
 │ │ │    └─┤ ♯ ╟─┤ ? ╟─┤ = ║ │ str→int ║   │ ╚════╝ │
 │ │ │      ╘═══╝ ╘═╤═╝ ╘═╤═╝ ╘═╤═══════╝   │ ┌────╖ │
 │ │ │      ╔═══╗ ┌─┴─╖   └─┐ ┌─┴─╖         └─┤ >> ╟─┘
 │ │ │      ║ 0 ╟─┤ ? ╟─┐   └─┤ · ╟───┐       ╘═╤══╝
 │ │ │      ╚═══╝ ╘═╤═╝ └─┐   ╘═╤═╝   └───┐   ┌─┴─╖
 │ │ │            ┌─┴─╖   └─┐ ┌─┴─╖       └───┤ ʘ ║
 │ │ └────────────┤ · ╟─┐   └─┤ ≤ ║           ╘═╤═╝
 │ │              ╘═╤═╝ │     ╘═╤═╝ ┌─────────╖ │
 │ │        ╔═══╗ ╔═╧═╕ │       └─┬─┤ int→str ╟─┘
 │ │        ║ 0 ╟─╢   ├─┤         │ ╘═════════╝
 │ │        ╚═══╝ ╚═╤═╛ └─────────┘
 │ └────────────────┴─┐              │
 │    ┌─────────╖   ┌─┴─╖ ┌─┐   ┌────┴────╖
 └────┤ str→int ╟───┤   ╟─┴─┘   │ int→str ║
      ╘═════════╝   └─┬─╜       ╘════╤════╝
                      └──────────────┘

1
যে বেশ শান্ত! আপনি নিজের তৈরি একটি ভাষা ব্যবহার করে
pcnThird

2
@ পিসিএনটিহির্ড: আমার মনে হয় টিমভি তার সমস্ত সময় হয় গল্ফিংয়ে বা গল্ফ করার জন্য ভাষা তৈরি করতে ব্যয় করে (এছাড়াও স্লিপিংও দেখুন)!
গাবে

10

সি শার্প

public class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine(Enumerable.Range(Convert.ToInt32(args[0]), (Convert.ToInt32(args[1]) + 1) - Convert.ToInt32(args[0])).Count(x => x.ToString().Contains(args[2])));
    }
}

উদাহরণ

count.exe 0 1000000 2
468559

চতুর সমাধান! আমি এটি পছন্দ করি যে আপনি এটি লুপ ছাড়াই করেছেন।
ওবব টবল

একটি দৃশ্যমান লুপ ছাড়াই @ ওব্লটব্বল
জাস্টিন


1
এটি একটি বাগ আছে, .Rangeগ্রহণ করে (int start, int count), না (start, end)। আমি সর্বদা নিজেকে এই ফাঁদে পড়ে যাব :)
গ্রোজে

এটি দ্রুত নোটপ্যাডে ছুঁড়ে ফেলার জন্য আমাকে সঠিকভাবে সেবা করে ... আমি কোডটি টুইট করেছি তাই এখন এটি সঠিক!
মো ডি

5

এপিএল (২৯)

{+/∨/¨(⍕⍺)∘⍷¨⍕¨⊃{⍺+0,⍳⍵-⍺}/⍵}

এটি একটি ফাংশন যা Zবাম আর্গুমেন্ট এবং বিরতিটিকে [X,Y]ডান আর্গুমেন্ট হিসাবে গ্রহণ করে:

      2 {+/∨/¨(⍕⍺)∘⍷¨⍕¨⊃{⍺+0,⍳⍵-⍺}/⍵} 0 1e6
468559
      0 {+/∨/¨(⍕⍺)∘⍷¨⍕¨⊃{⍺+0,⍳⍵-⍺}/⍵} 0 1e6
402131
      42 {+/∨/¨(⍕⍺)∘⍷¨⍕¨⊃{⍺+0,⍳⍵-⍺}/⍵} 0 1e6
49401

সত্যিই পরিষ্কার নয় ... তবে সত্যিই দুর্দান্ত!
ওব্ল টবল

4

পাইথন 2.7

গতির প্রয়োজন

ব্যাখ্যা

এখানে চিত্র বর্ণনা লিখুন

বাস্তবায়ন

def Count(lo,hi,key):
    if hi == 0: return 0
    # Count(lo,hi,key) = Count(0,hi,key) - Count(0,lo - 1,key)
    if lo != 0: return Count(0, hi, key) - Count(0, lo - 1, key)
    # Calculate no of digits in the number to search
    # LOG10(hi) may be a descent trick but because of float approximation
    # this would not be reliable
    n = len(str(hi)) - 1
    # find the most significant digit
    a_n = hi/10**n
    if a_n < key:
        count = a_n*(10**n - 9**n)
    elif a_n > key:
        count = (a_n - 1)*(10**n - 9**n) + 10**n
    else:
        count = a_n*(10**n - 9**n) + 1
    if hi % 10**n != 0:
        if a_n != key:
            return count + Count(0, hi%10**n, key)
        else:
            return count + hi%10**n
    else:
        return count

ডেমো

In [2]: %timeit Count(0,123456789987654321,2)
100000 loops, best of 3: 13.2 us per loop

তুলনা

@Dennis

$ \time -f%e bash count.sh 0 1234567 2
585029
11.45

@arshajii

In [6]: %timeit count(0,1234567,2)
1 loops, best of 3: 550 ms per loop

এটি অবশ্যই অনেক দ্রুত, তবে এটি প্রশ্নের প্রয়োজনীয়তা পূরণ করে না। keyকোনো হতে পারে পূর্ণসংখ্যা , না অঙ্ক মধ্যে loএবং hi
ডেনিস

গাণিতিক সমাধান এখনও রয়েছে, যদিও এটি আরও দীর্ঘতর হবে ...
রেড সতর্কতা

3

পাইথন 2.7

নিয়মিত এক্সপ্রেশন ব্যবহার করে একটি সমাধান:

>>> from re import findall as f
>>> count=lambda x,y,z:len(f('\d*%d\d*'%z,str(range(x,y+1))))
>>>
>>> count(0,1000000,2)
468559

আপনি এটি করে re.findallওয়ান-লাইনারে ব্যবহার করতে পারেন__import__('re').findall('\d...
সাইমনটি

3

বাশ - 32 31 17 X, Y এবং Z এর 14 টি অক্ষর + দৈর্ঘ্য

প্রস্তাব দেওয়ার জন্য ডিভনুলকে ধন্যবাদ seq!

seq [X] [Y]|grep -c [Z]

যেমন এক্স = 100, ওয়াই = 200, জেড = 20

$ seq 100 200|grep -c 20
2

যেমন এক্স = 100, ওয়াই = 200, জেড = 10

$ seq 100 200|grep -c 10
11

যেমন এক্স = 0, ওয়াই = 1000000, জেড = 2

$ seq 0 1000000|grep -c 2
468559

সুন্দর এবং পরিষ্কার এক!
ওবব টবল

echoআপনি যখন seq4 অক্ষর দ্বারা দৈর্ঘ্য কমিয়ে দৈর্ঘ্য হ্রাস করতে পারবেন তখন কেন ব্যবহার করবেন ? (কমান্ডের দৈর্ঘ্যের জন্য 1, কোঁকড়ানো ধনুর্বন্ধনী বাদ দিতে সক্ষম হওয়ার জন্য 2 এবং ..একটি একক স্থানের পরিবর্তে 1 )
ডিভনল

@ দেবনুল - আপনাকে ধন্যবাদ, এবং এ থেকে মুক্তিও পেতে পারে xargsএবং wc- এবং এটিও আরও দ্রুত গতিতে চলে!

3

পিএইচপি

আসল কিছুই নয়, কেবল এখানে আমার প্রথম পোস্ট উদযাপন করছি।

<?php

    $x = $argv[1];
    $y = $argv[2];
    $z = $argv[3];
    $count = 0;

    do
    {
        if (!(strpos($x, $z) === false))
            $count++;
        $x++;
    } while ($x <= $y);

    echo $count;

?>

ইনপুট

php script.php 0 1000000 2

আউটপুট

468559


2

চুনি

এটি হ্রাস ব্যবহার করার জন্য একটি দুর্দান্ত উদাহরণ!

puts (ARGV[0]..ARGV[1]).reduce(0) { |c, n| n.to_s.include?(ARGV[2].to_s) ? c + 1 : c }

ইনপুট:

ruby script.rb 0 1000000 2

আউটপুট:

468559

2

পাইথন গল্ফ - 61

f=lambda x,y,z:len([i for i in range(x,y)if str(z)in str(i)])

পাইথন নন-গল্ফ

def f(x, y, z):
    c = 0
    for i in range(x, y):
        c += str(z) in str(i)
    return c

2

Java8

নতুন স্ট্রিম স্টাফ ব্যবহার করে, যদি আপনি বাধ্যতামূলক জাভা ফ্রেমওয়ার্ক স্টাফটিকে উপেক্ষা করেন তবে এটি মূলত একটি লাইনারে পরিণত হয়:

import java.util.stream.IntStream;
public class A{
  public static void main(String[] args){
    System.out.println(IntStream.rangeClosed(Integer.parseInt(args[0], Integer.parseInt(args[1])).filter(x -> ((Integer)x).toString().contains(args[2])).count());
  }
}

এটি এখানে চালানো যেতে পারে , যদিও আমাকে মানগুলি হার্ডকোড করতে হয়েছিল।


সত্যিই আকর্ষণীয় জাভা সমাধান
ওবাল টবল

2

এফ #

এই সমাধানটি IndexOfস্ট্রিংটি অনুসন্ধান করতে ব্যবহার করে, তবে ফলাফলটি যদি পাওয়া যায় তবে 1 তে রূপান্তর করতে অল্প সংখ্যক ফিডলিং এবং যদি খুঁজে পাওয়া না যায় তবে 0 এর ফলাফলটি যোগ করে:

let count x y (z : string) = 
    [ x .. y ] |> Seq.sumBy(fun n -> min 1 (n.ToString().IndexOf z + 1))

এবং এটিকে এভাবে বলা যেতে পারে:

count 0 1000000 "2" // 468559

2

নিয়মিত এক্সপ্রেশন

নিম্নলিখিতটিতে 49 এর 1 এর সংখ্যা গণনা করা হবে

#!/bin/bash

echo "12313451231241241111111111111111111111111111111111111"  |\  
sed "s/[^1]//g;s/11111/5/g;s/1111/4/g;s/111/3/g;s/11/2/g;s/555555555/45/g;s/55555555/40/g;s/5555555/35/g;s/555555/30/g;s/55555/25/g;s/5555/20/g;s/555/15/g;s/55/10/g;s/54/9/g;s/53/8/g;s/52/7/g;s/51/6/g;s/50/5
/g;s/40/4/g;s/30/3/g;s/20/2/g;s/10/1/g"

2

আর 23 25 27টুকিটাকি কাজ

কাজের জন্য সঠিক সরঞ্জামটি পান। আর গ্রেপ এর সহজ ব্যবহার, অভিনব কিছু না।

এটি এটিই করে: ভেক্টর পর্যন্ত grepসমস্ত উদাহরণগুলি ব্যবহার 2না করে ফলাফলের সংখ্যা গণনা করে ।010e6length

length(grep(2,0:100000,value=TRUE))

length(grep(2,0:10e6))

ফলাফল: [1] 468559


অফকোর্স আপনি কোনও ফাংশন লিখতে পারেন যা সংখ্যাগুলিকে ইনপুট হিসাবে গ্রহণ করে, যেমন এটি উদাহরণে প্রদর্শিত হয়।

count = function(x=0, y=1000000, z=2){
  length(grep(z,x:y))
}

এখন আপনি countx, y এবং z এর সাথে কল করতে পারেন , যদি আনসেট না করা হয় (এটি ডিফল্ট অনুসারে), x, y এবং z এর মান যথাক্রমে 0, 1000000 এবং 2 হয়। কিছু উদাহরণ:

count()
[1] 468559

অথবা

count(20, 222, 2)
[1] 59

অথবা

count(0, 100, 10)
[1] 2

কিছু এখানে সময় গুরুত্বপূর্ণ বলে মনে করেন, আর এই ফাংশনটি ব্যবহার করে প্রায় 1 সেকেন্ড সময় লাগে।

system.time(count())
user  system elapsed 
0.979   0.003   0.981

সম্ভবত এটি খুব সংক্ষিপ্ত ;-)
ওবল টবল

ঠিক আছে, এটি যাইহোক কোড-গল্ফ নয় :) আমি আশ্চর্য হই: প্রোগ্রামটি কী দেখায় যদি নম্বরগুলি ইনপুট হিসাবে নেওয়া হয় (সেগুলি হার্ডকডিংয়ের চেয়ে)?
টিমউই

অকল্পনীয়;)
কাজিনকোচেন

1

জাভাস্ক্রিপ্ট (ES6), 63

f=(i,j,n)=>{for(c=0;i<=j;!~(''+i++).indexOf(n)?0:c++);return c}

ব্যবহার:

f(0, 1e6, 2)
> 468559

আন golfed:

f = (i,j,n) => {
  for(
    // Initialize the counter.
    c=0;
    // Iterate through all integers.
    i<=j;
    // Convert current number into string then increment it.
    // Check if the digit appears into the current number.
    !~(''+i++).indexOf(n)
      // Occurence not found.
      ? 0
      // Occurence found.
      // Add 1 to the counter.
      : c++
  );
  return c
}

1

চুনি

মূলত আমি নিলাম পাবলো এর উত্তর এবং আধা-গল্ফযুক্ত (38 টি অক্ষর যদি আপনি অপ্রয়োজনীয় শ্বেত স্পেস বাদ দেন) এটি ব্যবহারের একটি অতুলনীয় উদাহরণে ফেলেছি select

এটি (x .. y)ধারণ করে এমন প্রতিটি পরিসীমা নির্বাচন করেz । এই মধ্যবর্তী ফলাফলটি দুর্ভাগ্যক্রমে একটি অ্যারেতে সংরক্ষিত রয়েছে, যার আকারটি পরে ফিরে আসে is

x,y,z = $*
p (x..y).select{ |i| i[z] }.size

এটি সিনট্যাক্টিক্যাল এবং সিমান্টিকভাবে উভয়ই বেশ ঝরঝরে দেখাচ্ছে, যদিও i[z]অংশটি আসলেই বোধগম্য নয়।

এটি কাজ করে কারণ xএবং yপ্রকৃতপক্ষে সংখ্যাগুলি নয় স্ট্রিংগুলি! সুতরাং প্রতিটি iএছাড়াও একটি স্ট্রিং হয় এবং i[z]অবশ্যই স্ট্রিংটি zঅন্তর্ভুক্ত রয়েছে কিনা তা পরীক্ষা করে দেখায় i

$ ruby count-digits.rb 100 200 20
2
$ ruby count-digits.rb 0 1000000 2
468559

1

পাইথন 2.7, 70 লক্ষণ

f = lambda x,y,z: sum(map(lambda x: str(z) in str(x), range(0, y+1)))

>>> f(0, 1000000, 2)
468559

সংক্ষিপ্ত, 65 চিহ্ন

g = lambda x, y, z: sum(str(z) in str(i) for i in range(0, y+1))
>>> g(0, 1000000, 2)
468559

আমি মনে করি না range(0,y+1)যদি range(y+1)একই জিনিস করে তবে আপনার দরকার need এছাড়াও, আপনি যদি গল্ফ করছেন তবে আপনি বেশিরভাগ স্থান সরিয়ে ফেলতে পারেন ...
সিমোনটি

1

রুবির ব্যবহার Enumerable#grep:

start, stop, target = $*
p (start..stop).grep(Regexp.new target).size

1

টি-এসকিউএল

আমি ভেরিয়েবল অনুমান করতে পারেন @X, @Yএবং @Zপাওয়া যায়:

একটি (নির্বিচারে বৃহত;) বিদ্যমান সংখ্যার সারণী সহ - 65

select count(*)from n where n>=@X and n<=@Y and n like '%'+@Z+'%'

একটি পুনরাবৃত্ত সিটিই সহ - 127

with n(n)as(select @X union all select n+1 from n where n<@Y)select count(*)from n where n like'%'+@Z+'%'option(MAXRECURSION 0)

যদি ভেরিয়েবলগুলি স্পষ্টভাবে সংজ্ঞায়িত করা দরকার:

উভয় উত্তরে 58 যোগ করুন - নম্বর সারণী: 123, পুনরাবৃত্ত সিটিই: 185

declare @X int=0;declare @Y int=100;declare @Z varchar(30)='2';

পুনরাবৃত্ত সিটিই কত স্মৃতি ব্যবহার করতে পারে তা আমার কোনও ধারণা নেই তবে এটি অবশ্যই কোনও গতি প্রতিযোগিতা জিততে পারে না। 0 থেকে 1000000 এ 2 অনুসন্ধানের উদাহরণটি আমার সিস্টেমে 8 সেকেন্ড সময় নেয়।

যদি কেউ এটির সাথে খেলতে চায় তবে এখানে একটি এসকিউএল ফিডল রয়েছে । 1000000 ক্যোয়ারি চালাতে 30+ সেকেন্ড সময় নেয়।


দ্রুত নয় তবে খুব সৃজনশীল!
ওবাল টবল

1

Rebol

; version 1 (simple loop counting)

count: func [x [integer!] y [integer!] z [integer!] /local total] [
    total: 0
    for n x y 1 [if found? find to-string n z [++ total]]
    total
]


; version 2 (build series/list and get length)

count: func [x [integer!] y [integer!] z [integer!]] [
    length? collect [for n x y 1 [if find to-string n z [keep true]]]
]

রেবোল কনসোল (আরপিএল) এর ব্যবহারের উদাহরণ:

>> count 0 1000000 2
== 468559

1

শক্তির উৎস

দুটি সমাধান, উভয় 40 37 অক্ষর।

পাওয়ারশেলের সমস্ত সংস্করণের জন্য:

$a,$b,$c=$args;($a..$b-match$c).count

পাওয়ারশেল ভি 3 এবং তার জন্য slsউপনাম রয়েছে Select-String। এটির জন্য @অ্যারে জোর করার প্রয়োজন যদি কেবলমাত্র একটি মান পাইপলাইনের মাধ্যমে তৈরি করে।

$a,$b,$c=$args;@($a..$b|sls $c).count

1

দল

@setLocal enableDelayedExpansion&@set a=0&@for /L %%a in (%1,1,%2) do @set b=%%a&@if "!b:%3=!" NEQ "!b!" @set/aa+=1
@echo !a!

H:\uprof>count 0 1000000 2
468559

H:\uprof>count 1 2 3
0

কিছুটা বেশি পঠনযোগ্য -

@setLocal enableDelayedExpansion
@set a=0
@for /L %%a in (%1,1,%2) do (
    @set b=%%a
    @if "!b:%3=!" NEQ "!b!" @set/aa+=1
)
@echo !a!

সুন্দর এবং সহজ। !b!তৃতীয় ব্যবহারকারী ইনপুট, %3( !b:%3=!) ছাড়া ভেরিয়েবলটি নিজের মতো একই কিনা তা পরীক্ষা করতে স্ট্রিং ম্যানিপুলেশন ব্যবহার করে ।


1

ম্যাথামেটিকাল

প্রথম উপায়: স্ট্রিং

x, y, zস্ট্রিংগুলিতে রূপান্তরিত হয়। যদি একটি স্ট্রিং-পূর্ণসংখ্যা মুক্ত না zহয় তবে এটি গণনা করা হয়।

f[{x_,y_},z_] :=Length[Select[ToString/@Range[Max[x, z], y], !StringFreeQ[#, ToString@z] &]]

উদাহরণ

f[{22, 1000}, 23]
f[{0, 10^6}, 2]

20
468559


দ্বিতীয় উপায়: সংখ্যাগুলির তালিকা

g[{x_,y_},z_]:=(t=Sequence@@ IntegerDigits@z;Length@Cases[IntegerDigits@Range[190], 
{s___,t,e___}])

উদাহরণ

g[{22, 1000}, 23]
g[{0, 10^6}, 2]

20
468559


ম্যাথমেটিকা ​​সর্বদা আকর্ষণীয়, এমনকি সাধারণ সমস্যার
জন্যও

1

GolfScript

আমি আমার গল্ফস্ক্রিপ্ট দক্ষতা উন্নত করার চেষ্টা করছি তাই আমি ভেবেছিলাম এই প্রশ্নটি দিয়ে এটিকে শট দেব। আমি এখানে যা এলাম তা এখানে:

`@@0\{.3$>}{.`4$?-1>@+\(}while@;;\;

এটি এভাবে ভেঙে যেতে পারে:

0 1000000 2    # parameters

`@@            # convert Z to string and put at bottom of stack
0\             # init counter and swap
{.3$>}         # loop condition: Y > X
{              # loop body
  .`           # convert to string
  4$?          # search for substring
  -1>@+        # if found add to counter
  \(           # decrement Y
}              # end loop body
while          # perform loop
@;;\;          # cleanup

যদিও এটি গল্ফস্ক্রিপ্ট, লক্ষ্য অনুসারে এটিকে কমপ্যাক্টের চেয়ে তুলনামূলকভাবে দক্ষ করার চেষ্টা করার চেয়ে আরও বেশি ছিল, সুতরাং আমি নিশ্চিত যে কেউ উন্নত হতে পারে এমন বিভিন্ন উপায়ে নির্দেশ করতে পারে।

বিক্ষোভ : নোট করুন যে আমি ডেমোতে Y কমিয়েছি যাতে এটি <5 সেকেন্ডের মধ্যে শেষ হতে পারে।


1

পিএইচপি - 112

কোনও দৃশ্যমান লুপ নেই, তবে স্মৃতিতে কিছুটা ভারী!

<?=count(array_filter(range($argv[1],$argv[2]),function($i)use($argv){return strpos($i,$argv[3].'')!==false;}));

ব্যবহার php script.php 0 1000000 2


1

ECMAScript 3 থেকে 6

(জাভাস্ক্রিপ্ট, জেএসক্রিপ্ট, ইত্যাদি)

রিজেক্স ব্যবহার করে:

function f(x,y,z,r){for(r=0,z=RegExp(z);x<y;r+=+z.test(''+x++));return r}

ভাঙ্গন:

function f(x,y,z,r){        // note argument `r`, eliminating the need for `var `
  for( r=0, z=RegExp(z)     // omitting `new` since ES will add it if omitted
     ; x<y                  // 
     ; r+=+z.test(''+x++)   // `x++` == post increment
                            // `''+Number` == convert Number to string
                            // `test` gives true | false
                            // `+Boolean` converts boolean to 1 | 0
                            // `r+=Number` incrementing r (were Number is always 1 or 0)
     );                     // no body thus semicolon is mandatory!
  return r;                 // returning r
}

সূচিপত্র ব্যবহার:

function f(x,y,z,r){for(r=0;x<y;r+=+!!~(''+x++).indexOf(z));return r}

ভাঙ্গন:

function f(x,y,z,r){                // note argument `r`, eliminating the need for `var `
  for( r=0                          // omitting `new` since ES will add it if omitted
     ; x<y                          // 
     ; r+=+!!~(''+x++).indexOf(z)   // `x++` == post increment
                                    // `''+Number` == convert Number to string
                                    // `indexOf` returns index or `-1` when not found
                                    // `!!~ indexOf` converts sentinel value to boolean
                                    // `+Boolean` converts boolean to 1 | 0
                                    // `r+=Number` incrementing r (were Number is 1 or 0)
     );                             // no body thus semicolon is mandatory!
  return r;                         // returning r
}

এই ফাংশন-বডিটি ফ্লোরেন্টের চেয়ে কম কম, সুতরাং ES6 =>ফাংশন স্বরলিপি ব্যবহারের সময় মোট 62 চর হবে

উদাহরণ কল: f(0,1e6,2)
উদাহরণ ব্যবহার:alert( f(0,1e6,2) );

জেএসফিডেল এখানে

PS: উপরে উভয় ফাংশন তাদের স্থানীয় পরিবর্তনশীল ফিরে r
সুতরাং rবিশ্বব্যাপী স্কোপে ফলাফল পরিবর্তনশীল ফাঁস করার সময় , কেউ আবার 10 টি অক্ষর সংরক্ষণ করতে পারে:

function f(x,y,z){for(r=0;i<=j;r+=+!!~(''+i++).indexOf(z));}

উদাহরণ ব্যবহার: alert( f(0,1e6,2)||r );


1

ডেলফি - 120

আমার স্বাদ জন্য বিট, আমি কিছু পেতে পারি কিনা তা দেখতে।

var x,y,z,i,c:int16;begin readLn(x,y,z);for i:=x to y do if inttostr(i).contains(inttostr(z))then inc(c);writeln(c);end.

দৈর্ঘ্যের জন্য কিছু মনে করবেন না, আমি একটি
ডেল্ফি

পি: @OblTobl গ্রেট, কিন্তু তার এত মজা এটা সংক্ষিপ্ত করা চেষ্টা
Teun প্রন্ক

1

পাইথন 2.7 - 50 টি অক্ষর

বিদ্যমান পাইথন উত্তরগুলিতে সঞ্চয় করার বিট।

lambda x,y,z:sum(1for n in range(y-x)if`z+x`in`n`)

নিম্নলিখিত কৌশলগুলি ব্যবহার করে:

  • যোগফল লেনের বিপরীতে একটি জেনারেটরে প্রয়োগ করা যেতে পারে, সুতরাং লেনের পরিবর্তে ([n ...]) যোগফল (1 ...) ব্যবহার করুন
  • Str () এর পরিবর্তে `Use ব্যবহার করুন, যা এটিও ...
  • সব শূণ্যস্থান নষ্ঠ - '1for' দেখতে এবং 'যদি z+xn ' দেখুন
  • 0 থেকে শুরু করে অফসেটটি পরীক্ষা করে প্রথম ব্যাপ্তি () টিপুনটি সরিয়ে ফেলুন (আসলে ... আমাকে কিছুই সংরক্ষণ করেনি তবে আমি এর চেহারাটি আরও ভাল পছন্দ করি :))

কর্মে:

In [694]: (lambda x,y,z:sum(1for n in range(y-x)if`z+x`in`n`))(0,1000000,2)
Out[694]: 468559

1

কে [২৮ অক্ষর]

{+/($x+!y)like"*",$:[z],"*"}

ব্যবহার

{+/($x+!y)like"*",$:[z],"*"}[0;1000000;2]
468559

1
আপনি প্রতিস্থাপন একটি অক্ষর সংরক্ষণ করতে পারবেন $:[z]সঙ্গে ($z)
মোলমারেক্স

তবে আপনার সমাধানের উপরের সীমানাটি ভুল। এটি x থেকে x + y-1 পর্যন্ত নয়, x থেকে y পর্যন্ত গণনা করবে।
মোলমারেক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.