ব্যাক-টু-ফ্রন্ট পারমিটেশন ইনডেক্স


12

চ্যালেঞ্জ

nশূন্য, খালি বাছাই করা তালিকা অনুসারে আইটেমের সংখ্যা দেওয়া হয়েছে i(n), যেখানে এর
" ব্যাক-টু-ফ্রন্ট পারমিটেশন "
সমস্ত অনুক্রমের একটি তালিকাতে থাকবে যদি বলা হয় যে অনুমতিগুলি অভিধানিকল্পিতভাবে সাজানো হয়।

ফলাফলগুলি 0 বা 1-ভিত্তিক হতে পারে, কেবল যা বলুন (তা iনয় n)।

ব্যাক-টু-ফ্রন্ট পারমিটেশন

... সমস্ত আইটেম নতুন তালিকায় সরানো না হওয়া পর্যন্ত বারবার ফরওয়ার্ড সাজানো (বাম থেকে ডান) তালিকার পিছনে (ডান) তারপর সামনে (বাম) নিয়ে আইটেমের তালিকা তৈরির ফলাফল is :

Input being consumed     Output being built
----------------------+----------------------
[1,2,3,4,5,6,7]       |   []
[1,2,3,4,5,6]         |   [7]
  [2,3,4,5,6]         |   [7,1]
  [2,3,4,5]           |   [7,1,6]
    [3,4,5]           |   [7,1,6,2]
    [3,4]             |   [7,1,6,2,5]
      [4]             |   [7,1,6,2,5,3]
       []             |   [7,1,6,2,5,3,4]
----------------------+----------------------
                Result:   [7,1,6,2,5,3,4]

পারমুটেশন সূচক

যদি nহয় 7(উপরে ব্যাক টু ফ্রন্ট উদাহরণ হিসাবে) আছে 7! = 5040(স্বতন্ত্র) টি আইটেম সম্ভাব্য একাধিক বিন্যাসন।

এই সমস্ত আদেশের লিক্সোগ্রাফিকভাবে সাজানো তালিকার প্রথম (বা জিরোথ যদি আপনি চান) আইটেমটি [1,2,3,4,5,6,7]নিজেই হয়ে থাকে।
দ্বিতীয় আইটেম হবে [1,2,3,4,5,7,6]
পেনাল্টিমেট আইটেম হবে [7,6,5,4,3,1,2]
চূড়ান্ত আইটেম হবে [7,6,5,4,3,2,1]

তালিকার কোথাও হ'ল [7,1,6,2,5,3,4]- ব্যাক-টু-ফ্রন্টের ক্রমশক্তি।
বাস্তবে এটি সূচক 4421 (বা 4420, 0 ভিত্তিক) এ থাকে res

(1-ভিত্তিক) সিরিজের i(n)সাথে প্রথম বর্ণিত 100 টি শর্তগুলি হ'ল n=1:

[1, 2, 5, 20, 101, 620, 4421, 35900, 326981, 3301820, 36614981, 442386620, 5784634181, 81393657020, 1226280710981, 19696509177020, 335990918918981, 6066382786809020, 115578717622022981, 2317323290554617020, 48773618881154822981, 1075227108896452857020, 24776789629988523782981, 595671612103250915577020, 14915538431227735068422981, 388375922695377900515577020, 10500493527722974260252422981, 294387851083990886241251577020, 8547374142655711068302364422981, 256705485669535347568006115577020, 7966133168508387470157556764422981, 255164703765185142697060455395577020, 8428152915046701352821133945884422981, 286804646124557439494797475697635577020, 10046343320261587490171853861825564422981, 361946983469639629977827594289009635577020, 13401806107756705416338151987291892764422981, 509620811358844406343669072112782398435577020, 19888261269838598952296612667790114958364422981, 796027021978059135393314656928325779313635577020, 32656499591185747972776747396512425885838364422981, 1372349618161694150570365858847999144050545635577020, 59042913445212141486784766209665998363213966364422981, 2599228661343236626556841044804949891956424561635577020, 117022992204136957935406320450852765172427309198364422981, 5385599167607951991914899108349402127789224443761635577020, 253237642343560228651049456045262577841408407945358364422981, 12160677950192512442211239591328112460680077946732401635577020, 596121186084075048430040923729967264426872753432477838364422981, 29817972015629302995182567242334801579950768815528034161635577020, 1521300781271752977229060449226968409483308951201458077838364422981, 79136874389672125594431576407176798565806196489681819746161635577020, 4195746409670353438703582176982222851124537591877131904925838364422981, 226647950929571027033389160506045358232154026979930809227362161635577020, 12469755402728704898931711687060471601348167024469505953048477838364422981, 698528832402134746955113935776664478135149811856698952734398562161635577020, 39828390672475082008725487969655657656845234984369903192450082717838364422981, 2310732940610403489820749422545419026172017083196773021228249831522161635577020, 136372385605079432248118270297843987319730859689490659519593045108637838364422981, 8184614727136310712028222912925520393434441746671755292929684651300962161635577020, 499395599150088488088828589263699706832570087241364247806476254829684637838364422981, 30970577661237849037564293765687064381179710710016867944356691992991422562161635577020, 1951637737743202215078582414596211073163593979517251760161922907619738331037838364422981, 124935294448140961888354806920565269729701922195027940438639971467594965899362161635577020, 8122715297634329704834815499864930982456556629150409552483483162921360809076637838364422981, 536222223779808734298894424747977821661836507759648464980376643706749720339339362161635577020, 35934888694408876553950964671857486605505798806289876128721251856561212716604532637838364422981, 2444100653742421723047039453897314094441893402549077796242989486161660232995578763362161635577020, 168678351774398889649421299427375524997828651490971291597405051437095619521145068660637838364422981, 11809893318195492906423362422261723211461109491055454565957957813190913963268700251019362161635577020, 838668695249666824614744281817664287077123498629740781320472805575397766414810317446260637838364422981, 60395789681636420036909326103457008453700968286067588202502542158402987220806878956757899362161635577020, 4409719671831047920854347812021594101623099731996837427616577550212019116846376438060145780637838364422981, 326378824480107593305098680409232188044060152088938133742995349285199216584125189021190726539362161635577020, 24482761986915290498641378436184801472882183734481184704052899163370643460988742220422624697460637838364422981, 1861011939679134964489290882424961756757512351644848150968435083798473400034549180897307347526539362161635577020, 143322080088606734669581493203883323226982866872563510695813139604263517949121870899167900513721460637838364422981, 11180959098117691096787939665528162905504766712615688479353149686064571807285078895345918312663622539362161635577020, 883437253980179837588356231874303489164303450066956218734514913541773418886216781638015892528346553460637838364422981, 70686019792283622457223177491312228676420353892298796358374930144685265836593932061030928974752467526539362161635577020, 5726440000955084363422511054086796876735936890839327162387490119571704913857298124195153605274993472953460637838364422981, 469637893700329090478715695935318149767077357177154001454773443957172289821041850488811978203204173646406539362161635577020, 38985601803506257421418755484185292421669426050466292273769584084412579273175587484390779961900566697260473460637838364422981, 3275254532761847009577968823645945995578996860191583194845076448298646552018541276645494943006816186458917446539362161635577020, 278435156905293180685369975402415213484477637470382623210256836304261379607777392174394791509334107831816205753460637838364422981, 23948660226767439201080153228038844501800392914958999127628507660415900870134672884615069843391985357739844389446539362161635577020, 2083808638152760278012520365471350750727983345146397213195344003554238214857458501196068353393022808146994627392953460637838364422981, 183398833619245678836784325280074933629492985604252949471226236983335323969170740817904072891411479020269638889458246539362161635577020, 16324556327289215402380134937173544376210173250892288905442294470849835710409338998582008497896189183708810744110298553460637838364422981, 1469391408154472281907142598683652193509359788033796478036774569234135557383656537547410122872987870461908423725867813446539362161635577020, 133730761359685823973259426160811489954077506688872881313704960027919535214176338228137873831877461557289259913042140378553460637838364422981, 12304683293281621431502064899712741587623914209186541475526534622910218175769343180214908250005163885795818227069614613285446539362161635577020, 1144467823788359953327703097406527694627129315367226993710615746590336588945697972034988381266839681418043178062317463477466553460637838364422981, 107592147841885948074037582159380073309559674264815645313786758687454863280472229658194120833316575777142822473140067877053221446539362161635577020, 10222386340397173314525664517235347022088186665852557223898463812546839124314230895213571254552107892786139414391086539473362138553460637838364422981, 981455548530552515895045737024658454136095461985415238220477591025945383684777269092475904782448641089288955324574667766166512421446539362161635577020, 95211304133951567337433380212539040258207718457187560919883999728307800228797098229713403270806624010171995234355103499880901319898553460637838364422981, 9331679144749296178288752362844703433551486045621764102574354777566399269794426700653262755936922495813433855354253356929531746247461446539362161635577020, 923930475294692230638703636199822301473608196598194450583355284174609600662504729388761377005628260366723545352917984225582320362921178553460637838364422981, 92402284968649460451060535220066878189242360067783427018009608611042990392567410879552702599150890025886974375474305774025602890553942821446539362161635577020

( i(0)=i(1)=1, তবে চ্যালেঞ্জটি কেবল খালি খালি তালিকা নিয়ে কাজ করে)

পোস্ট করার সময় এই সিকোয়েন্সটি ওইআইএস-তে উপস্থিত হয়নি ।

আউটপুটটি কেবল তত্ত্বের ক্ষেত্রে কাজ করা দরকার (উপচে পড়া পূর্ণসংখ্যাগুলি সম্পর্কে উদ্বিগ্ন হবেন না, বা উদাহরণস্বরূপ সংস্থানগুলি ছড়িয়ে পড়বেন না)।

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর ins

যাইহোক, কোড-গল্ফ ভাষাগুলি আপনাকে হতাশ করতে দেবেন না - ভাল সমাধানগুলিও উঁচু হওয়া উচিত!


1
আশা করি এর সাথে সব ঠিক আছে - এটি কোনও প্রতিক্রিয়া ছাড়াই এক মাস ধরে স্যান্ডবক্সে ছিল।
জোনাথন অ্যালান

সম্পর্কিত - অনুমতি নম্বর
xnor

এগুলি প্রতিটি অন্যান্য এন্ট্রির সাথে পরিবর্তিত ফ্যাকটোরিয়ালগুলি
হ'ল

@ এক্সনর হ্যাঁ তারা হ'ল - সামনের থেকে পিছনের ক্রমটিতে আগের সূচকটি ব্যাক-টু-সামনের দিকে থাকে।
জোনাথন অ্যালান

উত্তর:


8

হাস্কেল , 32 বাইট

f 1=1
f n=product[1..n]+1-f(n-1)

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

সম্পর্ক ব্যবহার করে f(n-1) + f(n) = n! + 1। সিকোয়েন্সের সংলগ্ন সদস্যরা ফ্যাক্টরিওরিয়াল প্লাস ওয়ান যুক্ত করে:

1,   2,   5,   20,   101,   620,   4421, ...
  3     7    25    121    721   5041  ...
 2!+1  3!+1  4!+1  5!+1   6!+1  7!+1 

6

জেলি , 6 বাইট

R!ḅ-_Ḃ

0-ভিত্তিক। এটি অনলাইন চেষ্টা করুন!

@ নীলের ইএস answer উত্তরের মাধ্যমে ভারী অনুপ্রাণিত ।

ব্যাখ্যা

R!ḅ-_Ḃ
R       Create the range [1..N].
 !      Take the factorial of each.
  ḅ-    Convert from base -1; that is, sum, but alternate between adding and subtracting.
    _Ḃ  Subtract N%2.

কিন্তু কিভাবে?

আমি আমার ES6 এ প্রতিটি সংখ্যার গণনা করার জন্য সম্পর্কিত কৌশলটি উত্তর দিয়েছি । সূত্রটি হ'ল:

(n-1)(n-1)! + (n-3)(n-3)! + (n-5)(n-5)! + ...

@ নীলের ইএস answer উত্তরটি পড়ার সময় একটি উপলব্ধি আমাকে আঘাত করেছিল । এই সূত্রটি এভাবে সরল করা যেতে পারে:

(n-1)(n-1)!        + (n-3)(n-3)!            + (n-5)(n-5)!            + ...
(n(n-1!) - (n-1)!) + ((n-2)(n-3!) - (n-3)!) + ((n-4)(n-5)! - (n-5)!) + ...
(n!      - (n-1)!) + ((n-2)!      - (n-3)!) + ((n-4)!      - (n-5)!) + ...
n! - (n-1)! + (n-2)! - (n-3)! + (n-4)! - (n-5)! + ...

জেলি কোড R!ḅ-এই সূত্রটি গণনা করে। যাইহোক, প্রতিটি বিজোড় মান শেষে nএকটি অতিরিক্ত হবে + 0!, যা আমরা বিয়োগ করে যত্ন নিই n%2


1
অভিনন্দন আপনি আমার সমাধান খুঁজে পেয়েছি! (মনে রাখবেন যে এটি 0-ভিত্তিক)।
জোনাথন অ্যালান

চিত্রগুলি যে আপনি খুব ḅ-শীঘ্রই বা পরে ব্যবহার করবেন ...: P দুর্দান্ত কাজ!
ডেনিস

@ জোনাথন অ্যালান আমি যখনই বুঝতে পেরেছিলাম যে আপনি চ্যালেঞ্জ পোস্ট করেছেন যে সেখানে একটি চিত্তাকর্ষক জেলি উত্তর থাকবে। এটি খুঁজে পেতে কারও পক্ষে বেশ খানিকটা সময় লেগেছিল। দুর্দান্ত চ্যালেঞ্জ :-)
ইটিএইচ প্রোডাকশনস

4

জাভাস্ক্রিপ্ট (ES6), 38 বাইট

f=(n,x=n%2,y=1)=>n-x&&f(n,++x,y*=-x)+y

0-ইন্ডেক্স। (কোনও ব্যাখ্যা নেই কারণ আমি আসলে জানি না কেন এটি কাজ করে, দুঃখিত।)


1
ওহ, প্রতিভা। আমার উত্তরটি নেয় (n-1)*(n-1)! + (n-3)*(n-3)! + (n-5)*(n-5)! + ...যা (n! - (n-1)!) + ((n+2)! - (n-3)!) + ((n-4)! - (n-5)!) + ...আপনার উত্তর যা দেয় তার সমতুল্য ।
ইটিএইচ প্রডাকশনগুলি 10:57

3

জাভাস্ক্রিপ্ট (ES6), 44 বাইট

f=(x,n=0,g=1)=>x-n&&(x-n&1)*g*n+f(x,++n,g*n)

0-ভিত্তিক। এই সংখ্যাটি নিম্নলিখিত প্যাটার্নগুলিতে সংখ্যার ফ্যাকটোরিয়ালগুলির যোগফল হিসাবে উপস্থাপিত হতে পারে যে সুবিধাটি গ্রহণ করে:

       1   2   6  24 120 720
   0:                       
   1:  1
   4:      2
  19:  1       3
 100:      2       4
 619:  1       3       5
4420:      2       4       6

কেন? ক্রমবিন্যাসটি যথাযথ ভিত্তিতে যথাযথভাবে উপস্থাপন করা যেতে পারে : অবশিষ্ট তালিকা থেকে এন থম আইটেমটি নেওয়া সেই অবস্থানে n এর একটি অঙ্কের সাথে মিলে যায়। আমরা সর্বশেষ আইটেমটি (সর্বোচ্চ অঙ্ক) এবং প্রথম আইটেম (শূন্য) গ্রহণের মধ্যে পরিবর্তন করছি ; অতএব, কৌণিক ভিত্তিতে এই সংখ্যাগুলি উপস্থাপিত হতে পারে:

0
10
200
3010
40200
503010
6040200

ইত্যাদি।


2

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

:t"&0)P]vG:Y@!=Af

আউটপুটটি 1-সূচকযুক্ত।

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

ব্যাখ্যা

কোডটি সংজ্ঞা প্রয়োগ করে: ব্যাক-টু-ফ্রন্ট ক্রমুষ্টি তৈরি করে, সমস্ত অনুক্রম তৈরি করে, পূর্বের সমস্তকে পরবর্তীকালের সাথে তুলনা করে এবং মিলের সূচকে আউটপুট দেয়।

:        % Input n implicitly. Push [1 2 ... n]
t        % Duplicate
"        % For each: do the following n times
  &0)    %   Push the last element and then the rest of the array
  P      %   Reverse
]        % End
v        % Concatenate the whole stack vertically. This produces into a column vector
         % with the back-to-front permutation
G:       % Push [1 2 ... n] again
Y@!      % Permutations of [1 2 ... n]. Gives a matrix. Each column is a permutation
=        % Test for equality, element-wise with broadcast
A        % All: true for columns that have all entries equal to true. Gives a row vector
f        % Find: index of non-zero value. Implicitly display

2

জেলি , 9 বাইট

RU;¥/ỤUŒ¿

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

হু, আমি এফজিআইটিডাব্লু করার চেষ্টা করছিলাম। প্রথমে পোস্ট করা ডেনিসকে দেখানো হয়েছে তবে এটি আরও খাটো।

ব্যাখ্যা

RU;¥/ỤUŒ¿
R           List of numbers from 1 to {the input}
   ¥/       Left-fold the list by
 U;         prepending the reverse of the list to the next element
     Ụ      Invert permutation
      U     Reverse the list
       Œ¿   Find index of permutation

রয়ে Œ¿হিসাবে একটি বিল্ট-ইন মোটামুটি সুবিধাজনক এখানে এটির সূচক করার জন্য একটি বিন্যাস রূপান্তর, তাই অন্যান্য 7 বাইট ব্যাক টু সামনে বিন্যাস নির্মাণের জন্য দায়ী দেয়।

আমরা যেভাবে এটি করি তা হ'ল প্রথমে নিম্নলিখিত প্যাটার্নের মাধ্যমে একটি পৃথক ক্রমান্বয়ে নির্মাণ করা:

1
1 2
2 1 3
3 1 2 4
4 2 1 3 5
5 3 1 2 4 6
6 4 2 1 3 5 7

প্রতিবার, আমরা এখন পর্যন্ত আমাদের তালিকাটি উল্টাচ্ছি, তারপরে পরবর্তী পূর্ণসংখ্যা সংযোজন করব। এটি ব্যাক-টু-ফ্রন্টের ক্রিয়াকলাপ তৈরি করে না তবে এটি স্পষ্টভাবে সম্পর্কিত।

আমরা যে অনুমানটি পাওয়ার চেষ্টা করছি তা হ'ল 7 1 6 2 5 3 4। এটি কীভাবে সম্পর্কিত? আচ্ছা, আমাদের যে ক্রমশক্তি রয়েছে তার 7 তম অবস্থানে থাকা উপাদানটি 7; 1 ম পজিশনে উপাদানটি 6 হয়; ; ষ্ঠ অবস্থানে উপাদানটি একটি 5; ২ য় অবস্থানে থাকা উপাদানটি 4 এবং আরও অনেক কিছু। অন্য কথায়, এটি আমাদের যে ক্রিয়াকলাপটির বিপরীত হয় (বিপরীত ক্রমের উপাদানগুলির সাথে)। যেমন হ্রাস করার পরে, আমরা ক্রমটিটিটি উল্টাতে পারি এবং ফলাফলটি বিপরীত Uকরতে চাই আমরা পিছনের থেকে সামনের পেরুটেশনটি চাই get

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


2

জেলি , 10 8 বাইট

RṚżRFQŒ¿

2 আই বাইট ও অসাধারণ গতি বাড়ানোর জন্য @ আইস 523 কে ধন্যবাদ!

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

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

RṚżRFQŒ¿  Main link. Argument: n

R         Range; yield [1, ..., n].
 Ṛ        Reverse; yield [n, ..., 1].
   R      Range; yield [1, ..., n] again.
  ż       Zip; yield [[n, 1], ..., [1, n]].
    F     Flatten.
     Q    Unique; deduplicate the results.
      Œ¿  Compute the permutation index of [n, 1, n-1, 2, ...].

1
দেখে মনে হচ্ছে আপনি Œ¿বিল্টিনটি মিস করেছেন । তালিকাটি তৈরির জন্য আপনার পদ্ধতিটি আমার থেকে একটি বাইট কম খাটো, তাই আপনি যদি এটির i@Œ!সাথে প্রতিস্থাপন করতে পারেন তবে আপনি আমার উত্তরটি পিটিয়ে 8 বাইটে নামিয়ে আনতে সক্ষম হবেন।

সম্পূর্ণরূপে ভুলে গিয়েছিলাম যে একটি জিনিস ছিল। ধন্যবাদ!
ডেনিস

0

পিএইচপি, 86 বাইট

for($i=$argv[1];$i>0;$i--)$o+=gmp_strval(gmp_fact($i))*($i%2==$argv[1]%2?1:-1);echo$o;

GNU একাধিক যথার্থ এক্সটেনশন ব্যবহার করে ।

এই ফাংশনটি i(n)সমান যে সত্যটির সুবিধা নেয়n! - (n-1)! + (n-2)! - (n-3)! etc

ভাঙ্গন

for($i=$argv[1];$i>0;$i--) {        // Simple decreasing for loop (added { for readability)
    $o+=                            //  increment output with
        gmp_strval(gmp_fact($i))    //      $i!
    * ($i%2 == $argv[1]%2 ? 1 : -1) //      multiplied by -1 if ($i is odd when the input is even) or (if $i is even when the input is odd), else by 1
    ;
}
echo $o;                            // echoes output

0

ব্যাচ, 79 বাইট

@set/ax=%1%%2-1,y=z=1
@for /l %%i in (-%1,1,%x%)do @set/az+=y*=x-=1
@echo %z%

0-ইন্ডেক্স।


0

পাইথ, 12 বাইট

x.pQ<Q.i_UQU

0-ইন্ডেক্স।

ব্যাখ্যা

x.pQ<Q.i_UQU
      .i       Interleave
        _UQUQ  Reversed range and range
    <Q         Take first n
x              Find the index
 .pQ           In the list of permutations
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.