লেভেনস্টেইন প্রতিবেশী


20

সর্বাধিক বর্গ সংখ্যার অন্তত 1 বিভিন্ন বর্গ নম্বর যার সঙ্গে তাদের আছে Levenshtein দূরত্ব ঠিক 1. একটি প্রদত্ত স্কোয়ারের জন্য হয় , প্রতিটি বর্গ যে এই অবস্থা পূরণ করে একটি বলা হয় Levenshtein প্রতিবেশী এর । উদাহরণস্বরূপ, হ'ল লেভেনস্টাইন প্রতিবেশী , কারণ কেবল 1 টি সম্পাদনা ( ) প্রয়োজন। তবে, লেভেনস্টেইনের প্রতিবেশী নয় , কারণ এতে সর্বনিম্ন 2 টি সম্পাদনা প্রয়োজন requires নাম্বার আছে নেতৃস্থানীয় 0 সেঃ ( ) হয় না প্রতিবেশীদের Levenshtein।xx36161364162025025

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

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

এই ইনপুটটি সর্বদা চেয়ে বড় বর্গ সংখ্যা হবে । আপনার প্রোগ্রামের কোনও তাত্ত্বিক সীমা থাকা উচিত নয়, তবে যদি এটি ব্যবহারিক কারণে (যেমন 32-বিট সংখ্যার বাইরে) প্রচুর সংখ্যক ক্ষেত্রে ব্যর্থ হয়, তবে এটি পুরোপুরি ঠিক।0

যদি ইনপুটটির কোনও লেভেনস্টেইন প্রতিবেশী না থাকে তবে আউটপুটটিকে অবশ্যই এটি প্রতিফলিত করতে হবে, যেমন আউটপুট না কিছুই, একটি খালি অ্যারে / স্ট্রিং, aণাত্মক পূর্ণসংখ্যা, ইত্যাদি etc.0

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

পরীক্ষার মামলা

এই থেকে এর স্কোয়ারের জন্য ফলাফল :120

  1: 4, 9, 16, 81
  4: 1, 9, 49, 64
  9: 1, 4, 49
 16: 1, 36, 169, 196
 25: 225, 256, 625
 36: 16, 361
 49: 4, 9
 64: 4
 81: 1, 841
100: 400, 900, 1600, 8100
121: 1521
144: 1444
169: 16, 1369
196: 16, 1296, 1936
225: 25, 625, 1225, 2025, 4225, 7225
256: 25
289: 2809
324: 3249
361: 36, 961
400: 100, 900, 4900, 6400

এছাড়াও, 1024কোনও প্রতিবেশী নেই, তাই ভাল পরীক্ষার কেস।


3
আরও আকর্ষণীয় হবে প্রতিবেশীদের কি 2025
নীল

6
আমি যদি কিছু মিস করি না তবে 32 * 32 = 1024লেভেনস্টেইনের কোনও স্কোয়ার নেই।
xnor

2
@ এক্সনর হ্যাঁ, আমি বিশ্বাস করি আপনি ঠিক বলেছেন, লেভেনস্টেইনের 1024কোনও প্রতিবেশী নেই, আমি উদাহরণটি সম্পাদনা করব

6
"সবার জন্য ..." ফর্মের সমস্ত বিবৃতিগুলির জন্য, যদি কোনও কাউন্টারিক্স নমুনা পাওয়া যায়, তবে এটি বিবৃতিটির একটি কঠোর বিরোধিতা। (তবে আমি যদি ভুল করে থাকি তবে আমি একটি কঠোর আপত্তি হিসাবে কাউন্টারিক্স গ্রহণ করব))
নীল

2
আমরা কি আউটপুটে আসল নম্বরটি অন্তর্ভুক্ত করতে পারি? উদাহরণস্বরূপ 49 -> 4, 9, 49.
রবিন রাইডার

উত্তর:


7

05 এ বি  1 ই , 11 10  6 বাইট

-4 গ্রিমিকে ধন্যবাদ !! (স্কোয়ারের চেয়ে স্কোয়ারের চেয়ে 3 টি সাশ্রয় হয়; 10 ^ n সংরক্ষণ 1 ব্যবহার করে)

°Lnʒ.L

একটি পূর্ণসংখ্যা নেয়, একটি আউটপুট দেয়, সম্ভবত খালি হয় list

এটি অনলাইন চেষ্টা করুন! - এটি কারণে পাগল-ধীর°, সুতরাং এটির জন্য চেষ্টা করেও কোনও লাভ নেই9
অথবা কিছুটা দ্রুত সংস্করণ ব্যবহার করে দেখুন - এটির পরিবর্তে আটটি যুক্ত8+করে একই পদ্ধতির ব্যবহার করা হয়।

কিভাবে?

°Lnʒ.L - f(integer)    stack = n
°      - push 10^n             10^n
 L     - range                 [1,2,3,...,10^n]
  n    - square                [1,4,9,...,10^2n]
   ʒ   - filter keep if == 1:
    .L -   Levenshtein distance

1
9s«আপনার 11-byter মধ্যে থাকতে পারে । দারুণ উত্তর দিচ্ছি, যদিও! আমার কাছ থেকে +1
কেভিন ক্রুইজসেন

ধীরে 7: т+Lnʒ.L। Ridiculously 6 মন্থর: °Lnʒ.L। অসীম মন্থর 5: ∞nʒ.L
গ্রিমি

1
@ গ্রিমি ধন্যবাদ - পৃথিবীতে কেন আমি প্রথমে স্কোয়ার বোধ করিনি: /। "অসম্পূর্ণ সমস্ত" প্রশ্নের জন্য কি সেই অসীম গ্রহণযোগ্য? (আমি দেখছি যে আমরা জেনারেটরগুলিকে ফাংশন সাবমিশন হিসাবে জমা দিতে পারি, তবে যদি কোনও কোডেড স্টপ পয়েন্ট না থাকে তবে এটি আমাদের চূড়ান্ত মান কখন দেওয়া হয় তা আমরা জানতে পারি না)।
জোনাথন অ্যালান

আমি ∞nʒ.Lউত্তর হিসাবে গ্রহণযোগ্য বলে মনে করি না কারণ জমাগুলি শেষ করতে হবে । সম্পর্কিত নয়: 7 টি বাইট সংস্করণ ব্যবহারের জন্য আপনার টিআইও লিঙ্কটি , যা T+বৃহত সংখ্যার তুলনায় x 100x কম । আমার মন্তব্যটি т+নিরাপদ থাকতে (100 যোগ করুন) ব্যবহৃত হয়েছে , তবে এটি সর্বাবস্থায় 8+যথেষ্ট।
গ্রিমি

@ গ্রিমি উফ, ধন্যবাদ 1 টির জন্য প্রথম 9 স্কোয়ারটি পরীক্ষা করা দরকার বলে আমার 100 টি অতিরিক্ত ওভারকিল ছিল।
জনাথন অ্যালান

5

রেটিনা 0.8.2 , 142 138 বাইট

.?
$'¶$`#$&$'¶$`#$'¶$`$&
#
0$%'¶$%`1$%'¶$%`2$%'¶$%`3$%'¶$%`4$%'¶$%`5$%'¶$%`6$%'¶$%`7$%'¶$%`8$%'¶$%`9
A`^0
Dr`
\d+
$*
-2G`(\b1|11\1)+\b
%`1

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

.?
$'¶$`#$&$'¶$`#$'¶$`$&

প্রতিটি ডিজিটের জন্য, ক) এটি অপসারণের চেষ্টা করুন খ) এটির আগে আলাদা অঙ্কের গ) এটিকে আলাদা অঙ্কে পরিবর্তন করতে হবে। আপাতত, বিভিন্ন অঙ্কটি একটি দ্বারা চিহ্নিত করা হয় #

#
0$%'¶$%`1$%'¶$%`2$%'¶$%`3$%'¶$%`4$%'¶$%`5$%'¶$%`6$%'¶$%`7$%'¶$%`8$%'¶$%`9

প্রতিটি সম্ভাব্য ভিন্ন অঙ্কের জন্য, প্রতিটি সম্ভাব্য অঙ্কের বিকল্প করুন।

A`^0

এখন শূন্য দিয়ে শুরু হওয়া নম্বরগুলি সরান।

Dr`

সমস্ত সদৃশ নম্বর সরান। (এটি কেবল রেখাগুলি ফাঁকা ছেড়ে দেয়))

\d+
$*

অ্যানারিতে রূপান্তর করুন।

-2G`(\b1|11\1)+\b

শেষ ব্যতীত সমস্ত বর্গ সংখ্যা রাখুন (যা সর্বদা ইনপুট নম্বর হয়)।

%`1

বাকী সংখ্যা দশমিক দশকে রূপান্তর করুন।



4

পাইথন 2 , 173 167 149 148 147 144 139 138 বাইট

lambda n,I=int:{(I(I(v)**.5)**2==I(v))*I(v)for v in[`n`[:i]+`j-1`[:j]+`n`[i+k:]or 0for j in range(11)for i in range(n)for k in 0,1]}-{0,n}

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

19 + 3 + 5 + 1 = 28 ! বোন থাটেক্স অব জোনাথন অ্যালানকে


সংরক্ষণ করুন 48[p for p in...]অপ্রয়োজনীয়। আমরা একটি সেট (বা সদৃশ) ফেরত দিতে পারি। '0'<v[:1]হতে পারে '1'<=v। এটা অনেক ধীর কিন্তু range(len(a)+1)হতে পারে range(n)। যোগফল এড়াতে এর জন্য একটি পরিবর্তনশীল iএবং i+1স্লাইস ব্যবহার করুন । একটি ল্যাম্বডা ব্যবহার করুন। আপনার পূর্ববর্তী থেকে 48 টি সম্পাদনা করুন।
জোনাথন অ্যালান

@ জোনাথন অ্যালান: আমি ইতিমধ্যে কিছু একই পরিবর্তন করেছি; তবে অবশ্যই 18 বাইটের প্রশংসা করুন!
চাস ব্রাউন


@ জোনাথন অ্যালান: চমৎকার! এটি এখন সবে পঠনযোগ্য :)।
চাস ব্রাউন

1
@ জোনাথন অ্যালান: লোল, আমি আপডেট করা বন্ধ করবো - আমি রাখতে পারি না! :)
চাস ব্রাউন

3

ওরাকল এসকিউএল, 93 বাইট

select level*level from t where utl_match.edit_distance(x,level*level)=1connect by level<10*x

এসকিউএল * প্লাসে পরীক্ষা করুন।

SQL> set heading off
SQL> with t(x) as (select 225 from dual)
  2  select level*level from t where utl_match.edit_distance(x,level*level)=1connect by level<10*x
  3  /

         25
        625
       1225
       2025
       4225
       7225

6 rows selected.

2

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

for(;$argn*92>$n=++$i**2;levenshtein($argn,$n)==1&&print$n._);

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

এই স্ক্রিপ্টটি লেভেনস্টেইনের প্রতিবেশী ইনপুটটিকে _একটি অনুসরণীয় বিভাজক দ্বারা পৃথক করে এবং যদি কোনও প্রতিবেশী খুঁজে পাওয়া যায় না, তবে কিছুই মুদ্রণ করে না।

সুখের সাথে পিএইচপি লেভেনস্টাইন দূরত্বের জন্য একটি অন্তর্নির্মিত আছে ! এই স্ক্রিপ্টটি সমস্ত বর্গ সংখ্যা 1 থেকে শুরু করে input * 91, যেহেতু সমস্ত বৈধ লেভেনস্টেইন প্রতিবেশী (1 এর দূরত্ব) এই সীমার মধ্যে। তারপরে ইনপুট সহ 1 টির লেভেনস্টেইনের দূরত্ব রয়েছে এমন রেঞ্জের প্রতিটি সংখ্যা মুদ্রণ করে।


2

জাভাস্ক্রিপ্ট (ভি 8) ,  129 125  123 বাইট

স্ট্রিং হিসাবে ইনপুট নেয়। লেভেনস্টাইন প্রতিবেশীদের STDOUT এ মুদ্রণ করে।

s=>{for(t=9+s;t;t--)(t+='')**.5%1||(g=m=>m*n?1+g(m,--n)*(g(--m)-(s[m]==t[n++]))*g(m):m+n)(s.length,n=t.length)-1||print(t)}

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

মন্তব্য

s => {                        // s = input
  for(                        // loop:
    t = 9 + s;                //   start with t = '9' + s
    t;                        //   repeat while t > 0
    t--                       //   decrement t after each iteration
  )                           //
    (t += '')                 //   coerce t to a string
    ** .5 % 1 ||              //   abort if t is not a square
    ( g =                     //   g is a recursive function to test whether the
                              //   Levenshtein distance between s and t is exactly 1
      m =>                    //   m = pointer into s (explicit parameter)
                              //   n = pointer into t (defined in the global scope)
        m * n ?               //     if both m and n are greater than 0:
          1 +                 //       add 1 to the final result and add the product of:
          g(m, --n) * (       //         - a recursive call with m and n - 1
            g(--m) -          //         - a recursive call with m - 1 and n - 1
            (s[m] == t[n++])  //           minus 1 if s[m - 1] = t[n - 1]
          ) *                 //
          g(m)                //         - a recursive call with m - 1 and n
        :                     //       else:
          m + n               //         stop recursion and return m + n
    )(s.length, n = t.length) //   initial call to g with m = s.length, n = t.length
    - 1 ||                    //   abort if the final result is not 1
    print(t)                  //   otherwise, print t
}                             //

আমি জানতাম স্পাইডারমোনকি আছে print()তবে আমি বুঝতে পারি না নোডেরও এটি ছিল ...
নীল

@ নীল আসলে নোডে এটি বিদ্যমান নেই। আমি মনে করি এই সংস্করণটি ভি 8 এর কেবল একটি শেল বিল্ড - যা ব্রাউজার সংস্করণের অনেক কাছাকাছি।
আর্নল্ড

2

জেলি , 53 38 বাইট

D;Ɱ⁵ṭJœP,œṖjþ⁵Ẏṭ@ḢF${ʋʋ€$ƲẎ%⁵1ị$ƇḌƲƇḟ

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

লেভেনস্টাইন দূরত্বের জন্য কোনও অন্তর্নির্মিত নেই তাই সম্ভব সমস্ত 1-দূরত্বের সম্পাদনাগুলি তৈরি করে এবং তারপরে শূন্যের শীর্ষস্থানীয়দের বাদ দেয় এবং কেবল নিখুঁত স্কোয়ার রাখে। সদৃশ ফিল্টার করে না (অনুমতি অনুসারে)।


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