সমস্ত জেনোড্রোম


15

ভূমিকা

বেস এন এর একটি জেনোড্রোম হল একটি পূর্ণসংখ্যা যেখানে বেস এন এর সমস্ত অঙ্ক আলাদা। এখানে জেনোড্রোমের কয়েকটি ওইআইএস ক্রম রয়েছে।

উদাহরণ হিসেবে বলা যায়, বেস 16, FACE, 42এবং FEDCBA9876543210কিছু xenodromes (কোনটি হয় 64206, 66এবং 18364758544493064720বেস 10), কিন্তু 11DEFACEDনয়।

চ্যালেঞ্জ

একটি ইনপুট বেস দেওয়া হয়েছে, এন , বেস 10 এর বেসের জন্য সমস্ত জেনোড্রোমগুলি আউটপুট আউট করবে ।

আউটপুটটি সর্বনিম্ন থেকে সর্বাধিকের ক্রমে হওয়া উচিত। অনুক্রমের একটি শব্দটি কোথায় শেষ হবে এবং একটি নতুন শুরু হবে তা স্পষ্ট হওয়া উচিত (যেমনটি [0, 1, 2]স্পষ্ট যেখানে কোথায় 012নেই))

n 0 এর চেয়ে বড় পূর্ণসংখ্যা হবে।

ব্যাখ্যা

এই চ্যালেঞ্জটি আইও বিশেষত 10 বেসে ইন্টিজারগুলি এবং তাদের বেসকে স্ট্রিং হিসাবে পরিচালনা করা এড়ানোর জন্য করে। চ্যালেঞ্জটি হ'ল বিমূর্তভাবে কোনও বেস পরিচালনা করা। এর মতো, আমি এই অতিরিক্ত নিয়মটি যুক্ত করছি:

বেস 10 ব্যতীত বেসে স্ট্রিং হিসাবে পূর্ণসংখ্যা সংরক্ষণ করা যায় না।

তোমার প্রোগ্রাম তাত্ত্বিক যুক্তিসঙ্গতভাবে উচ্চ হ্যান্ডেল করতে সক্ষম হওয়া উচিত এন যদি কোন সময়, স্মৃতি, স্পষ্টতা বা একটি ভাষা বাস্তবায়ন অন্যান্য প্রযুক্তিগত সীমাবদ্ধতা ছিল।

এটি , তাই সংক্ষিপ্ততম প্রোগ্রামটি, বাইটে, জিতে।

উদাহরণ ইনপুট এবং আউটপুট

1  # Input
0  # Output
2
0, 1, 2
3
0, 1, 2, 3, 5, 6, 7, 11, 15, 19, 21
4
0, 1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14, 18, 19, 24, 27, 28, 30, 33, 35, 36, 39, 44, 45, 49, 50, 52, 54, 56, 57, 75, 78, 99, 108, 114, 120, 135, 141, 147, 156, 177, 180, 198, 201, 210, 216, 225, 228

1
এন এর কোন সীমা আছে?
ফ্লিপট্যাক

@ Flp.Tkc নং এটি উপযুক্তভাবে উচ্চতর হ্যান্ডেল করতে সক্ষম হওয়া উচিত। আমি চাই না যে চ্যালেঞ্জটি কতটা উচ্চতর কোনও ভাষার বিল্টিন বেস রূপান্তর পরিচালনা করতে পারে তার দ্বারা সীমাবদ্ধ হোক।
আর্টিয়ার

@ আর্টির যা চ্যালেঞ্জ পাঠ্যের অংশ হওয়া উচিত ছিল, তখন। দেখে মনে হচ্ছে কিছু উত্তর ইতিমধ্যে তা করছে
লুইস মেন্ডো

আমি জানি পাইথের বেস রূপান্তরটি এর চেয়ে বড় মানগুলি হ্যান্ডেল করতে পারে 36 , তবে যেহেতু এটি সমস্ত জেনোড্রোমগুলি চায় তাই তালিকাটি খুব বড় হয়ে গেলে অন্তর্নিহিত পাইথনটি ভেঙে বলে যে এটি একটিতে কোনও মান ফিট করতে পারে না ssize_t। এটি কি এইভাবে ব্রেকিং গ্রহণযোগ্য?
FryAmTheEggman

2
কারও মনে হয় যে সমস্ত উত্তরগুলি অন্তর্নির্মিত নির্ভুলতার সীমাবদ্ধতার কারণে বৃহত্তর ঘাঁটিগুলি পরিচালনা করতে পারে না, এটি একটি অ্যালগরিদম সমস্যার চেয়ে বাস্তবায়নের মতো বলে মনে হয়। আপনি কি স্পষ্ট করতে পারেন?
ডেনিস

উত্তর:


10

পাইথ , 8 বাইট

f{IjTQU^

বেস n তে কোনও সদৃশ উপাদান না থাকার কারণে [0, n ^ n - 1] এ নম্বরগুলি ফিল্টার করে । পাইথের বেস রূপান্তরটি যে কোনও বেসের সাথে কাজ করবে, তবে যেহেতু এটি সংখ্যার খুব দ্রুত বর্ধিত তালিকার দিকে লক্ষ্য করে, শেষ পর্যন্ত এটি মানগুলিকে মেমরিতে সংরক্ষণ করতে অক্ষম হবে।

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

ব্যাখ্যা:

f{IjTQU^QQ    - Auto-fill variables
      U^QQ    - [0, n^n-1]
f             - keep only those that ...
 {I           - do not change when deduplicated
   jTQ        - are converted into base n

বাহ, ডেনিস যে জেলি সমাধান চেয়ে খাটো একটি সমাধান! : 'পি
হাইপারনিউট্রিনো

3
কেউ জেলিকে মারছে না। ¶:
রোমান গ্রাফ

5

পাইথন 2, 87 বাইট

n=input()
for x in range(n**n):
 s={n};a=x
 while{a%n}|s>s:s|={a%n};a/=n
 print-~-a*`x`

নন-জেনোড্রোমগুলির জন্য অতিরিক্ত ফাঁকা রেখাগুলি মুদ্রণ করে:

golf % python2.7 xenodromes.py <<<3
0
1
2
3

5
6
7



11



15



19

21

5

জেলি , 9 8 বাইট

ð*ḶbQ€Qḅ

1 জন বাইট বন্ধ করে গল্ফ করার জন্য @ জোনাথন অ্যালানকে ধন্যবাদ!

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

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

ð*ḶbQ€Qḅ  Main link. Argument: n

ð         Make the chain dyadic, setting both left and right argument to n.
          This prevents us from having to reference n explicitly in the chain.
 *        Compute nⁿ.
  Ḷ       Unlength; yield A := [0, ..., nⁿ - 1].
   b      Convert each k in A to base n.
    Q€    Unique each; remove duplicate digits.
      Q   Unique; remove duplicate digit lists.
       ḅ  Convert each digit list from base n to integer.

4

জেলি , 12 বাইট

*`ḶbµQ⁼$Ðfḅ³

TryItOnline!

যেকোন পক্ষে কাজ করবে n, পর্যাপ্ত মেমরি দেওয়া, জেলির বেস রূপান্তর সীমাবদ্ধ নয়।

কিভাবে?

*`ḶbµQ⁼$Ðfḅ³ - Main link: n
    µ        - monadic chain separation
*            - exponentiation with
 `           - repeated argument, i.e. n^n
  Ḷ          - lowered range, i.e. [0,1,2,...,n^n-1]
   b         - covert to base n (vectorises)
        Ðf   - filter keep:
       $     -     last two links as a monad
     Q       -         unique elements
      ⁼      -         equals input (no vectorisation)
           ³ - first program argument (n)
          ḅ  - convert from base (vectorises)

3

জাভাস্ক্রিপ্ট (ES7), 86 বাইট

n=>{a=[];for(i=n**n;i--;j||a.unshift(i))for(j=i,b=0;(b^=f=1<<j%n)&f;j=j/n|0);return a}

ব্যর্থ হয়েছে 1(আউটপুট হওয়া উচিত [0], তবে ব্যাপ্তি অবশ্যই হওয়া উচিত))
আরটিয়ার

ঠিক আমার কাছে যা ছিল, তবে তাত্ত্বিকভাবে এটি ব্যর্থ হবে 37যদি নির্ভুলতা কোনও সমস্যা না হত, যা আমি মনে করি এটি এটিকে অবৈধ করে তোলে ...
ETH প্রোডাকশন

@Artyer আমি আমার ব্যাচ সংস্করণ বৈশিষ্ট্যসমূহ নিয়ে আসা করেছি, তাই এখন এই জন্য কাজ করবে nথেকে 1থেকে 13সামনে ফ্লোটিং পয়েন্ট স্পষ্টতা এটা হত্যা করে।
নীল

আমি পছন্দ করি কীভাবে সমাধানগুলি খুব কম সংক্ষেপে শুরু হয় এবং তারপরে হঠাৎ আকারের ক্রমটি ঝাঁপ দেয়।
নিসা

2

পার্ল 6 , 47 বাইট

{(0..$_**$_).grep: !*.polymod($_ xx*).repeated}

একটি সেক ফিরিয়ে দেয় । ( Seq একটি মৌলিক Iterable জন্য মোড়কের ইটারেটর গুলি)

এর একটি ইনপুট সহ 16সেক ( 87887) এর 53905 তম উপাদান গণনা করতে 20 সেকেন্ড সময় লাগে ।

সম্প্রসারিত:

{       # bare block lambda with implicit parameter 「$_」

  ( 0 .. ($_ ** $_) )    # Range of values to be tested

  .grep:                 # return only those values

    !\                   # Where the following isn't true
    *\                   # the value
    .polymod( $_ xx * )  # when put into the base being tested
    .repeated            # has repeated values
  }
}

2

ব্যাচ, 204 200 বাইট

@set/an=%1,m=1
@for /l %%i in (1,1,%1)do @set/am*=n
@for /l %%i in (0,1,%m%)do @set/ab=0,j=i=%%i&call:l
@exit/b
:l
@set/a"f&=b^=f=1<<j%%n,j/=n"
@if %f%==0 exit/b
@if %j% gtr 0 goto l
@echo %i%

N> 9 এর জন্য কাজ করবে না কারণ ব্যাচে কেবল 32-বিট পাটিগণিত রয়েছে। সুবিধামত, ব্যাচ মূল্যায়ন f &= b ^= f = 1 << j % nযেমন f = 1 << j % n, b = b ^ f, f = f & bবদলে f = f & (b = b ^ (f = 1 << j % n))


2

গণিত, 59 48 বাইট

Select[Range[#^#]-1,xMax[x~DigitCount~#]==1]&

U + F4A1 "ব্যক্তিগত ব্যবহার" অক্ষর ধারণ করে

ব্যাখ্যা

Range[#^#]-1

উত্পন্ন {1, 2, ..., n^n}। বিয়োগ 1। (ফলন {0, 1, ..., n^n - 1})

xMax[x~DigitCount~#]==1

একটি বুলিয়ান ফাংশন: Trueযদি প্রতিটি অঙ্ক বেসে একবারে ঘটে থাকে n

Select[ ... ]

তালিকা থেকে উপরের বুলিয়ান ফাংশনটি প্রয়োগ করা হয় {0, 1, ..., n^n - 1}এমন একটি নির্বাচন করুন True

59 বাইট সংস্করণ

Select[Range[#^#]-1,xDuplicateFreeQ[x~IntegerDigits~#]]&

2

গণিত, 48 55 বাইট

Union[(x   x~FromDigits~#)/@Permutations[Range@#-1,#]]&

( xগুলিগুলির মধ্যে ট্রিপল স্পেসটি কোডটি কাজ করতে 3-বাইট অক্ষর \ uF4A1 দ্বারা প্রতিস্থাপন করা দরকার))

একক যুক্তির অজানা ফাংশন। জেনোড্রোমিসিটির জন্য পূর্ণসংখ্যা পরীক্ষা করার পরিবর্তে, এটি সহজেই অনুমোদিত অঙ্কগুলির সাবটাইটগুলির সমস্ত সম্ভাব্য ক্রম উৎপন্ন করে (যা স্বয়ংক্রিয়ভাবে পুনরাবৃত্তি এড়ানো হয়) এবং সংশ্লিষ্ট পূর্ণসংখ্যাকে বেস 10 এ রূপান্তর করে প্রতিটি জেনোড্রোম দু'বার উত্পাদিত হয়, উভয়ই অগ্রণী 0 সহ এবং ছাড়াও; Unionসদৃশ অপসারণ এবং বুট করার জন্য তালিকাটি সাজান।


1
ব্যর্থ 2। ফাংশন দেয় {0, 1}। আমি বিশ্বাস করি এর Permutations[Range@#-1, #]পরিবর্তে আপনার প্রয়োজন Subsets[Range@#-1]
জংহওয়ান মিন

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