অর্ডার দেওয়ার জন্য ভেরিয়েবল গ্রুপগুলির প্রতিটি সমন্বয় তৈরি করুন


9

স্পেসিফিকেশন

mভেরিয়েবল দেওয়া হয়েছে , অর্ডার করতে প্রতিটি সমন্বয় তৈরি করুন n। উদাহরণ স্বরূপ,

অর্ডার করতে দুটি ভেরিয়েবল ( aএবং b) ম্যাপিংয়ের আউটপুট 1হবে:

  • একটি
  • AB

অর্ডার করতে দুটি ভেরিয়েবল ( aএবং b) ম্যাপিংয়ের আউটপুট 2হবে:

  • একটি
  • a 2
  • AB
  • a 2
  • ab 2
  • a 22

অর্ডার করতে দুটি ভেরিয়েবল ( aএবং b) ম্যাপিংয়ের আউটপুট 3হবে:

  • একটি
  • a 2
  • a 3
  • 3
  • AB
  • a 2
  • a 3
  • a 32
  • ab 2
  • আব 3
  • a 23
  • a 22
  • a 33

ম্যাপিং তিন ভেরিয়েবল (আউটপুট a, bএবং cঅর্ডার) 1হতে হবে:

  • একটি
  • AB
  • খ্রিস্টপূর্ব
  • এসি
  • অ আ ক খ

mঅর্ডার ম্যাপিং ভেরিয়েবলের আউটপুট nহবে:

  • প্রভৃতি

উইনিং ক্রিটারিয়া

উপরে বর্ণিত প্রতিটি সম্ভাব্য সমন্বয় আউটপুট করুন। অর্ডার কিছু যায় আসে না। আপনার কোডটিতে আপনি কী স্ক্রিনে মুদ্রণ করবেন তা বিবেচনাধীন নয়। সমস্ত গুরুত্বপূর্ণ এটি আপনার আউটপুটে যা প্রদর্শিত হবে তা সঠিক।


1
আমরা কীভাবে আউটপুট দেয়ার উদ্দেশ্যে রেখেছি? আমাদের ব্যবহার করা উচিত ^?
অ্যাডহক গার্ফ হান্টার

1
আমরা কি শূন্য বা একটিতে জিনিস বাড়িয়ে তুলতে পারি (উদাহরণস্বরূপ ^ 1)
অ্যাডহক গার্ফ হান্টার

1
m26 এর চেয়ে বেশি হলে কী হবে ? আমাদের কি উচ্চতর মানকে সমর্থন করতে হবে?
অ্যাডহক গার্ফ হান্টার

1
@ ব্যবহারকারী 1873073 সমস্যাটি সর্বাধিক অর্ডার নয় তবে পরিবর্তনশীল নামের সর্বাধিক সংখ্যা।
মার্টিন ইন্ডার

1
চলকগুলি কীভাবে দেওয়া হবে? অনেক মন্তব্য অনুমান করে ইনপুটটি বেশ কয়েকটি ভেরিয়েবল হবে তবে পাঠ্যটি given m variablesবোঝায় যে ভেরিয়েবলের একটি তালিকা দেওয়া হবে। যদি কেবলমাত্র ভেরিয়েবলের সংখ্যা দেওয়া হয় এবং 0,1,2,3..27,28,29 শক্তি ^ 0, ^ 1, ^ 2 ইত্যাদিতে উত্থাপিত হয় তা গ্রহণযোগ্য আউটপুট (যেমন আমি আপনার শেষ মন্তব্য থেকে অনুমান করছি) এটি তোলে জিনিস সহজ।
লেভেল নদী সেন্ট

উত্তর:


4

ব্র্যাচল্যাগ , 6 বাইট

j₎o⊇ᵘb

ভেরিয়েবলের তালিকা এবং ক্রমযুক্ত একটি দম্পতি হিসাবে ইনপুট নেয়। আউটপুট হল ভেরিয়েবলের তালিকার একটি তালিকা, যেখানে শক্তিগুলি বারবার ভেরিয়েবল দ্বারা প্রতিনিধিত্ব করা হয়। (যেমন "a²b" হ'ল ["a", "a", "b"])

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

j₎দ্বিতীয় ইনপুট দ্বারা বর্ণিত হিসাবে বহুবার নিজের সাথে প্রথম ইনপুটটিতে যোগ দেয়। oঅর্জিত তালিকাটি অর্ডার করে এবং তারপরে ⊇ᵘআদেশ করা তালিকার সমস্ত অনন্য সাবসেটগুলি সন্ধান করে। অবশেষে, আমরা প্রথম উপাদানটি সাথে সরিয়ে নিই b, যেহেতু এটি সর্বদা খালি উত্তর হবে, যা চ্যালেঞ্জের দ্বারা বিবেচিত নয়।


14

এল টি এক্স, 354 বাইট

আমি যখন এটি দেখলাম তখন আমি জানতাম এটি লেটেক্সে করা উচিত। লেটেক্সে সমীকরণগুলি কেবল এত খাস্তা এবং পরিষ্কার দেখায় এবং আমি ^পাওয়ার জন্য ব্যবহার করতে পারি না ।

\documentclass{article}\input tikz\usepackage{intcalc}\usepackage{ifthen}\begin{document}\typein[\a]{}\typein[\b]{}\foreach\x in{1,...,\intcalcPow{\b+1}{\a}}{\begin{equation}\foreach[count=\i]\y in{a,...,z}{\ifthenelse{\(\i<\a\)\OR\(\i=\a\)}{\y^\intcalcDiv{\intcalcMod{\x}{\intcalcPow{\b+1}{\i}}}{\intcalcPow{\b+1}{\i-1}}}{}}\end{equation}}\end{document}

ব্যাখ্যা

এখানে তিনটি প্রধান বাহিনী কাজ করছে \typein যা আমাদের কমান্ড লাইন, intcalcপ্যাকেজ যা আমাদের ভেরিয়েবল এবং লেটেক্স equationপরিবেশের সাথে গণনা করতে দেয় তা থেকে ইনপুট নিতে দেয় take


একবার আমরা ইনপুট \intcalcPow{\b+1}{\a}নেওয়ার পরে আমরা একটি লুপ শুরু করি লুপ বার, প্রতিটি ফলাফলের জন্য একবার আমরা মুদ্রণ করতে চাই। প্রতিটি লুপ আমরা একটি equationপরিবেশ শুরু করি এবং বর্ণমালার মধ্য দিয়ে লুপটি \yবর্তমান বর্ণের \iজন্য এবং বর্তমান রানের জন্য ট্র্যাক রাখি । এর \iচেয়ে বড় বা সমান হলে \aআমরা কোনও কিছু মুদ্রণ করি না (চশমা অনুসারে এটি কঠোরভাবে প্রয়োজনীয় নয় তবে ল্যাটেক্স 1 এর চেয়ে বড় মানের জন্য উপচে পড়বে যদি আমরা এটি না করি)। তারপরে আমরা \yআমাদের সমীকরণটি মুদ্রণ করি এবং এর শক্তিতে উত্থাপন করি

\intcalcDiv{\intcalcMod{\x}{\intcalcPow{\b+1}{\i}}}{\intcalcPow{\b+1}{\i-1}}

এই পুরো গণ্ডগোলের অর্থ কেবল বেসের \iতৃতীয় সংখ্যায় নেওয়া । এটি নিশ্চিত করে যে শক্তিগুলি সঠিকভাবে ডিকোড করা হয়েছে।\x\b+1

উদাহরণ আউটপুট:

3, 2 এর আউটপুট এখানে

আউটপুট


1
মনে রাখবেন যে আপনার আউটপুটে একটি ^ 0 বি ^ 0 সি ^ 0 = 1 অন্তর্ভুক্ত রয়েছে, যখন পরীক্ষার কেসগুলি না করে। এটি বলা হচ্ছে, আমি মনে করি আপনি ঠিক বলেছেন এবং পরীক্ষার কেসগুলি ভুল :) :)
গ্রেগ মার্টিন

@GregMartin হ্যাঁ, গাণিতিকভাবে ফাঁকা সেট ভাষী হওয়া উচিত en.wikipedia.org/wiki/Power_set
কার্ল Napf

@ কার্লনাপফ 1 এর সমান এক্সপ্রেশন খালি সেট নয়। বা 3 টি শূন্যযুক্ত একটি টুপলও নয়।
jpmc26

@ jpmc26 হ্যাঁ, এই গল্ফের নির্দিষ্টকরণে নেই। এটি (এন = 3 এর জন্য) এর পাওয়ারসেটের মতো {ক, ক, এ, বি, বি, বি, সি, সি, সি empty খালি সেট ছাড়াই
কার্ল ন্যাপ্ফ

@ কার্লনাপ্ফ এটি গাণিতিকভাবে এক নয়। এখানে কোনও ফাঁকা সেট জড়িত নেই। চ্যালেঞ্জটিতে নির্দিষ্ট দৈর্ঘ্যের একধরনের সেট তৈরি করা জড়িত।
jpmc26

5

গণিত, 51 50 বাইট

Rest[1##&@@@PowerRange[1,#^#2,#]~Distribute~List]&

ধরে নেওয়া "প্রদত্ত mভেরিয়েবল" মানে প্রথম ইনপুটটি ভেরিয়েবলের একটি তালিকা।

যদি প্রথম ইনপুটটি একটি পূর্ণসংখ্যা হয়, 69 বাইট

Rest[1##&@@@PowerRange[v=Unique[]~Table~#;1,v^#2,v]~Distribute~List]&

ভেরিয়েবলগুলি ফর্মটিতে রয়েছে $<integer> (উদাঃ $5)


টিআইএল PowerRangeএকটি জিনিস! আমি আপনার প্রথম জমা দেওয়ার বিটিডব্লিউ
গ্রেগ মার্টিন

4

হাস্কেল, 71 58 54 53 বাইট

n#m=tail$concat<$>mapM(\x->(\i->x<$[1..i])<$>[0..n])m

স্ট্রিংগুলির একটি তালিকা ফিরে আসে এবং এর "aabbb"জন্য আউটপুট ফর্ম্যাট ব্যবহার করে"a^2 b^3"

ব্যবহারের উদাহরণ: 3 # "ab"-> ["b","bb","bbb","a","ab","abb","abbb","aa","aab","aabb","aabbb","aaa","aaab","aaabb","aaabbb"]এটি অনলাইন চেষ্টা করুন!

অনেকগুলি বাইট আউটপুট বিন্যাসের জন্য ব্যয় হয়। আরও নমনীয় আউটপুট, উদাহরণস্বরূপ - (পরিবর্তনশীল, শক্তি) -> এর [('a',2),('b',3),('c',1)]জন্য জোড়া pairs"a^2 b^3 c^1" অনেক সাশ্রয় করতে পারে।

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

    mapM(\x->    )m      -- for each variable x in the input list m
      \i->x<$[1..i]      -- make i copies of x
             <$>[0..n]   -- for all numbers from 0 to n
                         -- in fact mapM makes all possible combinations hereof, i.e.
                         -- [["",""], ["", "b"], ["", "bb"] ... ["a",""], ["a","b"], ...]
  concat<$>              -- join all inner lists 
                         --    e.g ["aa","bbb"]  -> "aabbb"
tail                     -- drop the first (all powers = ^0)

সর্বাধিক নমনীয়তা সহ, যেমন আউটপুট ফর্ম্যাট (ভেরিয়েবল, পাওয়ার) জোড়া এবং সমস্ত-শূন্য শক্তি সহ ("a^0 b^0 c^0" ) এটি নিচে ফোটে

হাস্কেল, 25 বাইট:

f n=mapM((<$>[0..n]).(,))

ব্যবহারের উদাহরণ f 2 "ab":

[[('a',0),('b',0)],
 [('a',0),('b',1)],
 [('a',0),('b',2)],
 [('a',1),('b',0)],
 [('a',1),('b',1)],
 [('a',1),('b',2)],
 [('a',2),('b',0)],
 [('a',2),('b',1)],
 [('a',2),('b',2)]]

অল-শূন্য ক্ষমতা ড্রপ খরচ 30 মোট 5 বাইট: f n=tail.mapM((<$>[0..n]).(,))


আপনার দ্বিতীয় কোডের জন্য, [('a',0),('b',0)]আউটপুট থাকা উচিত নয় ...
JungHwan Min

@ জংহওয়ানমিন: আমার 25-বাইট সমাধানটি উত্তর হিসাবে বোঝানো হচ্ছে না। চ্যালেঞ্জের সম্মিলিত অংশটির সর্বনিম্ন সংখ্যক বাইট প্রয়োজন - কমপক্ষে হাস্কেলে a বাদ দেওয়ার a^0 b^0জন্য 5 বাইট খরচ হয়। আমি আরেকটি নোট যুক্ত করব।
নিমি

4

জেলি , 20 17 বাইট

ṗj€“”Ṣ€
ŒPçЀj“”Q

একটি ডায়াডিক লিঙ্ক (ফাংশন) যা ভেরিয়েবল নামের * এবং সর্বাধিক অর্ডার (একটি পূর্ণসংখ্যার) তালিকা গ্রহণ করে এবং একটি তালিকা প্রদান করে যেখানে প্রতিটি এন্ট্রি গুণনের সম্পূর্ণ প্রসারিত প্রতিনিধিত্ব (যেমন foo 0 বার 3 bof 2 হবে) ['bar', 'bar', 'bar', 'bof', 'bof']

* পরিবর্তনশীল নামগুলি অনন্য অক্ষরের একটি স্ট্রিং (স্ট্রিংগুলি অক্ষরের তালিকায় পরিণত হয়) হতে পারে।

এটি অনলাইন চেষ্টা করুন!- পাদলেখ লিঙ্কটিকে ডায়াড হিসাবে কল করে এবং তারপরে তালিকাগুলির তালিকা অনুসারে তালিকার লাইন ফিডগুলি এবং প্রতিটি প্রবেশের ফাঁকে ফাঁকে ফাঁকে ফাঁকে পৃথক করে।

নোট: অন্তর্ভুক্ত 0 অর্ডার (খালি পণ্য) একটি dequeue, এখানে যুক্ত করা যেতে পারে ...ŒPḊç...যে এড়ানো।

কিভাবে?

ṗj€“”Ṣ€ - Link 1, sorted results of a Cartesian power: elements, power
ṗ       - Cartesian power of elements with given power
 j€“”   - join €ach with "" (flatten each by one level)
     Ṣ€ - sort €ach

ŒPçЀj“”Q - Main link: variableNames, maximalOrder
ŒP        - power-set of variableNames (e.g for ['a','b','c'] this would be ['','a','b','c','ab','ac','bc','abc'])
   Ѐ     - for €ach mapped over right argument (i.e. over the range [1,2,...,maximalOrder])
  ç       -     call the last link (1) as a dyad (i.e. power-set results are the elements and one of the range values is the power)
     j“”  - join with "" (flatten by one level)
        Q - unique values

13 বাইট সংস্করণ যা কেবলমাত্র অনন্য অক্ষরের একক স্ট্রিং (বা অনন্য অক্ষরের তালিকার জন্য) কাজ করবে:

ŒPṗЀj“”F€Ṣ€Q

এটি চেষ্টা করুন


3

জাভাস্ক্রিপ্ট (ইএস প্রস্তাব), 142 বাইট

f=
(v,n)=>[...Array(++v**n)].map((_,i)=>i.toString(v).padStart(n,0).replace(/./g,(c,j)=>(+c?(10+j).toString(36):``)+(c>1?c.sup():``))).join`<br>`
<div oninput=o.innerHTML=f(v.value,n.value)><input id=v type=number min=1 value=1><input id=n type=number min=1 value=1><span id=o><br>a

উভয় সমর্থন **এবং padStartসমর্থন সহ একটি ব্রাউজারের প্রয়োজন , তাই ফায়ারফক্স 52 বা Chrome 57 ব্যবহার করে দেখুন।


3

গণিত 100 বাইট

এটি সম্পাদন করার জন্য আরও কার্যকর উপায় আছে!

অর্ডার করতে দুটি ভেরিয়েবল:

(Times@@@(MapThread[Power,#]&/@Outer[List,{Alphabet[][[1;;#]]},Rest@Tuples[Range[0,#2],#],1][[1]])) &

ছবি


3

বাশ + সেড, 60

আমার আগের উত্তরটির চেয়ে আলাদা, সংক্ষিপ্ত পদ্ধতির।

কমান্ড-লাইন প্যারামিটার হিসাবে ইনপুট - mভেরিয়েবল নামের কমা দ্বারা পৃথক করা তালিকা হিসাবে দেওয়া হয়, এবং nএকটি পূর্ণসংখ্যা হিসাবে:

p=eval\ printf
$p -vc %s {$1}^\\{0..$2}
$p '%s\\n' $c|sed 1d

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


পূর্ববর্তী উত্তর:

বাশ + কোর্টিলস, 91

ইওল-এ্যাস্কেপ-ব্রেস জাহান্নামে আপনাকে স্বাগতম। কখনও কখনও শেল স্ক্রিপ্ট সত্যিই কাজের জন্য সঠিক সরঞ্জাম দেয়। এই না যদি এখানে, কিন্তু এটি কাজ করে।

কমান্ড-লাইন প্যারামিটার হিসাবে ইনপুট - mভেরিয়েবল নামের কমা দ্বারা পৃথক করা তালিকা nহিসাবে এবং পূর্ণসংখ্যা হিসাবে দেওয়া হয়। আউটপুট longhand করতে বাইরে লেখা আছে - যেমন a^2আসলে লেখা আছে aaএই মন্তব্য অনুসারে এটি গ্রহণযোগ্য ।

p=eval\ printf
$p -vc {%$[$2-1]s}
$p '%s\\n' $($p %s \{{$1}${c// /,}\\\,})|tr -d {}|sort -u

এটি করার জন্য আরও ছোট উপায় থাকতে পারে।

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

ব্যাখ্যা

  • printf -vc {%$[$2-1]s}cএকটি স্ট্রিংয়ের মতো ভেরিয়েবলকে বরাদ্দ করে { }, যেখানে ফাঁকের সংখ্যা ক্রম n- 1, সুতরাং n= 1 হলে ফলাফলটি {}যদি n= 2 হয়, ফলাফল হয় { }ইত্যাদি etc.
  • ${a[$1]}mঅ্যারেতে সূচক হিসাবে ব্যবহার করে a, তাই যদি m3 হয় তবে ফলাফল হয়c
  • \{{a..${a[$1]}}${c// /,}\\,} একটি বহু অংশ ব্রেস সম্প্রসারণ:
    • \{ - একটি আক্ষরিক {
    • {$1}এটি হ'ল তালিকার ব্রেস প্রসারণ m, যেমন {a,b,c}বা ega b c
    • ${c// /,}$cকমাগুলি দিয়ে ফাঁকা স্থানগুলি প্রতিস্থাপন করে , যেমন = 3 এর {,,}জন্য nযা একটি বন্ধনী সম্প্রসারণ যা কার্যকরভাবে {a..c} nসময়ের প্রতিটি উপাদান পুনরাবৃত্তি করে
    • \\\,} - একটি আক্ষরিক ,}
  • সুতরাং m= "এ, বি" এবং n= 2 এর জন্য এটি প্রসারিত হয়{a,} {a,} {b,} {b,}
  • অভ্যন্তরটি printfপ্রদত্ত স্থানগুলি সরিয়ে দেয় {a,}{a,}{b,}{b,}, যা নিজেই একটি ধনুর্বন্ধনী সম্প্রসারণ
  • এটি প্রসারিত হয় aabb aab aab aa abb ab ab a abb ab ab a bb b b
  • বাইরের printfএই প্রতিটি উপাদানকে তার নিজস্ব লাইনে রাখে
  • sort -u সদৃশ অপসারণ
  • tr -d {}কেস সেখানে হ্যান্ডেল করতে যখন n1. = এই ক্ষেত্রে পরিবর্তনশীল ইন cহতে হবে {}যা বক্রবন্ধনী সম্প্রসারণ নয়, কিন্তু এর পরিবর্তে আক্ষরিক অক্ষর প্রবেশ করানো হয়। trসরিয়ে ফেলা হবে।

evalগুলি এবং \পলায়ন করা হয়সমস্ত প্রসারণ প্রয়োজনীয় ক্রমে ঘটে তা নিশ্চিত করার জন্য খুব সাবধানতার সাথে ।


3

রদা , 49 48 46 বাইট

f n{r=[""]{|v|r=r...[seq(0,n)|[v.._]]}_;r[1:]}

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

আমি মনে করি এটি সঠিক। এটি কোনও ভেরিয়েবল এবং এর ক্রমের মধ্যে কোনও বিভাজক ব্যবহার করে না। পূর্ববর্তী সংস্করণ ব্যবহৃত হয়েছিল! , কিন্তু আমি বুঝতে পেরেছিলাম যে এটি কঠোরভাবে প্রয়োজন হয় না।

ব্যাখ্যা:

function f(n) {
    r := [""] /* r is a list with one empty string. */
    /* Loops over the variable names in the stream. */
    for var do
        /* Concatenates every element in r to */
        /* every element in the list that contains orders of */
        /* variable var. */
        r = r...[
            push(var..x) for x in [seq(0, n)]
        ]
    done
    r[1:] /* Return elements of r not counting the first. */
}

1

পাইথন, 112 বাইট

import itertools as t
f=lambda n,v:[''.join(map(str.__mul__,v,I))for I in t.product(range(n),repeat=len(v))][1:]

ব্যবহার:

for x in f(3, 'ab'):
    print(x)

আউটপুট:

b
bb
a
ab
abb
aa
aab
aabb

115 বাইটে আরও ভাল ফর্ম্যাট :

import itertools as t
f=lambda n,v:[''.join(map('{}^{}'.format,v,I))for I in t.product(range(n),repeat=len(v))][1:]

আউটপুট (একই ব্যবহার):

a^0b^1
a^0b^2
a^1b^0
a^1b^1
a^1b^2
a^2b^0
a^2b^1
a^2b^2

এমনকি 125 বাইটে আরও ভাল :

import itertools as t
f=lambda n,v:[''.join(c+'^%s'%i for c,i in zip(v,I)if i)for I in t.product(range(n),repeat=len(v))][1:]

আউটপুট:

b^1
b^2
a^1
a^1b^1
a^1b^2
a^2
a^2b^1
a^2b^2

সর্বশেষে 4 টি বাইট ( [1:]) হ'ল খালি পণ্যটি সরানোর জন্য।

পাইথন 2 এবং 3 উভয় ক্ষেত্রেই এটি কাজ করে।


0

সি ++ 14, 146 140 বাইট

সহজ আউটপুট ফর্ম্যাট জন্য -6 বাইট।

নামবিহীন ল্যামডা, ইনপুট অভিমানী sমত std::stringএবং oহিসাবে std::ostream:

[](auto s,int n,auto&o){int l=s.size(),k,c,*p=new int[l]{1};while(!c){for(c=1,k=0;k<l;o<<s[k]<<"^"<<p[k],p[k++]*=!(c=(p[k]+=c)>n));o<<" ";}}

ব্যবহার এবং ব্যাখ্যা:

#include<iostream>
#include<string>

auto f=
[](auto s, int n, auto&o){
 int l=s.size(),              //string length
     k,                       //running variable for l
     c,                       //carry for the increment
    *p=new int[l]{1};         //init array with first elem 1
 while(!c){                   //if carry was leftover, break
  for(
   k=0,c=1;                   //always start with carry                  
   k<l;                       
    o<<s[k]<<"^"<<p[k],       //output
    p[k++]*=!(c=(p[k]+=c)>n)  
//               p[k]+=c      //inc p[k]  
//            c=(p[k]+=c)>n   //if value is greater than order  
//  p[k++]*=!(c=(p[k]+=c)>n)  //set p[k] to 0 and inc k
  );
  o<<" ";                     
 }
}
;

main(){
 f(std::string("ab"),3,std::cout);
 std::cout << "\n";
 f(std::string("abc"),2,std::cout);
}

আউটপুট:

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