লঞ্চ-বেলের সংখ্যা কত?


19

চ্যালেঞ্জ

একটি পূর্ণসংখ্যা দেওয়া হয়েছে, nযেখানে ইনপুট হিসাবে 36 >= n >= 2, আউটপুট ভিত্তিতে কতগুলি লঞ্চ-বেল সংখ্যা রয়েছে n

আউটপুট অবশ্যই বেস 10 এ থাকতে হবে।

লিঞ্চ-বেল নম্বর

একটি সংখ্যা একটি লিঞ্চ-বেল সংখ্যা হয় যদি:

  • এর সমস্ত অঙ্ক অনন্য (অঙ্কের পুনরাবৃত্তি নয়)
  • সংখ্যাটি তার প্রতিটি অঙ্ক দ্বারা বিভাজ্য
  • এটিতে এর একটি অঙ্ক হিসাবে শূন্য থাকে না

যেহেতু, সমস্ত সংখ্যারই অনন্য হতে হবে এবং প্রতিটি বেসে আপনার একক সংখ্যার একটি সীমাবদ্ধ সেট রয়েছে, লঞ্চ-বেল সংখ্যার একটি সীমাবদ্ধ সংখ্যা রয়েছে।

উদাহরণস্বরূপ, বেস 2 তে কেবল একটি লঞ্চ-বেল নম্বর রয়েছে 1, যেহেতু অন্যান্য সমস্ত সংখ্যা হয় হয় পুনরাবৃত্ত সংখ্যা বা একটি 0 থাকে।

উদাহরণ

Input > Output
2 > 1
3 > 2
4 > 6
5 > 10
6 > 10
7 > 75
8 > 144
9 > 487
10 > 548

গাণিতিক অনলাইনটি বেসের উপরের 10 মেমরির বাইরে চলে গেছে আপনি নিজের তৈরি করতে নিম্নলিখিত কোডটি ব্যবহার করতে পারেন:

Do[Print[i," > ",Count[Join@@Permutations/@Rest@Subsets@Range[#-1],x_/;And@@(x\[Divides]FromDigits[x,#])]&[i]],{i,10,36,1}]

জয়লাভ

বাইটস মধ্যে সংক্ষিপ্ত কোড।


1
@ ম্যাজিক অ্যাক্টপাস ইউরান কেন আমাদের অভিধানের দরকার? আমাদের সেই বেসে আউটপুট দেওয়ার দরকার নেই।
ব্যবহারকারী 202729

2
আপনি একটি উদাহরণ যোগ করতে পারেন >10?
রড

1
@ জোনাথন অ্যালান আমি দেখতে পাচ্ছি, আমি এখনই তা সাফ করে দিয়েছি
বিটা

3
যদি কেবল [২-৩-6] সমর্থন করা হয় তবে আমরা সেগুলিও তালিকাভুক্ত করতে পারি।
জোনাথন অ্যালান

3
দেখা যাচ্ছে যে কেউ গণনা করতে পারেননি f(36)। এর উপর ভিত্তি করে একটি দ্রুততম কোড চ্যালেঞ্জ করুন সম্ভবত আকর্ষণীয় হবে।
ব্যবহারকারী 202729

উত্তর:


8

জেলি , 13 বাইট

Q⁼g
*`Ṗ©bç"®S

এটি অনলাইন চেষ্টা করুন!

আরেকটি ও (এন এন ) সমাধান।

ব্যাখ্যা

Q⁼g  Helper link. Input: digits (LHS), integer (RHS)
Q    Unique (digits)
 ⁼   Match
  g  GCD between each digit and the integer

*`Ṗ©bç"®S  Main link. Input: integer n
*`         Compute n^n
  Ṗ        Pop, forms the range [1, n^n-1]
   ©       Store previous result in register
    b      Convert each integer to base n
     ç"    Call the helper link, vectorized, with
       ®   The register's value
        S  Sum

16 বাইট ṖŒPḊŒ!€Ẏ⁼g¥"ḅ¥³Sএবং দ্রুত
মাইল

5

জেলি , 15 বাইট

*ḃ€’Q€Qḍḅ¥€⁸Ạ€S

এটি অনলাইন চেষ্টা করুন!

জটিলতা ।O(nn)


5
কেবল কোড-গল্ফের মধ্যে একটি O(N^N)সমাধান কেবল গ্রহণযোগ্য নয়, তবে ভাল।
ডিজেএমসিএমহেম

5
@ ডিজেএমসিমেহেম মেহ, আমি মনে করি আমরা এই সংখ্যাগুলি পাম্প করে পেতে পারিO(N↑↑N)
বিটা

O(N^(N+1))প্রতিটি উত্পন্ন সংখ্যার গ্রহণযোগ্যতা যাচাই করে তা হওয়া উচিত O(N)? (যদিও আমি জেলি বুঝতে পারি না)
ব্যবহারকারী 202729

@ ব্যবহারকারী202729 এন + 1 বড়-ও স্বরলিপিতে কেবল N।
এমবিআরিগ

1
@mbrig অবশ্যই আমি বিগ-ও স্বরলিপি বুঝতে পেরেছি, এর N+1মধ্যে (অন্তর্ভুক্ত O(N)) বোঝা N^(N+1)যাচ্ছে না O(N^N)
ব্যবহারকারী 202729

3

জাভা, 222 212 190 বাইট

-10 বাইট হারম্যানকে ধন্যবাদ

-22 বাইট কেভিনকে ধন্যবাদ জানায়

import java.util.*;a->{int c=0,i=1;A:for(;i<Math.pow(a,a);i++){Set g=new HashSet();for(char b:a.toString(i).toCharArray())if(!g.add(b)|b<49||i%a.parseInt(b+"",a)>0)continue A;c++;}return c;}

Ungolfed:

a -> {
    int count = 0;
    OUTER:
    for (int i = 1; i < Math.pow(a, a); i++) {
        Set<Character> found = new HashSet<>();
        for (char b : Integer.toString(i, a).toCharArray()) {
            if (!found.add(b) || b == 48 || i % Integer.parseInt(b + "", a) != 0) {
                continue OUTER;
            }
        }
        count++;
    }
    return count;
}

এটি অনলাইন চেষ্টা করুন!

প্রচুর সংখ্যার জন্য খুব ধীর গতিতে আসে।


-10 বাইট:a->{int c=0,i=1;A:for(;i<Math.pow(a,a);i++){java.util.Set<Character>g=new java.util.HashSet<>();for(char b:Long.toString(i,a).toCharArray())if(!g.add(b)|b<49||i%Long.parseLong(b+"",a)>0)continue A;c++;}return c;}
হারমান এল

আমি প্রথমবারের মতো একটি কোডগ্রাফের উত্তরে একটি লেবেল দেখেছি
জাস্টিন

A:এবং continue A;13 বাইট যখন {--c;break;}12 হয় তা কি এমন কিছু বাগ প্রবর্তন করবে যা আমি দেখছি না?
জলি জোকার

এটি একটি পৃথক উত্তরের জন্য মূল্যবান হতে পারে তবে আপনি প্রতিটি অঙ্ক i%aএবং i/=aপ্রতিটি লুপের সাহায্যে বেস এনগুলিতে অঙ্কগুলি লুপ করতে পারেন । আপনি এটি ব্যবহার করে int[]এবং এটি যাচাই করে সেটটি এড়াতে পারবেনx[b]++<2
JollyJoker

java.util.Set<Character>‌​g=new java.util.HashSet<>();হতে পারে import java.util.*;+ Set g=new HashSet();; Long.toStringহতে পারে a.toString; এবং Long.parseLongহতে পারে a.parseInt
কেভিন ক্রুইজসেন

3

পার্ল 6 , 86 84 77 বাইট

-২ বাইট রমিলিসকে ধন্যবাদ

->\n{n-1+grep {.Set==$_&&.reduce(* *n+*)%%.all},map {|[X] (1..^n)xx$_},2..^n}

এটি অনলাইন চেষ্টা করুন!

টিআইওতে এন = 8 এর জন্য কাজ করে।


1
আমি মনে করি .allপরিবর্তে না করে আপনি 2 বাইট সংরক্ষণ করতে পারেন all $_
র‌্যামিলিজ

2

আসলে , 24 বাইট

;╗DR⌠╜DR╨i⌡M⌠;╜@¿♀%ΣY⌡MΣ

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

এই প্রোগ্রামটি দুটি প্রধান অংশ নিয়ে গঠিত: ক্রমান্বয়ে উত্পন্নকরণ এবং লিঞ্চ-বেল পরীক্ষা। সুতরাং, এই ব্যাখ্যাটি আরও স্পষ্টতার জন্য প্রতিটি অংশকে আলাদাভাবে দেখবে will

পারমিটেশন তৈরি করা হচ্ছে

ইনপুট: n(একটি পূর্ণসংখ্যা [2, 36])

আউটপুট: সমস্ত আংশিক এবং মোট অনুমান [1, n-1]( [1, n-1]পুনরাবৃত্তি ছাড়াই মানগুলির ক্রম যার দৈর্ঘ্যে রয়েছে [1, n-1])

;╗DR⌠╜DR╨i⌡M
;╗            store a copy of n in register 0
  DR          range(1, n)
    ⌠╜DR╨i⌡M  do the following for each element k in range:
     ╜DR        range(1, n)
        ╨       k-permutations of [1, n-1]
         i      flatten

লিঞ্চ-বেল টেস্ট

ইনপুট: nবেস- nসংখ্যার তালিকা হিসাবে প্রতিনিধিত্ব করা বেস- পূর্ণসংখ্যার একটি তালিকা

আউটপুট: বেসে লঞ্চ-বেলের সংখ্যা n

⌠;╜@¿♀%ΣY⌡MΣ
⌠;╜@¿♀%ΣY⌡M   for each base-n digit list a:
 ;╜             duplicate a, push n
   @¿           convert a from base-n to decimal
     ♀%         modulo a with each of its base-n digits
       Σ        sum
        Y       boolean negation (1 if all modulo results are 0, else 0)
           Σ  sum (count the 1s in the resultant list)

2

গণিত, 82 79 76 বাইট

Count[Join@@Permutations/@Subsets@Range[#-1],x_/;x==x~FromDigits~#~GCD~x]-1&

আপনি কিভাবে এই মধ্যে একটি নম্বর পাস? (দুঃখিত, গাণিতিক আমার কাছে নতুন)
বিটা

ফাংশনটি আটকে দিন (উদাঃ ওল্ফ্রাম স্যান্ডবক্সে), এবং তারপরে রাখুন [<parameter>]parameterএকটি নম্বর হওয়ার সাথে ।
ব্যবহারকারী 202729

আপনি একটি টিআইও, বা সমতুল্য যোগ করতে পারেন?
শেগি


1
চ (5) এবং চ (6) উভয়ই সত্যই 10? এটি অদ্ভুত ...
ম্যাজিক অক্টোপাস উর্ন

1

05 এ বি 1 ই , 22 বাইট

mLIBε0KÙ}ÙvyIöySIö%O_O

এটি অনলাইন চেষ্টা করুন!

O_O এটি অবশেষে কাজ করার সময় আমার মুখও ছিল।

<ÝIBJ0Kæ¦Ù€œ˜ আমি আসল উত্তরে সংখ্যাগুলি তৈরি করতে যেভাবে ব্যবহার করি তার চেয়ে দ্রুত কিন্তু এলোমেলোভাবে than এর চেয়ে বড় কোনও কিছুর জন্য কাজ করা বন্ধ করে দেয় (কোনও আপাত কারণে?)

ব্যাখ্যা

mLIBε0KÙ}ÙvyIöySIö%O_O # (input = i)
m                      # Push i^i
 L                     # ...and get a range from one to this value
  IB                   # Map every element to their base i representation
    ε   }              # Map every element to ...
     0K                 # Itself without 0s
       Ù                # ...and only unique digits
         Ù             # Uniquify the resulting list
          v            # For each element...
           yIö          # Push it converted to base 10
              ySIö      # Push every digit of it converted to base 10 in a list
                  %     # Calculate the modulo for each digit
                   O    # Sum all results together
                    _   # Negate: Returns 0 for every positive number and 1 for 0
                     O  # Sum with the rest of the stack (Basically counting all Lynch-Bell-Numbers)
                       # Implicit print

আমি প্রায় নিশ্চিত একটি ভিন্ন পদ্ধতির আরো বাইট সংরক্ষণ করতে পারেন, কিন্তু আপনার বর্তমান দ্রবণে ε0KÙ}হতে পারে 0м€Ùএকটি বাইট সংরক্ষণ করুন।
কেভিন ক্রুইজসেন

1

পার্ল 5, 80 76 বাইট (75 + -p)

$\+=!grep$_?$;%$_|$|{0,$_}++:1,@@until($@[$}++]+=1)%=$_ and++$;,$}=$}==$_}{

$;মজা এবং লাভের জন্য গালি দেওয়া । ইনপুটগুলি টাইম আউট> 8।

সম্পাদনা: দুটি লুপ মার্জ করে -4 বাইট।


1

রুবি , 80 65 বাইট

->n{(1..n**n).count{|i|(d=i.digits n)-[0]==d|d&&d.sum{|j|i%j}<1}}

এটি অনলাইন চেষ্টা করুন!

-15 বাইটের জন্য জিবি ধন্যবাদ Thanks


এটি n> 10 ("j.to_i" এর কারণে)
জিবি

ভাল ক্যাচ, খুব খারাপ এটি এর আগে খুব ভাল ফলাফল :) :)
ক্যারিল এল

যাইহোক: আপনি বেসকে আর্গুমেন্ট হিসাবে পাস করে "অঙ্কগুলি" কল করতে পারেন এবং অনেক কিছু সংরক্ষণ করতে পারেন: `-> n {(1..n ** n)। == d | d&& d.sum? {| j | i% j} <0}} `
জিবি

প্রকৃতপক্ষে আমি একেবারে মিস করেছি যে অঙ্কগুলির এই প্যারামিটারটি রয়েছে। তবে আমি দেখতে পাচ্ছি আপনি এটিকে পৃথক উত্তর হিসাবে পোস্ট করেছেন এবং তারপরে মুছে ফেলেছেন। আমি বলব, এগিয়ে যাও, আপনি আমাকে এটি মারলেন :)
কিরিল এল।

আমি মনে করি আমার উত্তরটি খুব অনুরূপ, এটি বেশ কয়েকটি শর্টকাট, বেশিরভাগ চোর কোডের সাথে একই পন্থা।
জিবি

1

জাপট -x , 25 19 বাইট

-6 বাইট শ্যাগি ধন্যবাদ

pU õìU ËeDâ f myDìU

এটি অনলাইন চেষ্টা করুন!



বা পতাকা সহ 19 বাইট-x
শেগি

বাহ ও_ও আমি গল্ফিং জ্যাপে স্পষ্টতই ভয়ানক
এএসসিআইআই-মাত্র

আপনি এখন পর্যন্ত খুব ভাল করছেন :) একটি নতুন ভাষা নিয়ে গ্রিপ পেতে সময় লাগে, এর সমস্ত বৈশিষ্ট্য, কৌশল এবং কৌতুকগুলি খুঁজে বের করতে।
শেগি

@ শেগি তবে আপনি যখনই আমি প্রায়শই নতুন ভাষা ব্যবহার করেন তখন এটি আশা করা উচিত যে আমি 25% এক্সডি
-র

0

পাইথন 3 , 204 174 বাইট

lambda x,r=range,i=chain:sum(0**any(int(''.join(map(str,y)),x)%z for z in y)for y in i(*map(permutations,i(*[combinations(r(1,x),e)for e in r(x)]))))-1
from itertools import*

এটি অনলাইন চেষ্টা করুন!

রেঞ্জের পাওয়ারেটের প্রতিটি উপাদান (1, এন) (কোনও শূন্য, অনন্য নয়) এর প্রতিটি ক্রমের পরিবর্তনের জন্য সংখ্যার স্ট্রিংকে বেস এনতে রূপান্তর করুন। প্রতিটি অঙ্ক দ্বারা বিভাজ্য সমস্ত সংখ্যক, পাওয়ারশেট খালি সেট তৈরির কারণে 1 বিয়োগ করে।

-30 বাইট @ ওভসকে ধন্যবাদ!






0

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 144 বাইট

n=>{int j,i,p;for(j=i=0;i++<~0UL;){p=i;var a=new List<int>();for(;p>0;p/=n)a.Add(p%n);j+=a.All(c=>c>0&&i%c<1&a.Count(x=>x==c)<2)?1:0;}return j;}

0 থেকে সমস্ত সংখ্যার মধ্য দিয়ে যায় ulong.MaxValueএবং নির্দিষ্ট বেসে লঞ্চ-বেল নম্বরগুলি নির্বাচন করে। চিরকালের জন্য চালিয়ে যায়, এমনকি 2 এর জন্যও, আপনি যদি ~0ULলুপের জন্য অংশটি আরও ছোট কিছুতে সেট করেন তবে আপনি টিআইওতে এক মিনিটের মধ্যে 7 ইনপুট আউটপুট পেতে পারেন।

এটি অনলাইন চেষ্টা করুন!

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