প্রদত্ত দৈর্ঘ্যের ম্যাজিক সংখ্যা


13

আপনার প্রোগ্রামটি অবশ্যই একটি ইনপুট নেবে ( nবর্ণনার উদ্দেশ্যে) এবং এমন nকোনও সংখ্যার সমস্ত অনুক্রমকে আউটপুট করতে হবে যা কোনও সংখ্যা পুনরাবৃত্তি না করে অঙ্কের দীর্ঘ থাকে, যেখানে পূর্ববর্তী প্রতিটি অঙ্ক এবং তার সূচক সহ যে সংখ্যাটি পড়ে যায় তার সংখ্যার স্থান অনুসারে বিভাজ্য হয় ।

আপনি যাদু সংখ্যা সম্পর্কে এখানে পড়তে পারেন ।

নিয়মাবলী:

  • 1 <= n <= 10
  • কোনও অঙ্ক পুনরাবৃত্তি হতে পারে
  • শীর্ষস্থানীয় 0 অবশ্যই উপস্থিত থাকতে হবে (যদি প্রযোজ্য হয়)
  • xসংখ্যার 1 ম মাধ্যমে তম সংখ্যার (1 হিসাবে প্রথম অক্ষর দিয়ে শুরু) অবশ্যই বিভাজ্য হতে হবে x, অর্থাৎ 30685, 31 30দ্বারা বিভাজ্য, 2 306দ্বারা 3068বিভাজ্য, 4 দ্বারা বিভাজ্য, এবং 4 30685দ্বারা বিভাজক ।
  • প্রোগ্রামটি অবশ্যই ইনপুট হিসাবে একটি পূর্ণসংখ্যা গ্রহণ করবে (কমান্ড লাইনের মাধ্যমে, একটি ফাংশন আর্গুমেন্ট হিসাবে, ইত্যাদি) এবং নিয়মকে সন্তুষ্ট করে এমন সমস্ত অনুমতি মুদ্রণ করবে।
  • আউটপুট অবশ্যই 1 বা ততোধিক সাদা স্থানের অক্ষর দ্বারা পৃথক করা উচিত
  • পেরুটেশনগুলি শূন্যের সাথে শুরু হতে পারে (সুতরাং তারা প্রযুক্তিগতভাবে যাদুর সংখ্যা নয়)।
  • আউটপুট ক্রম কিছু যায় আসে না
  • আপনাকে যা না অপ্রত্যাশিত ইনপুট হ্যান্ডেল প্রয়োজন
  • বাইটস জিতে স্বল্প অক্ষর

উদাহরণ

প্রদত্ত 1:

0
1
2
3
4
5
6
7
8
9

দেওয়া 2:

02
04
06
08
10
12
14
16
18
20
24
26
28
30
32
34
36
38
40
42
46
48
50
52
54
56
58
60
62
64
68
70
72
74
76
78
80
82
84
86
90
92
94
96
98

দেওয়া 10:

3816547290

মূল ধাঁধার জন্য বিকল্প পিজ্জা হাট এবং জন এইচ কনভওয়ে (বিকল্প এ) Credit তাদের লিঙ্কগুলির জন্য @ মেগো এবং @ এসপি 3000 কে ধন্যবাদ ।



6
@ ডেভিডডুড "সম্পর্কিত" এর অর্থ "সদৃশ" নয়। সম্পর্কিত লিঙ্কটি পোস্ট করার উদ্দেশ্যটি সেই চ্যালেঞ্জটির জন্য সাইডবারে "লিঙ্কযুক্ত" হিসাবে প্রদর্শিত হয়।
মার্টিন এন্ডার

1
সম্পর্কিত পড়া: বহুবিভাজ্য সংখ্যা
Sp3000

3
শীর্ষস্থানীয় 0 এর কী তাদের আউটপুট নম্বর অন্তর্ভুক্ত করার দরকার আছে?
xnor

4
আপনি মুদ্রণ এবং হোয়াইটস্পেস উল্লেখ করেন যখন এটি আউটপুট আসে তবে কোনও ফাংশনের জন্য, আউটপুটটির সবচেয়ে প্রাকৃতিক রূপটি সম্ভবত একটি তালিকা ফিরিয়ে আনবে। এটা কি অনুমোদিত?
ডেনিস

উত্তর:


4

জেলি , 20 17 16 বাইট

QḣQV%S
ØDṗçÐḟRj⁷

এটি খুব ধীর এবং স্মৃতি নিবিড় ... এটি অনলাইনে চেষ্টা করুন!

কিভাবে এটা কাজ করে

ØDṗçÐḟRj⁷  Main link. Input: n (integer)

ØD         Yield d := '0123456789'.
  ṗ        Compute the nth Cartesian power of d.
      R    Range; yield [1, ..., n].
    Ðḟ     Filter false; keep strings of digits for which the following yields 0.
   ç         Apply the helper link to each digit string and the range to the right.
       j⁷  Join the kept strings, separating by linefeeds.


QḣQḌ%S     Helper link. Arguments: s (digit string), r (range from 1 to n)

Q          Unique; deduplicate s.
 ḣ         Head; get the prefixes of length 1, ..., n or less.
           If s had duplicates, the final prefixes fill be equal to each other.
  Q        Unique; deduplicate the array of prefixes.
   V       Eval all prefixes.
    %      Compute the residues of the kth prefixes modulo k.
           If s and the array of prefixes have different lengths (i.e., if the
           digits are not unique), some right arguments of % won't have corr. left
           arguments. In this case, % is not applied, and the unaltered right
           argument is the (positive) result.
     S     Add all residues/indices. This sum is zero iff all digits are unique
           and the kth prefixes are divisible by k.

3
যদি এটি ধীর হয় ... আমার উত্তরটি নিদ্রাহীন স্লাগ
লুইস মেন্ডো

6

জাভাস্ক্রিপ্ট (ফায়ারফক্স 30-57), 77 বাইট

f=n=>n?[for(s of f(n-1))for(c of"0123456789")if(s.search(c)+(s+c)%n<0)s+c]:[""]

সম্পাদনা: @ বর্ধিত 1 বাইট ধন্যবাদ @ edc65।


একটি রত্ন! ঠিক 1 বাইট সংরক্ষণ করুন...of"012...
এডক 65

@ edc65 উঘ, আমি বিশ্বাস করতে পারি না যে আমি এটি উপেক্ষা করেছি।
নিল

3

পাইথ, 19 বাইট

jf!s%VsM._TS;.PjkUT

প্রদর্শন

একটি নিষ্ঠুর শক্তি সমাধান। অনুসরণ করার ব্যাখ্যা। অনুপ্রেরণা FryAmTheEggman ধন্যবাদ


22 বাইট

juf!%sThH{I#sm+LdTGQ]k

প্রদর্শন

নম্বরগুলি স্ট্রিং হিসাবে নির্মিত এবং সংরক্ষণ করা হয়, এবং কেবল বিভাজ্যতা যাচাইয়ের জন্য ints এ রূপান্তরিত হয়।

ব্যাখ্যা:

juf!%sThH{I#sm+LdTGQ]k
 u                 Q]k    Apply the following input many times, starting with ['']
             m    G       For each string at the previous step,
              +LdT        Append each digit to it
            s             Concatenate
         {I#              Filter out strings with repeats
  f                       Filter on
     sT                   The integer
    %  hH                 Mod the 1 indexed iteration number
   !                      Is zero.
j                         Join on newlines.

আমি কৌতূহলী: পাইথ শিখার জন্য আপনাকে কীভাবে মস্কোস্টিক হতে হবে? / গুলি
ডেভিসডুড

2
@ ডেভিডডুড আমার মনে হয় লোকেরা যখন দেখবে তখন যা মনে করে তার চেয়ে সহজ। ভয়ানক অংশ শুরু হয়। আপনি একবার, আপনি আছেন।
FliiFe

1
এটি মোটামুটি সহজ, ইমো, কারণ ডিবাগ মোড আপনাকে কতটা সহায়তা করে। দস্তাবেজগুলিও বেশ ভাল এবং আপনাকে কী জানা দরকার তা ব্যাখ্যা করে।
ভেন

কেবলমাত্র রেফারেন্সের জন্য, আমি আরও একটি ব্যবহার করে ._এবং কিছু অন্যান্য জিনিস দিয়ে ক্ষত করে দিয়েছি তবে বড় ইনপুটগুলির জন্য এটি ধীর গতিতে:jjLkf!s.e%ib10hk._T.PUT
ফ্রাইআম দ্য এজিগম্যান

3

এমএটিএল , 30 বাইট

4Y2Z^!"@Sd@!U10G:q^/kPG:\~h?@!

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

এটা খুব ধীর। জন্য input 3অনলাইনে কম্পাইলার কয়েক সেকেন্ড সময় লাগে। একের পর এক সংখ্যা উপস্থিত হতে দেখতে কোডের শেষে একটি অন্তর্ভুক্ত করুনD

ব্যাখ্যা

4Y2       % predefined literal: string '0123456789'
Z^        % implicit input. Cartesian power: 2D char array. Each number is a row
!         % transpose
"         % for each column
  @       %   push current column
  Sd      %   sort and compute consecutive differences (*)
  @!U     %   push current column. Convert to number
  10G:q^  %   array [1 10 100 ... 10^(n-1)], where n is the input
  /k      %   divide element-wise. Round down
  P       %   reverse array
  G:      %   array [1 2 ... n]
  \~      %   modulo operation, element-wise. Negate: gives 1 if divisible (**)
  h       %   concatenate (*) and (**). Truthy if all elements are nonzero
  ?       %   if so
    @!    %     current number as a row array of char (string)
          %   implicitly end if
          % implicitly end if
          % implicitly display stack contents

আপনার কোডে কিছু ভুল আছে; এটি আমার পরে 5 এর পরে আউটপুট উত্পাদন বন্ধ করে দেয় এবং 5 টির সাথে সর্বশেষ সংখ্যাটি (কেবলমাত্র আমি যাচাই করতে বিরক্ত করেছি) ভুল। 986 3 দ্বারা বিভাজ্য নয়
ডেভিসডুড

আপডেট: 2 এর জন্য এটি 10, 12, 32, 34, 54, 56, 76, 78
এড়িয়ে যায়

আমি মনে করি আপনি প্রম্পটটি ভুল বুঝেছেন। 3আমি তাকিয়ে দেখতে পাচ্ছি যে আপনার কয়েকটি ইঙ্গিত রয়েছে (উদাঃ 026)। এছাড়াও একটি ব্যাখ্যা প্রশংসা করা হবে
ডেভিসডুড

এটি এখনও কাজ করে না - 3 এড়িয়ে যায় 021, 024, ইত্যাদি। প্রথম সঠিক সংখ্যা
063।

@ ডেভিডডুড সম্পাদিত, এখন যেহেতু আমি চ্যালেঞ্জটি আরও মনোযোগ সহকারে পড়ছি
লুইস মেন্ডো

1

রুবি, 87 বাইট

বেসিক পুনরাবৃত্তি সমাধান।

f=->n,x="",j=1{j>n ?puts(x):([*?0..?9]-x.chars).map{|i|f[n,x+i,j+1]if((x+i).to_i)%j<1}}

আপনি যদি প্রিন্টিংয়ের পরিবর্তে অনুমতিগুলির একটি তালিকা, 85 বাইট ফেরত পাওয়ার অনুমতি পান:

f=->n,x="",j=1{j>n ?x:([*?0..?9]-x.chars).map{|i|f[n,x+i,j+1]if((x+i).to_i)%j<1}-[p]}

1

পাইথন, 132 বাইট

lambda n:[x for x in map(("{:0%s}"%n).format,(range(10**n)))if all(int(x[:i])%i<1and len(set(x))==len(x)for i in range(1,len(x)+1))]

ছাড়িয়ে 26 বাইট ফেলে দেওয়া হয়েছে itertools, আমাকে অনুধাবন করার জন্য স্প3000 কে ধন্যবাদ যে আমার এটি ব্যবহার করা উচিত নয়।

পরিবর্তে একটি তালিকা বোধগম্যতা ব্যবহার করে 2 বাইট বাদ পড়ে filter, টিপটির জন্য আবার Sp3000 ধন্যবাদ।

অনলাইনে এটি ব্যবহার করে দেখুন: পাইথন 2 , পাইথন 3

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