দুটি প্যালিনড্রোম পর্যাপ্ত নয়


24

কিছু সংখ্যা, যেমন 14241 , বেস 10 এ প্যালিনড্রোমগুলি: আপনি যদি বিপরীত ক্রমে অঙ্কগুলি লিখেন তবে আপনি একই সংখ্যা পাবেন।

কিছু সংখ্যা 2 প্যালিনড্রোমের যোগফল; উদাহরণস্বরূপ, 110=88+ +22 , বা 2380=939+ +1441

অন্যান্য সংখ্যার জন্য, 2 প্যালিনড্রোমগুলি যথেষ্ট নয়; উদাহরণস্বরূপ, 21 টি 2 টি প্যালিনড্রোমের যোগফল হিসাবে লেখা যায় না এবং আপনি সর্বোত্তম করতে পারেন 3: 21=11+ +9+ +1

কোনও ফাংশন বা প্রোগ্রাম লিখুন যা পূর্ণসংখ্যার ইনপুট নেয় n এবং nnumber সংখ্যাটি আউটপুট করে যা 2 প্যালিনড্রোমের যোগফল হিসাবে পচে যায় না। এটি OEIS A035137 এর সাথে সম্পর্কিত

একক সংখ্যা (0 সহ) প্যালিনড্রোম।

সিকোয়েন্সগুলির জন্য মানক বিধিগুলি প্রযোজ্য:

  • ইনপুট / আউটপুট নমনীয়
  • আপনি 0- বা 1- সূচক ব্যবহার করতে পারেন
  • আপনি এই পদটি, বা nপ্রথম nপদগুলি, বা একটি অসীম অনুক্রম আউটপুট করতে পারেন

(একটি সাইডেনোট হিসাবে: সমস্ত পূর্ণসংখ্যাকে সর্বাধিক 3 টি প্যালিনড্রোমের যোগফল হিসাবে পচে যেতে পারে ))

পরীক্ষার কেস (1-ইনডেক্সড):

1 -> 21
2 -> 32
10 -> 1031
16 -> 1061
40 -> 1103

এটি কোড-গল্ফ, তাই সংক্ষিপ্ত উত্তরটি জেতে।


2
অসীম আউটপুটও কি সিকোয়েন্সের জন্য কোনও আদর্শ বিকল্প নয়?
সম্পর্কিত স্ট্রিং

@ আনরলেটেড স্ট্রিং হ্যাঁ, আমি এটিও অনুমতি দেব।
রবিন রাইডার


2
@ অ্যাবিগেল ইতিবাচক পূর্ণসংখ্যার দেওয়া হয়েছে n, অনুক্রমের এন-ম সদস্যের ওয়েস আন প্রিন্ট করবেন? প্রতিশ্রুতিবদ্ধ শব্দগুলি মনে হচ্ছে ...
ভল

2
@ নীট আসুন একটি নতুন ওইআইএস ক্রমকে একটি (এন) হিসাবে নির্ধারণ করুন = নবম ওএআইএস ক্রম যা সেই সিকোয়েন্সটি তৈরি করে এমন সর্বাধিক গল্ফ জেলি ফাংশন থেকে কম অক্ষরে প্রকাশ করা যেতে পারে।
17

উত্তর:


13

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

1 টি বাইট সংরক্ষিত হয়েছে @tsh এর জন্য ধন্যবাদ

রিটার্নস এন শব্দ, 1-ইন্ডেক্স।

i=>eval("for(n=k=1;k=(a=[...k+[n-k]+k])+''!=a.reverse()?k-1||--i&&++n:++n;);n")

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

কিভাবে?

এন দেওয়া হয়েছে , আমরা পরীক্ষা করে দেখি যে কোনও 1এন রয়েছে যা এবং এন- উভয়ই প্যালিনড্রোম। আমরা যদি এরকম একটি পাই , তবে এন হ'ল দুটি প্যালিনড্রোমের যোগফল।

এখানে কৌশলটি হ'ল k এবং এন- একই সময়ে , এন- এবং কে এর একত্রীকরণের তৈরি একক স্ট্রিং পরীক্ষা করে

উদাহরণ:

জন্য এন=2380 :

  • আমরা শেষ পর্যন্ত =1441 এবং এন - কে = 939 এ পৌঁছাতে পারিএন-=939
  • আমরা " 14419391441 " স্ট্রিংটি পরীক্ষা করে দেখি যে এটি একটি প্যালিনড্রোম

মন্তব্য

এনবি: এটি eval()পাঠযোগ্যতার জন্য ছাড়াই একটি সংস্করণ ।

i => {                       // i = index of requested term (1-based)
  for(                       // for loop:
    n = k = 1;               //   start with n = k = 1
    k =                      //   update k:
      ( a =                  //     split and save in a[] ...
        [...k + [n - k] + k] //     ... the concatenation of k, n-k and k
      ) + ''                 //     coerce it back to a string
      != a.reverse() ?       //     if it's different from a[] reversed:
        k - 1                //       decrement k; if the result is zero:
          || --i             //         decrement i; if the result is not zero:
            && ++n           //           increment n (and update k to n)
                             //         (otherwise, exit the for loop)
      :                      //     else:
        ++n;                 //       increment n (and update k to n)
  );                         // end of for
  return n                   // n is the requested term; return it
}                            //

i=>eval("for(n=k=1;k=(s=[...k+[n-k]+k])+''!=s.reverse()?k-1||i--&&++n:++n;);n")79 বাইট
tsh

পরিবর্তে i=>eval("..."), ES6 আপনাকে i=>eval`...`2 বাইট সংরক্ষণের
VFDan

এছাড়াও, যদি কোনও রিটার্ন নির্দিষ্ট না করা থাকে, তবে মূল্যায়িত শেষ অভিব্যক্তির ডিফল্টগুলি পরিষ্কার করুন, যাতে আপনি শেষেটি মুছে ফেলতে পারেন ;n
ভিএফডান

@VFDan ব্যাক-টিক কৌশলটি কাজ করে না eval() কারণ এটি তার যুক্তিকে স্ট্রিংয়ে জোর করে না। অপসারণ ;nএকটি সিনট্যাক্স ত্রুটির দিকে পরিচালিত করবে এবং ঠিক সরানোর nফলে ফাংশনটি ফিরে আসবে undefined
আর্নৌল্ড

12

জেলি ,  16 10  9 বাইট

-1 বাইট ধন্যবাদ আউটগলফার এরিককে ধন্যবাদ । প্রথম এন পদ আউটপুট ।

2_ŒḂƇ⁺ṆƲ#

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

আমি আমার আসল পদ্ধতির তুলনায় আলাদা ধারণা নিয়ে আসার চেষ্টা করেছি। আসুন চিন্তাভাবনা প্রক্রিয়াটি পর্যালোচনা করুন:

  • প্রাথমিকভাবে, পরীক্ষাটি নিম্নরূপে কাজ করেছিল: এটি সেই সংখ্যার পূর্ণসংখ্যার পার্টিশন তৈরি করেছে, তারপরে অ-প্যালিনড্রোমগুলি রয়েছে এমনগুলি ফিল্টার করে, তারপরে কত দৈর্ঘ্যের -2 যোগ্য তালিকাগুলি ছিল তা গণনা করেছিল। কোড দৈর্ঘ্যের ক্ষেত্রে এটি সম্ভবত খুব দক্ষ ছিল না।

  • এন এর পূর্ণসংখ্যা পার্টিশন তৈরি এবং তারপরে ফিল্টারিংয়ের 2 টি প্রধান অসুবিধা ছিল: দৈর্ঘ্য এবং সময়ের দক্ষতা। এই সমস্যাটি সমাধান করার জন্য, আমি ভেবেছিলাম আমি প্রথমে কেবল একটি পূর্ণসংখ্যার জোড় তৈরি করতে একটি পদ্ধতি নিয়ে আসব (এক্স,Y) জোড় তৈরি করতে পারি যা এন সমষ্টি হয় (সমস্ত স্বেচ্ছাসেদী দৈর্ঘ্যের তালিকাগুলি নয়) এই শর্তের সাথে যে উভয় সংখ্যা প্যালিনড্রোম হতে হবে।

  • কিন্তু তবুও, আমি এটি সম্পর্কে "ক্লাসিক উপায়" নিয়ে সন্তুষ্ট নই। আমি অ্যাপ্রোচগুলি স্যুইচ করেছি: জোড়া উত্পন্ন করার পরিবর্তে আসুন প্রোগ্রামটি আইডিয়োজিভাল প্যালিনড্রোমগুলিতে ফোকাস করি । এই পদ্ধতি, কেবল এক গনা আসতে পারে যা সমস্তই palindromes এক্স নিচে এন , এবং যদি এন-এক্স এছাড়াও যে শব্দ কবিতা প্রভৃতি উলটা করিয়া পড়িলেও একই থাকে হয়, তাহলে আমরা কাজ সম্পন্ন হয়।

কোড ব্যাখ্যা

2_ŒḂƇ⁺ṆƲ # - মোনাডিক লিঙ্ক বা সম্পূর্ণ প্রোগ্রাম। যুক্তি: এন।
2 # - 2 * থেকে শুরু , প্রথম এন পূর্ণসংখ্যার সন্ধান করুন ...
 _ŒḂƇ⁺ṆƲ - ... সহায়ক লিঙ্ক। ভাঙ্গন (বর্তমান পূর্ণসংখ্যা এন কল করুন):
    Ƈ - ফিল্টার। [1 ... N] সীমা তৈরি করে এবং কেবল সেগুলি রাখে ...
  ŒḂ - ... প্যালিনড্রোমস। উদাহরণ: 21 -> [1,2,3,4,5,6,7,8,9,11]
 _ - এই সমস্ত প্যালিনড্রোমগুলি এন থেকে বিয়োগ করুন উদাহরণ: 21 -> [20,19, ..., 12,10]
     ⁺ - পূর্ববর্তী লিঙ্কটি নকল করুন (এটির মতো মনে করুন যে কোনও অতিরিক্ত ŒḂƇ
            এর পরিবর্তে ⁺)। এটি কেবলমাত্র তালিকার প্যালিনড্রোমগুলিকে রাখে।
            যদি তালিকাটি খালি নয়, তবে এর অর্থ আমরা একটি জোড়া (এক্স, এনএক্স) পেয়েছি
            দুটি প্যালিনড্রোম রয়েছে (এবং স্পষ্টত x + Nx = N যাতে তারা N এর সমষ্টি হয়)।
      Ṇ - যৌক্তিক নয় (আমরা পূর্ণসংখ্যার সন্ধান করছি যার জন্য এই তালিকাটি খালি)।
       Ʋ - সর্বশেষ 4 টি লিঙ্কগুলি গ্রুপ করুন (মূলত _ŒḂƇ⁺Ṇ একক মোনাড হিসাবে কাজ করুন)।

* অন্য যে কোনও অ-শূন্য অঙ্কের কাজ করে।


7

জেলি , 11 বাইট

⁵ŻŒḂ€aṚ$EƲ#

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

সম্পূর্ণ প্রোগ্রামটি মোটামুটিভাবে এর মতো কাজ করে:

  1. ইনপুটটিতে z সেট করুন।
  2. এক্স থেকে 10 সেট করুন ।
  3. সেট আর করার []
  4. প্রত্যেক পূর্ণসংখ্যা জন্য থেকে 0 প্রয়োজন এবং সহ এক্স , চেক উভয় কিনা এবং K - এক্স palindromic হয়।
  5. যদি এল এর সমস্ত উপাদান সমান হয় (তবে এটি যদি হয় যে সমস্ত সম্ভাব্য জোড় x এর যোগফলগুলির উভয় উপাদান প্যালিনড্রমিক হয়, বা এই জাতীয় সমস্ত জোড়ের সর্বাধিক একটি উপাদান প্যালিনড্রমিক হয়), z থেকে z - 1 সেট করুন এবং এক্স যোগ করুন থেকে আর
  6. যদি z = 0 হয় , ফিরে আর এবং শেষ।
  7. X থেকে x + 1 তে সেট করুন ।
  8. পদক্ষেপ 4 এ যান।

আপনি সন্দেহ করতে পারেন যে পদক্ষেপ 5 আসলে যা করা উচিত তা করে না। X এর সমষ্টিযুক্ত সমস্ত জুটি প্যালিনড্রোমিক হয় তবে আমাদের সত্যিকার অর্থে z হ্রাস করা উচিত নয় । তবে, আমরা প্রমাণ করতে পারি যে এটি কখনই ঘটবে না:

প্রথমে একটি পূর্ণসংখ্যা বেছে নেওয়া যাক10এক্স

(,এক্স-)+ +(এক্স-)=এক্স

-1ডিএফডিএলডিএফ=ডিএল>0-1ডিএফ'ডিএল'ডিএল>0ডিএল'=ডিএফ'-1ডিএফ'-1(-1,এক্স-(-1))(-1)+ +(এক্স-(-1))=-1+ +এক্স-+ +1=এক্স

আমরা এই সিদ্ধান্তে পৌঁছেছি যে, আমরা যদি 10 এর চেয়ে বড় বা তার সমান কোনও মান x নির্ধারণের সাথে শুরু করি তবে আমরা কখনই সমস্ত জোড় অ-নেতিবাচক পূর্ণসংখ্যার পাই না যা x এর সমষ্টি হতে পারে প্যালিনড্রোমের জোড়া হতে পারে।


আহ, আমাকেও এটি মারধর করুন - প্রথম এন পদগুলি 1 বাইট সংরক্ষণ করে (আমি এসটিডিনের জন্য গিয়েছিলাম এবংŻŒḂ€aṚ$Ṁ¬µ#
জনাথন অ্যালান

পুনঃটুইট করুন যাইহোক, কেউ আমাদের উভয়কে মারধর করে। : ডি
এরিক আউটগল্ফার

প্রমাণের জন্য, আপনি কেবল এই জুটি নিতে পারবেন না (10,এক্স-10), এবং সত্য যে ব্যবহার 10একটি প্যালিনড্রোম না? তারপরে প্রমাণটি একটি লাইন।
রবিন রাইডার

@ রবিনরাইডার হ্যাঁ, এটিও সম্ভব। আমার প্রমাণটি একটি সাধারণীকরণ যা এতে এই কেসটিও অন্তর্ভুক্ত করে (11একটি প্যালিনড্রোম)।
এরিক আউটগল্ফার

3

রেটিনা , 135 102 বাইট

K`0
"$+"{0L$`\d+
*__
L$`
<$.'>$.`>
/<((.)*.?(?<-2>\2)*(?(2)$)>){2}/{0L$`\d+
*__
))L$`
<$.'>$.`>
0L`\d+

এটি অনলাইন চেষ্টা করুন! n10 বা ততোধিকের জন্য খুব ধীর । ব্যাখ্যা:

K`0

0 চেষ্টা করে শুরু করুন।

"$+"{

একই পদ্ধতি পুনরাবৃত্তি করুন nবার।

0L$`\d+
*__

বর্তমান ট্রায়াল মানটিকে অ্যানারিতে রূপান্তর করুন এবং এটি বৃদ্ধি করুন।

L$`
<$.'>$.`>

অ-নেতিবাচক পূর্ণসংখ্যার সমস্ত জোড়া তৈরি করুন যা নতুন পরীক্ষার মানটির সাথে যোগ হয়।

/<((.)*.?(?<-2>\2)*(?(2)$)>){2}/{

দু'জন প্যালিনড্রোমিক পূর্ণসংখ্যাসহ কমপক্ষে একটি জোড় থাকার সময় পুনরাবৃত্তি করুন।

0L$`\d+
*__
))L$`
<$.'>$.`>

আবার ট্রায়াল মান বৃদ্ধি এবং প্রসারিত করুন।

0L`\d+

চূড়ান্ত মানটি বের করুন।


3

হাস্কেল, 68 67 63 বাইট

[n|n<-[1..],and[p a||p(n-a)|a<-[0..n]]]
p=((/=)=<<reverse).show

একটি অসীম অনুক্রম ফেরত দেয়।

nযেখানে হয় aবা n-aসকলের জন্য প্যালিনড্রোম নয় সেখানে সমস্ত সংগ্রহ করুন a <- [0..n]

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


3

পার্ল 5 -MList::Util=any -p , 59 55 বাইট

-3 বাইটস @ নাহুয়েলফুইলুলকে ধন্যবাদ

++$\while(any{$\-reverse($\-$_)==reverse}0..$\)||--$_}{

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

দ্রষ্টব্য: কমান্ড লাইন সুইচ anyদ্বারা প্রতিস্থাপন grepএবং এড়ানোর জন্য -M, তবে বর্তমান স্কোরিং বিধিগুলির অধীনে এর জন্য আরও একটি বাইট লাগবে।


ছোট উন্নতি, -3 বাইটস , পুনরায় করার পরিবর্তে ব্যবহার করে
নাহুয়েল ফিউইলুল

এবং +এরপরে একটিটিকে আরও মুছে ফেলে while
Xcali

3

আর , 115 111 বাইট

-4 জিউসেপিকে ধন্যবাদ

function(n,r=0:(n*1e3))r[!r%in%outer(p<-r[Map(Reduce,c(x<-paste0),Map(rev,strsplit(a<-x(r),"")))==a],p,'+')][n]

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

{}মাল্টি-স্টেটমেন্ট ফাংশন কলটির জন্য অপসারণ করতে এবং অবজেক্টটি সংজ্ঞায়নের জন্য প্রয়োজনীয় বন্ধনীগুলি হ্রাস করতে বেশিরভাগ কাজ ফাংশন আর্গুমেন্টে প্যাক করা হয় isr

বেসিক স্ট্র্যাটেজি হ'ল একটি নির্দিষ্ট গণ্ডি (0 সহ) পর্যন্ত সমস্ত প্যালিনড্রোমগুলি খুঁজে পাওয়া, সমস্ত জোড়াওয়ালা যোগফলগুলি সন্ধান করুন এবং তারপরে সেই আউটপুটে নয় এন-তম সংখ্যাটি গ্রহণ করুন।

সীমাবদ্ধতা n*1000নিখুঁতভাবে একটি শিক্ষিত অনুমান থেকে বেছে নেওয়া হয়েছিল, সুতরাং আমি যে কোনওটিকে বৈধ পছন্দ হিসাবে প্রমাণ / অস্বীকার করার জন্য উত্সাহিত করি।

r=0:(n*1e3)সম্ভবত আরও দক্ষ বাউন্ড দিয়ে উন্নত করা যেতে পারে।

Map(paste,Map(rev,strsplit(a,"")),collapse="")মার্কের উত্তরটি এখানে ছিঁড়ে গেছে এবং আমার কাছে এটি অবিশ্বাস্যভাবে চালাক।

r[!r%in%outer(p,p,'+')][n]আমার কাছে কিছুটা অকেজো পড়েন।


1
111 বাইট কেবল দুটি জিনিস পুনরায় সাজিয়ে।
জিউসেপ


1

জে , 57/60 বাইট

0(](>:^:(1&e.p e.]-p=:(#~(-:|.)&":&>)&i.&>:)^:_)&>:)^:[~]

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

লিখিত সংস্করণটি ফুটারটি কল করতে পারে এমন একটি ফাংশন হিসাবে সংরক্ষণের জন্য মোট 60 টির জন্য 3 বাইট যুক্ত করে।

আরপিএলে, সরাসরি কল করে এড়ানো যায়:

   0(](>:^:(1 e.q e.]-q=:(#~(-:|.)&":&>)&i.&>:)^:_)&>:)^:[~] 1 2 10 16 40
21 32 1031 1061 1103

ব্যাখ্যা

সাধারণ কাঠামো একটি থেকে এই কৌশলের যে উত্তর দ্বারা মাইলস :

(s(]f)^:[~]) n
          ]  Gets n
 s           The first value in the sequence
         ~   Commute the argument order, n is LHS and s is RHS
        [    Gets n
      ^:     Nest n times with an initial argument s
  (]f)         Compute f s
         Returns (f^n) s

এটি আমার আসল লুপিং কৌশলটির তুলনায় কয়েকটি বাইট সংরক্ষণ করেছে, তবে যেহেতু মূল ফাংশনটি জে লেখার ক্ষেত্রে আমার প্রথম প্রচেষ্টা, তাই সম্ভবত আরও অনেক কিছু এখনও উন্নত হতে পারে।

0(](>:^:(1&e.p e.]-p=:(#~(-:|.)&":&>)&i.&>:)^:_)&>:)^:[~]
0(]                                                 ^:[~] NB. Zero as the first term switches to one-indexing and saves a byte.
   (>:^:(1&e.p e.]-p=:(#~(-:|.)&":&>)&i.&>:)^:_)&>:)      NB. Monolithic step function.
                                                 >:       NB. Increment to skip current value.
   (>:^: <predicate>                        ^:_)          NB. Increment current value as long as predicate holds.
                   p=:(#~(-:|.)&":&>)&i.&>:               NB. Reused: get palindromes in range [0,current value].
                       #~(-:|.)&":&>                      NB. Coerce to strings keeping those that match their reverse.
                 ]-p                                      NB. Subtract all palindromes in range [0,current value] from current value.
    >:^:(1&e.p e.]-p                                      NB. Increment if at least one of these differences is itself a palindrome.

এটি আমার একটি পুরানো ফর্ম্যাট, আমি তখন থেকে শিখেছি এমন অন্যান্য কৌশলগুলির সাথে একত্রে একটি 41 চর সমাধান তৈরি করে:1&(_:1&((e.((*&(-:|.)&":"0>:)&i.-))+])+)*
মাইল

1

05 এ বি 1 ই , 15 12 বাইট

°ÝDʒÂQ}ãOKIè

-3 বাইটস @ গ্রিমিকে ধন্যবাদ ।

0-ইন্ডেক্স।
বেশ ধীর গতির, তাই বেশিরভাগ পরীক্ষার ক্ষেত্রে বের হয়ে যায়।

এটি অনলাইনে চেষ্টা করুন বা এটিকে অপসারণ করে প্রথম কয়েকটি কেস যাচাই করুন

আগের 15 বাইটার সংস্করণটি আরও দ্রুত

µNÐLʒÂQ}-ʒÂQ}g_

1-ইন্ডেক্স।

এটি অনলাইনে চেষ্টা করুন বা প্রথমে আউটপুট করুনএনমান

ব্যাখ্যা:

°Ý              # Create a list in the range [0, 10**input]
  D             # Duplicate this list
   ʒÂQ}         # Filter it to only keep palindromes
       ã        # Take the cartesian product with itself to create all possible pairs
        O       # Sum each pair
         K      # Remove all of these sums from the list we duplicated
          Iè    # Index the input-integer into it
                # (after which the result is output implicitly)

µ               # Loop until the counter variable is equal to the (implicit) input-integer
 NÐ             #  Push the loop-index three times
   L            #  Create a list in the range [1, N] with the last copy
    ʒÂQ}        #  Filter it to only keep palindromes
        -       #  Subtract each from N
         ʒÂQ}   #  Filter it again by palindromes
             g_ #  Check if the list is empty
                #   (and if it's truthy: increase the counter variable by 1 implicitly)
                # (after the loop: output the loop-index we triplicated implicitly as result)

1
12: °LDʒÂQ}ãOKIè(গতির জন্য সম্ভবত 10 ^ x এর চেয়ে ভাল উচ্চতর আবদ্ধ)) আমি অনুমান ∞DʒÂQ}ãOKহয় টেকনিক্যালি 9, কিন্তু এটা প্রথম আউটপুট সামনে থেকে দূর করে বার।
গ্রিমি

@ গ্রিমি নিশ্চিত নয় কার্টেসিয়ান পণ্য অসীম তালিকায় অলস-বোঝা নিয়ে কাজ করে কিনা। যাইহোক, 12-বাইটার হিসাবে, এটি দুর্ভাগ্যক্রমে ভুল। এটি পূর্ণসংখ্যার ফিল্টার আউট করে যা 2 টি প্যালিনড্রোম যোগ করে গঠিত হতে পারে, তবে প্যালিনড্রোমগুলি নিজেরাই পূর্ণসংখ্যার নয়। আপনার ক্রম (অনুসরণ ব্যতীত ) এর মত চলে: [1,21,32,43,54,65,76,87,98,111,131,141,151,...]তবে এটির মতো হওয়ার কথা [*,21,32,43,54,65,76,87,98,201,1031,1041,1051,1052,...]( আমরা 1-ইনডেক্সড ইনপুট ব্যবহার করার কারণে প্রথম 1/ *উপেক্ষা করা যেতে পারে)।
কেভিন ক্রুইজসেন

1
@ গ্রিমি হুম, আমি অনুমান করি যে একটি সোজা-ফরোয়ার্ড ফিক্সটি 1-ভিত্তিক তালিকাটিকে L0-ভিত্তিতে পরিবর্তন করছে .. :)
কেভিন ক্রুইজসেন


0

পাইথন 3 , 107 বাইট

p=lambda n:str(n)!=str(n)[::-1]
def f(n):
 m=1
 while n:m+=1;n-=all(p(k)+p(m-k)for k in range(m))
 return m

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

প্যালিনড্রোম চেক ইনভার্ট করা 2 বাইট সংরক্ষণ করেছে :)

রেফারেন্সের জন্য স্ট্রেট ফরোয়ার্ড পজিটিভ চেক (109 বাইট):

p=lambda n:str(n)==str(n)[::-1]
def f(n):
 m=1
 while n:m+=1;n-=1-any(p(k)*p(m-k)for k in range(m))
 return m

0

এপিএল (এনএআরএস), 486 বাইট

r←f w;p;i;c;P;m;j
p←{k≡⌽k←⍕⍵}⋄i←c←0⋄P←r←⍬
:while c<w
    i+←1
    :if   p i⋄P←P,i⋄:continue⋄:endif
    m←≢P⋄j←1
    :while j≤m
         :if 1=p i-j⊃P⋄:leave⋄:endif
         j+←1
    :endwhile
    :if j=m+1⋄c+←1⋄r←i⋄:endif
:endwhile

লুপ ভাঙার জন্য শব্দটি কী? মনে হচ্ছে এটি ": ছেড়ে দিন", তাই না? {k≡⌽k←⍕⍵}in p হল প্যালিনড্রোমের পরীক্ষা। লুপ স্টোরের উপরের এই ফাংশনটি সেট পিতে পাওয়া সমস্ত প্যালিনড্রোম, যদি পি এর কিছু উপাদান ডাব্লু এর জন্য এমন হয় যে আই ডব্লু পি তেও থাকে তবে এর অর্থ আমি ঠিক নেই এবং আমাদের ইনক্রিমেন্ট আছে I ফলাফল:

  f 1
21
  f 2
32
  f 10
1031
  f 16
1061
  f 40
1103
  f 1000
4966
  f 1500
7536
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.