আপনার বেসটি 1-2-2- ট্রাইবোনাস্কিতে বাইনারি থেকে আপনার বেসে ফিরে


19

পটভূমি

১-২-৩- ত্রিবোনাচি সিকোয়েন্স

এক সেকেন্ডের জন্য কল্পনা করুন যে আপনি স্ট্যান্ডার্ড পুনরাবৃত্তি সূত্রটি নিম্নলিখিতটির সাথে প্রতিস্থাপন করে একটি ফাইবোনাকির ক্রম তৈরি করতে পারেন:

tribonacci

মূলত, পরবর্তীটি পাওয়ার জন্য শেষ দু'টিকে যোগ করার পরিবর্তে আপনি সর্বশেষ তিনটি যোগ করুন। এটি 1-2-2-Tribonacci সিকোয়েন্সের ভিত্তি।

ব্রাউন এর মানদণ্ড

ব্রাউন এর মানদণ্ডে বলা হয়েছে যে আপনি কোনও অনুক্রমের সদস্যদের যোগফল হিসাবে কোনও পূর্ণসংখ্যার মান উপস্থাপন করতে পারেন তবে:

  1. x সাব এন সমান 1

  2. n1 এর চেয়ে বড় সকলের জন্য ,x সাব এন 2 এক্স সাব এন - 1 এর চেয়ে কম

চ্যালেঞ্জের জন্য এটি কী বোঝায়

নিম্নলিখিত প্রাথমিক অবস্থার দ্বারা গঠিত 1-2-3--Tribonacci অনুক্রমের সদস্যদের যোগফল হিসাবে আপনি কোনও ধনাত্মক পূর্ণসংখ্যা বর্ণনা করতে পারেন:

প্রাথমিক শর্তাবলি

এটি হিসাবে পরিচিত, এই অনুক্রমের প্রতিটি মানের জন্য, পদগুলির মধ্যে অনুপাতটি কখনই 2 এর চেয়ে বেশি হয় না (অনুপাতের গড় প্রায় 1.839 হয়)।

এই সংখ্যার উপস্থাপন পদ্ধতিতে কীভাবে লিখবেন

ধরা যাক আপনি সামান্য এন্ডিয়ান প্রতিনিধিত্ব ব্যবহার করেন। সিকোয়েন্সের সদস্যদের লাইনের মতো করুন:

1  2  3  6 11 20 37 68

তারপরে, আপনি আপনার নম্বরটি উপস্থাপনের জন্য নিয়ে যান (আমাদের পরীক্ষার জন্য, এটি বলে দিন 63) এবং প্রদত্ত 1-2-2-Tribonacci এর মানগুলি সন্ধান করুন যা 63 এর সমষ্টি (সবচেয়ে বড় মানগুলি প্রথমে ব্যবহার করে!) । সংখ্যাটি যদি যোগফলের অংশ হয় তবে এর নিচে একটি 1 রাখুন, যদি না হয় তবে 0।

1  2  3  6 11 20 37 68
0  0  0  1  0  1  1  0

আপনি কোনও প্রদত্ত পূর্ণসংখ্যার জন্য এটি করতে পারেন - কেবলমাত্র আপনার প্রদত্ত ইনপুটটির নীচে সবচেয়ে বড় মানগুলি ব্যবহার করে যাচাই করুন!

সংজ্ঞা (শেষ অবধি)

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন nযা 1 এবং আপনার ভাষার সর্বাধিক মানের মধ্যে কিছু ধনাত্মক পূর্ণসংখ্যার ইনপুট (কোনও মানক বেসে লিখিত) দেওয়া হবে:

  1. মানটিকে সংজ্ঞায়িত 1-2-2- ট্রাইবোনাকির সংখ্যাসূচক উপস্থাপনায় রূপান্তর করুন।
  2. এই বাইনারি-মতো উপস্থাপনা ব্যবহার করে এবং এটি বাইনারি হওয়ার মতো পড়ুন। এর অর্থ হ'ল অঙ্কগুলি একই থাকে তবে পরিবর্তনের অর্থ কী।
  3. এই বাইনারি নম্বরটি ধরুন এবং এটিকে মূল সংখ্যার ভিত্তিতে রূপান্তর করুন।
  4. এই নতুন নম্বরটি আউটপুট বা ফেরত দিন।

তবে, যতক্ষণ না আউটপুটটি বৈধ, আপনার এই পদক্ষেপগুলি অনুসরণ করার দরকার নেই। যদি আপনি যাদুতে কিছু সূত্র খুঁজে পান যা সংক্ষিপ্ত (এবং গণিতের সমতুল্য), এটি নির্দ্বিধায় ব্যবহার করুন।

উদাহরণ

ফাংশন যাক fফাংশন সংজ্ঞা দ্বারা বর্ণিত হবে | [](অল্প endian যেন তা না ব্যাপার উচিত) নেয়া ব্যবস্থার প্রতিনিধিত্ব (যদি আপনি এই প্রক্রিয়া অনুসরণ করতে হবে না, শুধু এই প্রক্রিয়া বর্ণনা করা হয়):

>>> f(1)
[1]
[1]
[1]
1

>>> f(5)
[5]
[0, 1, 1]
[6]
6

>>> f(63)
[63]
[0, 0, 0, 1, 0, 1, 1]
[104]
104

আমি কি একটি পৃথক প্রোগ্রাম জমা দিতে পারি যা সংক্ষিপ্ত না হলেও প্রশ্নটি দ্রুত সমাধান করবে? লগ (লগ (এন)) + এন সময় হিসাবে লগ (এন) + এন সময়। Nth পাওয়ার ম্যাট্রিক্স যান।
fəˈnɛtɪk

@ LliwTelracs আমি আপনার সমাধান পোস্ট করা থেকে বিরত রাখতে পারি না। আপনি সঠিক ক্ষেত্রে এখনও প্রতিদ্বন্দ্বিতা করছেন তা নিশ্চিত করার জন্য কেবল আপনার জ্ঞানের সংক্ষিপ্ততর হিসাবে সমাধানের পদ্ধতিটিকে লক্ষ্য করুন।
অ্যাডিসন ক্রম্প

ভাল, এটি একটি না করতে যাচ্ছেন না অন্তত। এই ম্যাট্রিক্সের দ্রুত
ক্ষয়ক্ষতি

2
@LliwTelracs সম্ভবত এটি তখন আপনার বিদ্যমান পোস্টে একটি সংযোজন হিসাবে যুক্ত করুন।
জনাথন অ্যালান

আপনার চ্যালেঞ্জটি তাদের পক্ষে আপত্তিজনক যা চিত্রগুলি দেখাতে পারে না।
মাইন্ডউইন

উত্তর:


7

জাভাস্ক্রিপ্ট 117 111 বাইট

5 বাইট বন্ধ গল্ফ সাহায্য করার জন্য @ থেইনলিগুস্টিকে ধন্যবাদ

x=>{r=0;a=[1,2,3];i=1;while(a[++i]<x)a[i+1]=a[i]+a[i-1]+a[i-2];for(;x;i--)if(x>=a[i]){r+=1<<i;x-=a[i]}return r}

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

প্রথমে, ফাংশনটি সমস্ত ট্রাইবোনাকি নম্বর উত্পন্ন করে যতক্ষণ না ইনপুটটির চেয়ে বড় খুঁজে পায়

a=[1,2,3];i=1;for(;a[++i]<x;)a[i+1]=a[i]+a[i-1]+a[i-2];

এর পরে, এটি সংখ্যার তালিকার বিপরীতে অনুসন্ধান করে। যদি কোনও সংখ্যা ইনপুটের চেয়ে কম হয় তবে এটি 2 ^ (সেই সংখ্যার সূচক) যুক্ত করে এবং সংখ্যার দ্বারা ইনপুট হ্রাস করে।

for(;x;i--)if(x>=a[i]){r+=1<<i;x-=a[i]}

অবশেষে এটি ফলাফল দেয়।

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


1
কী a[++i]<xঅবস্থার জন্য ভিতরে বাইট সংরক্ষণ করতে?
theonlygusti

1
এছাড়াও, আপনি প্রতিস্থাপন করতে পারেন x>0সঙ্গেx । অন্য 2 বাইট সংরক্ষণ করুন।
theonlygusti

এটি বেশ ভাল অ্যালগরিদম। oo
অ্যাডিসন ক্রম্প

7

পাইথন 2 , 110 102 বাইট

রডকে -3 বাইটস ধন্যবাদ (পুনরায় কাজ করার iসাথে সাথে বুলিয়ান কাস্ট করার জন্য ঝরঝরে কৌশল )+i`+i`

n=input()
x=[3,2,1]
r=''
while x[0]<n:x=[sum(x[:3])]+x
for v in x:i=n>=v;n-=v*i;r+=`+i`
print int(r,2)

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


1
আপনি এর '01'[i]সাথে প্রতিস্থাপন করতে পারেন`+i`
রড

iএকটি বুলিয়ান একটি অন্তর্নিহিত না। সম্পাদনা করুন - ওহহ +i, ঝরঝরে।
জোনাথন অ্যালান 16

3
@ রড পাইথন 2 টিপস এবং ট্রিকগুলিতে কি সেই কৌশলটি?
অ্যাডিসন ক্রম্প

@ ভোটটোক্লোস আমি এমনটি ভাবি না
রড

7

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

এখানে, আমরা ব্যবহার করছি reduce() একটি পুনরাবৃত্তি ফাংশন । আমরা ধরে নিই যে আউটপুটটি 31-বিট (যা বৃহত্তম স্বাক্ষরবিহীন পরিমাণ যা জেএস সহজেই বিটওয়াইজ অপারেশনের জন্য সহজেই কাজ করতে পারে)।

n=>[...Array(x=31)].reduce(p=>(c=(F=k=>k<4?k:F(--k)+F(--k)+F(--k))(x--))>n?p:(n-=c,p|1<<x),0)

পারফরম্যান্স অনুযায়ী, এটি স্পষ্টভাবে খুব কার্যকর নয়।

কৌতূহলের জন্য:

  • কল করার সংখ্যার মধ্যে অনুপাত F()এন + 1 reduce()পুনরাবৃত্তি বনাম এন পুনরাবৃত্তির জন্য দ্রুত ট্রাইবোনাকি কনস্ট্যান্টের (≈ 1.83929) দিকে রূপান্তর করে। অতএব, আউটপুট প্রতিটি অতিরিক্ত বিট পূর্ববর্তী তুলনায় প্রায় দ্বিগুণ সময় ব্যয় করে।
  • 31 বিট সহ, F()ফাংশনটিকে 124 মিলিয়ন বার বলা হয়।

পরীক্ষা

নোট: এটি সম্পূর্ণ হতে 1 বা 2 সেকেন্ড সময় নিতে পারে।


বাহ, আমি যখন এটি ব্যবহার করি তখন আমার ব্রাউজারটি পিছিয়ে যায়। এক্সডি
অ্যাডিসন ক্রম্প

@ ভোটটোক্লোজ পারফরম্যান্স অনুযায়ী, এটি ভয়াবহভাবে অক্ষম। :-) যদিও পরীক্ষার কোডটি খুব বেশি সময়ের জন্য পিছিয়ে রাখা উচিত নয়। আমার বাক্সে আমি ফায়ারফক্সে প্রায় 600 মিমি এবং ক্রোমে 900 মিমি পাই। এটি কি আপনার পক্ষে খুব ধীর?
আরনাউল্ড

লাইক, 5 সেকেন্ড। এক্সডি
অ্যাডিসন ক্রম্প

@ ভোটটোক্লস এখনই কিছুটা দ্রুত হওয়া উচিত। 32 তম পুনরাবৃত্তি অর্থহীন ছিল, সুতরাং আমি আউটপুটটিকে একটি স্বাক্ষরবিহীন 31-বিট পূর্ণসংখ্যার মধ্যে সীমাবদ্ধ করেছি।
আরনাউল্ড

6

গণিত, 78 74 বাইট

Fold[#+##&,#~NumberDecompose~Reverse@LinearRecurrence[{1,1,1},{1,2,3},#]]&

LinearRecurrence[{1,1,1},{1,2,3},#]1-2-2 ট্রাইবোনাকি সংখ্যাগুলির ইনপুট সমান দৈর্ঘ্যের একটি তালিকা তৈরি করে। ( {1,1,1}এটি পূর্বের তিনটি পদগুলির যোগফলকে {1,2,3}প্রাথমিক মান হিসাবে উপস্থাপন করে)) তারপরে #~NumberDecompose~তালিকার উপাদানগুলির যোগফল হিসাবে ইনপুটটি লেখার লোভজনক উপায়টি খুঁজে পান (এটি একই ফাংশন যা কোনও আর্থিক পরিমাণকে বহুগুণে বিভক্ত করতে পারে উপলব্ধ মুদ্রা, উদাহরণস্বরূপ)। পরিশেষে, Fold[#+##&,...]ফলাফল বাইনারি তালিকাটিকে (বেস -10) পূর্ণসংখ্যায় রূপান্তর করে।

পূর্ববর্তী জমা:

Fold[#+##&,#~NumberDecompose~Reverse@Array[If[#<4,#,Tr[#0/@(#-Range@3)]]&,#]]&

যেমনটি প্রায়শই ঘটে (উপরে না থাকলেও), এই গল্ফযুক্ত সংস্করণটি 20 বা ততোধিকেরও বড় ইনপুটগুলিতে দুর্দান্ত ধীর হয় কারণ এটি (অ-অপ্টিমাইজড পুনরাবৃত্তি সহ) ট্রাইবগুলির একটি তালিকা তৈরি করে যার দৈর্ঘ্য ইনপুট; ফাইনালটির প্রতিস্থাপন #আরও যুক্তিসঙ্গত বাউন্ডের মতো Round[2Log@#+1]ফলাফলের চেয়ে আরও ভাল পারফরম্যান্সে।


Whaat? গণিতের কোনও 123Tribonacci[]বিল্টিন নেই?
পালশ

1
ঠিক এটি নয়, যদিও এটি দেখা যাচ্ছে যে বিল্টিন ব্যবহার করা কিছুটা সাহায্য করে।
গ্রেগ মার্টিন

5

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

(a!b)c=a:(b!c)(a+b+c)
e#(r,c)|c-e<0=(2*r,c)|1<2=(2*r+1,c-e)
f n=fst$foldr(#)(0,n)$take n$(1!2)3

ব্যবহারের উদাহরণ: f 63-> 104এটি অনলাইন চেষ্টা করুন!

এটি কীভাবে কাজ করে: !1-2-3-Tribonacci ক্রম তৈরি করে। দেওয়া হয়েছে 1, 2এবং 3প্রারম্ভিক পরামিতি হিসাবে, আমরা nক্রমের প্রথম উপাদানগুলি গ্রহণ করি। তারপরে আমরা ডান ফাংশন থেকে ভাঁজ করি #যা পরবর্তী উপাদানটি eথেকে বিয়োগ করে nএবং প্রযোজনীয় মানটিতে বিট সেট করে rযদি eপ্রয়োজন হয় বা বিটটিকে আনসেট করতে দেয়। বিট সেট করা দ্বিগুণ হয় rএবং যুক্ত হয়1 , সেট না করা দেওয়া কেবল দ্বিগুণ।


4

জেলি , 31 বাইট

S=³
3RUµḣ3S;µ<³Ạµ¿µŒPÇÐfṀe@ЀµḄ

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

আমি প্রায় নিশ্চিত যে জেলিতে এটি অর্জনের জন্য খুব ছোট একটি উপায় রয়েছে।

কিভাবে?

S=³ - Link 1, compare sum to input: list
S   - sum
  ³ - 3rd command line argument which is 1st program argument.
 =  - equal?

3RUµḣ3S;µ<³Ạµ¿µŒPÇÐfṀe@ЀµḄ - Main link: n
3RU                         - range(3) upended -> [3,2,1]
   µ    µ   µ¿              - while
         <³                 - less than input (vectorises)
           Ạ                - all?
    ḣ3S;                    -     head(3), sum, and concatenate
                                  [3,2,1] -> [6,3,2,1] -> [11,6,3,2,1] -> ...
              µ             - monadic chain separation, call the result x
               ŒP           - power set of x - e.g. for [6,3,2,1] -> [[],[6],[3],[2],[1],[6,3],[6,2],[6,1],[3,2],[3,1],[2,1],[6,3,2],[6,3,1],[6,2,1],[3,2,1],[6,3,2,1]]
                  Ðf        - filter keep
                 Ç          -     last link (1) as a monad (those that sum to the input)
                    Ṁ       - maximum (e.g. an input of 63 would yield [[37,20,6],[37,20,3,2,1]], the maximum of which is [37,20,6], the one with the largest numbers used)
                         µ  - monadic chain separation (to have x as the right argument below)
                     e@Ѐ   - exists in with reversed arguments mapped over x (e.g. [37,20,6] with x = [68,37,20,11,6,3,2,1] yields [0,1,1,0,1,0,0,0])
                          Ḅ - convert from binary to integer.        

4

পার্ল 6 , 93 91 বাইট

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

{my@f=1,2,3,*+*+*...*>$^n;sum @f».&{$_~~any first *.sum==$n,@f.combinations}Z*(2 X**^∞)}

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

  • প্রথমত, এটি ইনপুট থেকে বড় উপাদান পর্যন্ত 1-2-2--Tribonacci ক্রম উত্পন্ন করে:

    my @f = 1, 2, 3, *+*+* ... * > $^n;
  • তার উপর ভিত্তি করে এটি সিকোয়েন্সটির উপসেটটি আবিষ্কার করে যা ইনপুটটিকে যুক্ত করে:

    first *.sum==$n, @f.combinations
  • এর ভিত্তিতে এটি বুলিয়ানগুলির একটি তালিকা তৈরি করে যা নির্দিষ্ট করে যে ক্রমের প্রতিটি উপাদান যোগফলের অংশ:

    @f».&{$_~~any ...}
  • এবং শেষ অবধি এটি সেই তালিকার সত্য = 1, মিথ্যা = 0 টি মানকে বেস 2 হিসাবে ব্যাখ্যা করে এবং এটি একটি (বেস 10) নম্বর হিসাবে প্রদান করে:

    sum ... Z* (2 X** ^∞)

1
আপনি এটি ব্যবহার করে *>$^nএবং সংক্ষিপ্ত করতে পারেন .sum==$n। এছাড়াও স্থানটির প্রয়োজন নেই myএবং@f
ব্র্যাড গিলবার্ট বি

3

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

n=>(g=(x,y,z)=>(n>x&&g(y,z,x+y+z)*2)+!(n<x||![n-=x]))(1,2,3)

মূল সংখ্যায় না পৌঁছানো পর্যন্ত 1-2-2-Tribonacci সংখ্যা গণনা করে, তারপরে পুনরাবৃত্তি যখন খুলে যায়, ফল হিসাবে এটি দ্বিগুণ করে প্রতিটি এককে বিয়োগ করার চেষ্টা করে।

সম্পাদনা: @ আরনাউল্ডকে ধন্যবাদ 1 বাইট সংরক্ষিত


কি দারুন! খুব সুন্দর. গেল n=>(g=(x,y,z)=>(n>x&&g(y,z,x+y+z)*2)+!(n<x||![n-=x]))(1,2,3)একটি বাইট সংরক্ষণ করবেন?
আর্নল্ড

@ আরনাউল্ড আমি কিছু ব্যবহার করে খুঁজছিলাম n<x||কিন্তু এটি ![]কেবল প্রতিভা।
নীল

2

ব্যাচ, 151 148 145 বাইট

@set/ar=0,n=%1
@call:c 3 2 1
@echo %r%
@exit/b
:c
@set/as=%1+%2+%3
@if %n% gtr %3 call:c %s% %*
@set/ar*=2
@if %n% geq %3 set/an-=%3,r+=1

আমার জাভাস্ক্রিপ্ট উত্তর পোর্ট। সম্পাদনা করুন: আমার সাব্রুটাইন আর্গুমেন্টগুলি বিপরীত ক্রমে এবং 3 টি বাইট @পরিবর্তে প্রতিটি লাইনে পৃথক গুলি ব্যবহার করে সংরক্ষণ করা হয়েছে @echo off


2

জেলি , 19 18 17 বাইট

Ḣx3+
BÇL¡2ị
²Ç€»ċ

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

পটভূমি

একটি পূর্ণসংখ্যাকে 1,2,3-Tribonacci বেসে রূপান্তর করার চেষ্টা করার পরিবর্তে, বাইনারি থেকে পূর্ণসংখ্যায় বিপরীতটি করব: পূর্ণসংখ্যাগুলিকে বাইনারিতে রূপান্তর করুন, তারপরে 1,2,3-Trionacci বেস থেকে পূর্ণসংখ্যায় রূপান্তর করুন এবং ফিরে আসুন সর্বোচ্চটি যা ইনপুটটির সাথে মেলে। এটি সহজেই সম্পন্ন হয়।

আমরা ইনপুট 63 এর জন্য প্রক্রিয়াটি উদাহরণ দিয়ে দেব , বিশেষত 104 পরীক্ষিত পদক্ষেপে । বাইনারিতে, সবচেয়ে উল্লেখযোগ্য থেকে কমপক্ষে উল্লেখযোগ্য অঙ্কে, 104 সমান

 1  1  0  1  0  0  0
37 20 11  6  3  2  1

যেখানে দ্বিতীয় সারিটি সেই অঙ্কগুলির অবস্থানিক মানকে উপস্থাপন করে।

যোগ করা সংখ্যাগুলি একই পুনরাবৃত্ত সূত্র মেনে চলে তা পর্যবেক্ষণ করে আমরা ডানদিকে 1,2,3-Tribonacci ক্রম প্রসারিত করতে পারি। তিনটি অঙ্কের অঙ্কের জন্য, এটি দেয়

 1  1  0  1  0  0  0  0  0  0
37 20 11  6  3  2  1  0  1  0

এখন, বেসের 1,2,3-Tribonacci সংখ্যাটির মান গণনা করতে, আমরা পুনরাবৃত্ত সূত্রটি ব্যবহার করতে পারি। যেহেতু প্রতিটি সংখ্যা তার ডানদিকে তিনটি সংখ্যার যোগফল (উপরের সারণীতে), তাই আমরা প্রথম সংখ্যাটি সরাতে পারি এবং এটিকে বাকি অ্যারের প্রথম তিনটি সংখ্যায় যুক্ত করতে পারি। 7 টি পদক্ষেপের পরে , যা 104 এর বাইনারি অঙ্কের সংখ্যার সমান , আমরা কেবল তিনটি সংখ্যা নিয়ে বিরল।

 1  1  0  1  0  0  0  0  0  0
37 20 11  6  3  2  1  0  1  0

    2  1  2  0  0  0  0  0  0
   20 11  6  3  2  1  0  1  0

       3  4  2  0  0  0  0  0
      11  6  3  2  1  0  1  0

          7  5  3  0  0  0  0
          6  3  2  1  0  1  0

            12 10  7  0  0  0
             3  2  1  0  1  0

               22 19 12  0  0
                2  1  0  1  0

                  41 34 22  0
                   1  0  1  0

                     75 63 41
                      0  1  0

এখন, যেহেতু প্রথম এবং শেষের বাকী দুটি অঙ্কের অবস্থানগত মান 0 রয়েছে , ফলাফল মধ্যম সংখ্যা, অর্থাৎ 63

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

²Ç€»ċ   Main link. Argument: n

²       Yield n². Since 1.839² = 3.381921 > 2, the range [1, ..., n²] will contain
        the answer. Better bounds, at the cost of additional bytes are possible.
 Ç€     Map the the second helper link over [1, ..., n²].
   »    Take the maximum of n and each result.
    ċ   Count the occurrences of n.


BÇL¡2ị  Second helper link. Left argument: k. Right argument: n

B       Convert k to binary. Let's call the result A.
  L     Length; count the number of binary digits. Let's call the result l.
 Ç ¡    Apply the first helper link l times to A.
    2ị  Retrieve the second element.


Ḣ×3+    First helper link. Argument: A (array)

Ḣ       Head; pop and yield the first element of A.
 x3     Repeat it thrice.
   +    Add the result, component by component, to the beheaded A.

2

জেলি ( কাঁটাচামচ ), 17 16 বাইট

ḣ3S;µ¡
3RṚdzæFṪḄ

@ ডেনিসকে 1 বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে যারা এটি চালনা না করেও গল্ফ করেছিলেন।

এটি জেলির কাঁটাচামচের উপর নির্ভর করে যেখানে আমি হতাশাজনকভাবে এখনও একটি দক্ষ ফ্রবেনিয়াস সমাধান পরমাণু বাস্তবায়নে কাজ করছি। যারা আগ্রহী তাদের জন্য আমি FrobeniusSolveগাণিতিকের গতি মেলাতে চাই এবং ভাগ্যক্রমে তাদের পদ্ধতির ব্যাখ্যা রয়েছে ড্যানিয়েল লিচ্টব্লাউ রচিত "মেকিং চেঞ্জ অ্যান্ড ফাইন্ডিং রেপফিজিটস: ব্যালান্সিং এ ন্যাপস্যাক" পত্রিকায় ।

ব্যাখ্যা

ḣ3S;µ¡  Helper link. Input: a list
    µ   Create monadic chain
ḣ3        Take the first 3 items
  S       Sum
   ;      Prepend to the list
     ¡  Repeat it n (initial argument from main) times

3RṚdzæFṪḄ  Main link. Input: integer n
3          The constant 3
 R         Range. Makes [1, 2, 3]
  Ṛ        Reverse. Makes [3, 2, 1]
   Ç       Call the helper link on that list.
           Generates the first (n+3) 123-Tribonacci values in reverse
    ³      Get n
     æF    Frobenius solve for n using the first n 123-Tribonacci values in reverse
       Ṫ   Tail. Take the last value. The results of Frobenius solve are ordered
           where the last result uses the least
        Ḅ  Unbinary. Convert digits from base 2 to base 10

3
আপনি জানেন যে আপনি যখন সুপার-এসওল্যাংগুলির কাঁটাচামচ ব্যবহার করছেন তখন আপনি কোড গল্ফের গভীরে চলে যাচ্ছেন।
অ্যাডিসন

চান ḣ3S;µ¡¶3RṚdzæFṪḄকাজ করে? আমি আপনার কাঁটাচামচ ইনস্টল করা নেই, তাই আমি পরীক্ষা করতে পারবেন না।
ডেনিস

@ ডেনিস যে স্ট্যান্ডিন থেকে ইনপুট নিচ্ছে আর্গুমেন্ট নয়, তাই না? আর্গুমেন্ট ব্যবহার করতে আমার সমস্যা হয়েছে এবং আমি বুঝতে পেরেছি এটি অন্যভাবে কাজ করেছে।
মাইল

না, এখনও তর্ক হওয়া উচিত। ³প্রথম যুক্তি উল্লেখ করে।
ডেনিস

@ ডেনিস এনভিএম, এটি আমার যুক্তি দিয়ে কাজ করে jelly.py শেষ প্রতিশ্রুতির পরে আরও কিছু জিনিস ছিল।
মাইল মাইল

1

ডিসি , 110 102 বাইট

?se1sa2sb3sc_1sf[laddSdlbdsalcdsb++sclf1+sfle>y]dsyx0sk[lk2lf^+skler-se]sr[Lddle!<rlf1-dsf0!>z]dszxlkp

ওয়েল, মনে হয় মহান হৃদয় ও মন জয় মত না একইভাবে মনে করি। স্পষ্টতই, অ্যালগরিদমটি আমি সীমাবদ্ধতার কাছাকাছি পেতে নিয়ে এসেছিdc পেয়েছিলাম কাকতালীয়ভাবে @ ল্লিওটেলারকের উত্তরে ব্যবহৃত ঠিক একইটি। মজাদার.

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



1

বাশ + বিএসডি ইউটিলিটিস (ওএস এক্স, ইত্যাদি), 53 বাইট

jot $[2#$1**4]|egrep -v '[2-9]|11(1|$)'|sed $[2#$1]!d

বাশ + জিএনইউ ইউটিলিটিস (বিএসডি এর অধীনেও কাজ করে), 59 বাইট

seq -f2o%.fp $[2#$1**2]|dc|egrep -v '11(1|$)'|sed $[2#$1]!d

উপরের উভয় ইনপুট এবং আউটপুট বাইনারি হয়।


টিএনওতে জিএনইউ সংস্করণ ব্যবহার করে দেখুন। (এর সাথে লিঙ্কযুক্ত উদাহরণটি 111111 এর ইনপুট প্রদর্শন করে, যা বাইনারিতে 63 হয় এবং 1101000 এর আউটপুট, যা বাইনারি হয় 104)

আমি মনে করি না টিআইও একটি বিএসডি বিকল্প দেয়, তবে আপনার যদি ম্যাক উপলব্ধ থাকে তবে আপনি উভয়কেই সেখানে চেষ্টা করে দেখতে পারেন। (৫৯-বাইট প্রোগ্রামটি 53-বাইট প্রোগ্রামের চেয়ে অনেক দ্রুত)


দুর্ভাগ্যক্রমে, seqকেবল BSD সমাধানের জায়গায় ফেলে দেওয়া যায় নাjot আউটপুট ফর্ম্যাটটিseq 999999 এর উপরে আউটপুটগুলির জন্য পৃথক।

জিএনইউ ইউটিলিটিগুলির সাথে এটি কাজ করার জন্য আপনি jotউপরের সাথে প্রতিস্থাপন করতে পারেন seq -f%.fতবে একই 59 বাইটের জন্য আপনি উপরের জিএনইউ সমাধানটি ব্যবহার করতে পারেন যা অনেক দ্রুত।

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