এই নম্বরটি কি লোয়েশিয়ান?


33

একটি ধনাত্মক পূর্ণসংখ্যা kহ'ল লসচিয়ান সংখ্যা if

  • kযেমন প্রকাশ করা যেতে পারে i*i + j*j + i*jজন্য i, jপূর্ণসংখ্যার।

উদাহরণস্বরূপ, প্রথম ধনাত্মক লোশিচিয়ান সংখ্যাগুলি হ'ল: 1( i=1, j=0); 3( i=j=1); 4( i=2, j=0); 7( i=2, j=1); 9( i=-3, j=3); ... নোট করুন i, প্রদত্তের jজন্য kঅনন্য নয়। উদাহরণস্বরূপ, 9সাথে উত্পন্ন করা যেতে পারে i=3, j=0

এই সংখ্যার অন্যান্য সমতুল্য বৈশিষ্ট্যগুলি হ'ল:

  • kযেমন প্রকাশ করা যেতে পারে i*i + j*j + i*jজন্য i, jঅ নেতিবাচক পূর্ণসংখ্যার। (প্রতিটি জোড় পূর্ণসংখ্যার জন্য i, jঅ-নেতিবাচক পূর্ণসংখ্যার একজোড়া যা একই দেয় k)

  • একাধিক kহেক্সাগনগুলির একটি সেট রয়েছে যা ষড়জাগরীয় গ্রিডে পরীক্ষামূলক রূপ দেয় (এর জন্য k = 4এবং এর জন্য চিত্র দেখুন k = 7)। (এই সম্পত্তির কারণে, এই নম্বরগুলি মোবাইল সেলুলার যোগাযোগ নেটওয়ার্কগুলিতে অ্যাপ্লিকেশন সন্ধান করে ))

  • অনুক্রমের OEIS পৃষ্ঠায় আরও বৈশিষ্ট্যগুলি দেখুন iz

চ্যালেঞ্জ

একটি ধনাত্মক পূর্ণসংখ্যা দেওয়া হয়েছে , যদি এটি লসচিয়ান সংখ্যা হয় , বা অন্যথায় মিথ্যা ফলাফল হয় তবে সত্যবাদী ফলাফল আউটপুট করুন ।

প্রোগ্রাম বা ফাংশনটি হ্যান্ডেল করা উচিত (এক মিনিটেরও কম সময়ে বলুন) ইনপুটগুলি ইন 1000ডাটা টাইপ সীমাবদ্ধতা অবধি।

কোড গল্ফ। সবচেয়ে কম জয়।

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

নিম্নলিখিত সংখ্যাগুলি একটি সত্য ফলাফল আউটপুট করা উচিত:

1, 4, 7, 12, 13, 108, 109, 192, 516, 999

নিম্নলিখিত সংখ্যাগুলির একটি মিথ্যা ফলাফল আউটপুট করা উচিত:

2, 5, 10, 42, 101, 102, 128, 150, 501, 1000

সম্পর্কিত (@ পিটারটেলর দ্বারা উল্লিখিত)
লুইস মেন্ডো

ব্রুট ফোর্স অ্যালগরিদমের জন্য নোট করুন: আপনি যদি itek এ পুনরাবৃত্তি করেন তবে আপনি কিছু বাইটের ব্যয়ে সি (এল) থেকে ও (এন) এ অ্যালগরিদম জটিলতা হ্রাস করেন;
রড

i, j non-negative integersবা 9 (i=-3, j=3)- এটি কোনটি?
তিতাস

1
টাইটাস ওহ এখন আমি দেখতে পাচ্ছি। প্রতিটি জোড় সংখ্যার i, j এর জন্য একটি অ-নেতিবাচক জুটি রয়েছে যা একই কে দেয়
লুইস মেন্ডো

উত্তর:


17

জেলি , 11 9 বাইট

ÆF‘%3,2ḄȦ

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

পটভূমি

বাইনারি চতুষ্কোণ ফর্ম a ab + ab + b² এর প্রাথমিক ফলাফলগুলিতে লেখক লাসচিয়ান সংখ্যা সম্পর্কে নিম্নলিখিত উপপাদ্যটি প্রমাণ করেছেন।

উপপাদ্য ১.. যে কোন অ-নেতিবাচক পূর্ণসংখ্যার প্রয়োজনীয় + পর্যাপ্ত শর্ত a² + ab + b² আকারে থাকতে হবে তা হল, তার মূল ফ্যাক্টরীকরণে, ফর্মের মধ্যে নেই এমন 3 ব্যতীত অন্য সমস্ত প্রাইম (6 কে + 1) এমন কি বহিঃপ্রকাশ।

প্রাসঙ্গিক OEIS পৃষ্ঠায় উল্লিখিত হিসাবে , যেহেতু সমস্ত পূর্ণসংখ্যা 0 , 1 বা 2 মডিউল 3 তে একত্রিত হয় , সুতরাং 3 নম্বরটি একমাত্র প্রধান যা 0 এর সাথে একত্রিত হয় এবং ফর্মের সমস্ত সংখ্যার (6 কে + 1) একত্রিত হয় 1 , উপপাদ্যটি নিম্নরূপ বিকল্পভাবে বলা যেতে পারে।

একটি অ নেতিবাচক পূর্ণসংখ্যা এন একটি Löschian সংখ্যা যদি এবং কেবল যদি এর প্রতিটি মৌলিক উত্পাদকই আপনাকে হয় এন যে সর্বসম 2 মডিউল 3 এমনকি বহিঃপ্রকাশ আছে।

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

ÆF‘%3,2ḄȦ  Main link. Argument: n (integer)

ÆF         Yield the prime factorization of n, as prime-exponent pairs.
  ‘        Increment all primes and exponents, turning primes of the form 3k - 2
           into multiples of 3 and odd exponents into multiples of 2.
   %3,2    Reduce all incremented primes/exponents modulo 3/2.
           n is Löschian if and only if this does not result in a [0, 0] pair.
           Due to Jelly's form of vectorization, this yields [3, 2] if n = 1.
       Ḅ   Unbinary; convert each pair from base 2 to integer.
           Note that [x, y] = [0, 0] if and only if 2x + y = 0.
        Ȧ  All; return 1 if the result contains no zeroes, 0 otherwise.

17

রেটিনা , 66 63 45 43 36 বাইট

^()(\1(?<1>.\1))+(\1(.(?(4).\4)))*$

রেটিনা বলে শিরোনাম থাকা সত্ত্বেও, এটি কেবল একটি সরল .NET রেজেক্স যা লোসিয়ান সংখ্যার অবিচ্ছিন্ন উপস্থাপনা গ্রহণ করে ।

999 এবং 1000 ইনপুটগুলি এক সেকেন্ডের অধীনে ভাল লাগে।

এটি অনলাইন চেষ্টা করুন! (প্রথম লাইনটি একটি লাইনফিড-বিচ্ছিন্ন পরীক্ষা স্যুট সক্ষম করে এবং পরবর্তী দুটি সুবিধার জন্য একরেতে রূপান্তরকে যত্ন করে))

ব্যাখ্যা

সমাধানটি শ্রেণিবিন্যাসের ভিত্তিতে তৈরি হয়েছে যে ইনপুটটি i*i + j*(i + j)ইতিবাচক iএবং অ-নেতিবাচক হিসাবে লেখা যেতে পারে j(যেহেতু আমাদের ইনপুট হ্যান্ডেল করতে হবে না 0), এবং n*nএটি প্রথম nবিজোড় পূর্ণসংখ্যার যোগফল । এই গল্ফ করা ফরোয়ার্ড রেফারেন্স একটি আকর্ষণীয় অনুশীলন ছিল।

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

উদাহরণস্বরূপ, স্কোয়ারগুলি প্রথম nবিজোড় পূর্ণসংখ্যার যোগফল হিসাবে ব্যবহার করে আমরা এই জাতীয় বর্গাকার ইনপুটটি মেলাতে পারি:

(^.|..\1)+$

প্রথম পুনরাবৃত্তিতে, ..\1কাজ করতে পারে না, কারণ \1একটি মান এখনও নেই। তাই আমরা শুরু করি ^., একটি একক চরিত্রকে দলে দলে 1। পরবর্তী পুনরাবৃত্তিতে, ^.অ্যাঙ্কারের কারণে আর মেলে না, তবে এখন ..\1বৈধ। এটি পূর্ববর্তী পুনরাবৃত্তির চেয়ে আরও দুটি অক্ষরের সাথে মেলে এবং ক্যাপচারটি আপডেট করে। এইভাবে আমরা ক্রমবর্ধমান বিজোড় সংখ্যাগুলির সাথে মেলে, প্রতিটি পুনরাবৃত্তির পরে একটি বর্গক্ষেত্র পেতে।

এখন দুর্ভাগ্যক্রমে, আমরা এই কৌশলটি যেমন ব্যবহার করতে পারি না। মিলের পরে i*i, আমাদেরও iপাশাপাশি পাওয়া দরকার , যাতে আমরা এটির দ্বারা গুণ করতে পারি j। এটি করার একটি সহজ (তবে দীর্ঘ) উপায় হল ম্যাচটি পুনরাবৃত্তি i*iগ্রহণ করে iএমনটি ব্যবহার করা , যাতে আমরা iজিনিসগুলিকে দলে দলে নিয়েছি 1। আমরা এখন এটি নিষ্কাশন করতে ব্যালেন্সিং গ্রুপগুলি ব্যবহার করতে iপারি, তবে আমি যেমন বলেছিলাম যে এটি ব্যয়বহুল।

পরিবর্তে, আমি এই "একটানা বিজোড় পূর্ণসংখ্যার যোগফল" লেখার জন্য একটি ভিন্ন উপায় বের করেছি iযা শেষে ক্যাপচারিং গ্রুপেও পাওয়া যায় s অবশ্যই iতম সংখ্যাটি ঠিক 2i-1। এটি আমাদের প্রতিটি পুনরাবৃত্তিতে 1 দ্বারা ফরওয়ার্ড রেফারেন্স বাড়ানোর একটি উপায় দেয়। এই অংশ:

^()(\1(?<1>.\1))+

এই ()মাত্র গ্রুপ সম্মুখের একটি খালি ক্যাপচার পাহাড় জমে 1(initialising iকরতে 0)। এটি ^.|উপরের সাধারণ সমাধানটির তুলনায় বেশ সমান , তবে এক্ষেত্রে ব্যবহার |করা কিছুটা কৌশলযুক্ত হবে।

তারপরে আমাদের মূল লুপ রয়েছে (\1(?<1>.\1))\1আগেরটির সাথে মেলে i, (?<1>.\1)তার 1সাথে গ্রুপ আপডেট করে i+1। নিরিখে নতুন i , আমরা শুধু মিলেছে থাকেন 2i-1অক্ষর। ঠিক আমাদের যা প্রয়োজন।

আমাদের হয়ে গেলে, আমরা কিছু স্কোয়ারের সাথে মিল রেখেছি i*iএবং গোষ্ঠীতে 1এখনও iঅক্ষর রয়েছে।

দ্বিতীয় অংশটি আমি উপরে দেখানো সাধারণ বর্গাকার মিলের কাছাকাছি। আপাতত এর পিছনে থাকা বিষয়টিকে অগ্রাহ্য করা যাক 1:

(.(?(4).\1))*

এটি মূলত একই (^.|..\4)*, আমরা ব্যবহার করতে পারি না ^কারণ আমরা স্ট্রিংয়ের শুরুতে নেই। পরিবর্তে আমরা শর্তযুক্ত ব্যবহার করি, .\1কেবলমাত্র আমরা ইতিমধ্যে গোষ্ঠীটি ব্যবহার করেছি মাত্র তখন অতিরিক্তটির সাথে মেলে 4। তবে বাস্তবে এটি ঠিক একই রকম। এটি আমাদের দেয় j*j

একমাত্র জিনিসটি হ'ল j*iশব্দটি। আমরা গণনার এখনও পুনরাবৃত্তি লাগে j*jএই সত্যটি ব্যবহার করে এটির সাথে একত্রিত করি । সুতরাং প্রতিটি পুনরাবৃত্তির জন্য আমরা কার্সারটি দিয়ে এগিয়েও চলেছি । আমাদের কেবল এটি নিশ্চিত করা দরকার যে এটি গ্রুপে লিখবেন না , কারণ এটি ক্রমাগত বিজোড় সংখ্যার সাথে মিলবে। আমরা এখানে পৌঁছেছি:j*jji\14

(\1(.(?(4).\1)))*

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

@ জাভিয়ারডিয়াজ জাভা রেজেক্সের উপর ভিত্তি করে স্ট্যাক ওভারফ্লোতে সামনের পোস্টের সামনের বর্ণনার ব্যাখ্যা দেওয়ার একটি পোস্ট রয়েছে । সেগুলির উদাহরণগুলি সম্ভবত কিছুটা সহজ।
মার্টিন ইন্ডার

13

সিজেএম ( 16 15 বাইট)

{mF{~\3%2=&},!}

অনলাইন ডেমো

এটি একটি ব্লক (একটি "বেনামে ফাংশন") যা স্ট্যাক এবং পাতায় 0বা স্ট্যাকের ইনপুট নেয় 1। এটি বৈশিষ্ট্যটি ব্যবহার করে যে কোনও সংখ্যা লোসচিয়ান যদি এটির মধ্যে কোনও মৌলিক গুণক সহ 2 মড 3 এর সমান কোন মৌলিক গুণক থাকে।

ওয়ান-বাইট সাশ্রয়ের জন্য ডেনিসকে ধন্যবাদ ।


বাহ, চমৎকার চরিত্রায়ন!
লুইস মেন্ডো

6

পাইথন 2, 56 বাইট

lambda n:any(n==i*i%n+i/n*(i/n+i%n)for i in range(2*n*n))

6

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

f k=or[k==i*i+j*j+i*j|i<-[0..k],j<-[0..i]]

ব্যবহারের উদাহরণ: f 501-> False

সব সমন্বয় চেষ্টা iথেকে 0থেকে kএবং jথেকে 0থেকে i। যদি সাম্যতা কমপক্ষে একটি সংমিশ্রণের জন্য ধারণ করে তবে তা orফেরত দেয় ।Truek==i*i+j*j+i*j

@ ফ্লোয়ার একই বাইট গণনা সহ কিছুটা আলাদা সংস্করণ পেয়েছে:

f k|v<-[0..k]=or[(i+j)^2==k+i*j|i<-v,j<-v]

আমি সম্পর্কে জানেন না or, শীতল =) সম্ভবত আপনি একটি ধারণা কিভাবে এই বিকল্প বাচনভঙ্গীর উপরে নির্ভর গলফ করতে হবে: f k|v<-[0..k]=or[(i+j)^2==k+i*j|i<-v,j<-v]?
flawr

@ ফ্লোয়ার: না, কীভাবে আপনার সংস্করণটি আরও নীচে গল্ফ করা যায় তার কোনও ধারণা নেই। যদি আপনার কিছু মনে না হয় তবে আমি এটির বিকল্প সংস্করণ হিসাবে আমার উত্তরে যুক্ত করব।
নিমি

5

জাভা 8, 81 বাইট

k->{for(int i=0,j;i<=k;i++)for(j=0;j<=k;)if(i*i+j*j+i*j++==k)return 1;return 0;};

সহজ, নির্বাক বাস্তবায়ন। কাকতালীয়ভাবে সি # হিসাবে একই কোড তবে এর ->পরিবর্তে ব্যবহার করে =>


তিনটি কম বাইট কারণ আপনি কোঁকড়া ধনুর্বন্ধনী এবং সমাপ্তিকে বাদ দিতে পারেন ;। অভিশাপ!
TheLethalCoder

@ লেথলকোডার আমি আসলে পারি না, আমি ভুল করেছিলাম - সি # হিসাবে একই বাইট গণনা।
জাস্টিন

যাইহোক আমাকে আরও ভাল বোধ করে তোলে :)
TheLethalCoder

এটি নেতিবাচক iবা এটি পরীক্ষা করে দেখে না j
তিতাস


4

জেলি , 15 14 13 12 বাইট

মাইল 1 বাইট ধন্যবাদ।

²S+P
‘ṗ2’Ç€i

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

ছোট টেস্টকেসগুলি যাচাই করুন

বিপুল সংখ্যক (50 এর চেয়ে বড়) পরীক্ষা করার সময় পরামর্শের একটি শব্দ: যাবেন না।

সত্যবাদী একটি ধনাত্মক সংখ্যা। মিথ্যা শূন্য।

ব্যাখ্যা

‘ṗ2’Ç€i   main chain, argument: z
‘ṗ2’      generate all pairs of numbers between 0 and z inclusive
    ǀ    apply the helper link to each pair
      i   find the index of z in the result

²S+P   helper link, argument: [x,y] (a pair of numbers)
²      compute [x*x, y*y]
 S     x*x+y*y
  +P   x*x+y*y+x*y


আমাদের কি পিটারের বৈশিষ্ট্যটি কাজে লাগানো উচিত ...?
লুইস মেন্ডো

@ লুইস মেন্ডো এটি আকর্ষণীয় বলে মনে হচ্ছে তবে মনে হচ্ছে এটি আরও দীর্ঘ হবে
লিকি নুন

আমি মনে করি না আপনি এটি চ্যাপ্টা প্রয়োজন। আপনার সহায়ক লিঙ্কটি ইতিমধ্যে টিপলস থেকে পূর্ণসংখ্যার মানচিত্র।
মাইল

@ মাইলস যে চালাক, ধন্যবাদ।
Leaky নুন


3

এমএটিএল , 14 13 বাইট

t:0hU&+HM&*+m

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

আউটপুট 1বা 0

ব্যাখ্যা

t:    % Implicitly input number k. Duplicate. Generate vector [1 2 ...k]
0h    % Concatenate a 0. Gives [1 2 ... k 0]
U     % Square, element-wise. Gives [1 4 ... k^2 0]
&+    % Sum of all pairs from this vector. Gives a (k+1)×(k+1) matrix
HM    % Push [1 2 ... k 0] again
&*    % Product of all pairs from this vector. Gives a (k+1)×(k+1) matrix
+     % Add the two matrices
m     % True if k is a member of the resulting matrix. Implicitly display

আপনি কি জেলিকে সরিয়ে ফেলেছিলেন?
লিকি নুন

@ ল্যাকিয়ুনুন আসুন দেখি এটি কত দিন স্থায়ী হয়। হতে পারে আমি কোড ব্যাখ্যাটি কিছুটা বিলম্ব করব :
লুইস মেন্ডো

নাঃ। - - - - -
লিকি নুন

আপনার পালা - - -
লিকি নুন

@ লিকিউন আও :-( এখন আমি ব্যাখ্যাটি যোগ করতে পারি :-)
লুইস মেন্ডো

3

পাইথন, 49 বাইট

lambda n:0in[(n-3*i*i+0j)**.5%1for i in range(n)]

এর OEIS তে প্রদত্ত সমতুল্য চতুষ্কোণ ফর্মটি ব্যবহার করে n == 3*i*i+j*j। এর স্কোয়ার রুটটি গ্রহণ করে এবং এটির পূর্ণসংখ্যা হয় কিনা তা পরীক্ষা করে n-3*i*iকোনটির জন্য নিখুঁত বর্গক্ষেত্র কিনা তা পরীক্ষা করুন i0 0 মডুলোর সমান 1 Note দ্রষ্টব্য যে পাইথন ভাসমান বিন্দু ত্রুটি ছাড়াই নিখুঁত স্কোয়ারের বর্গমূলকে গণনা করে। +0jএটি একটি জটিল সংখ্যা তোলে একটি নেতিবাচক বর্গমূল একটি ত্রুটি এড়ানো।


3

সি (জিসিসি), 71 69 বাইট

i,j,r;f(n){for(r=i=n+1;i--;)for(j=n;j--;)r*=n!=i*i+j*j+i*j;return!r;}

69 বাইট: i,j,r;f(n){for(r=i=n+1;i--;)for(j=n;j--;)r*=n!=i*i+j*j+i*j;return!r;}
owacoder

এটি নেতিবাচক iবা এটি পরীক্ষা করে দেখে না j
তিতাস

@ টিটাস প্রশ্নটি অ-নেতিবাচক iএবং নির্দেশ করে j
orlp

ইতিবাচক k, কিন্তু না iএবং j। উদাহরণগুলি ঘনিষ্ঠভাবে দেখুন।
তিতাস

চ্যালেঞ্জ থেকে বরাত দিয়ে @Titus: " kযেমন প্রকাশ করা যেতে পারে i*i + j*j + i*jজন্য i, j অ নেতিবাচক পূর্ণসংখ্যার।" আপনি কাছ থেকে দেখুন।
orlp

2

সি #, 84 82 81 বাইট

k=>{for(int i=0,j;i<=k;++i)for(j=0;j<=k;)if(i*i+j*j+i*j++==k)return 1;return 0;};

একটি নিষ্পাপ সমাধান। 1 = সত্য, 0 = মিথ্যা


2

ভিবিএ, 68 67 বাইট

Function L(N):For a=0To N:For b=0To a:L=L+(N=a^2+a*b+b^2):Next b,a

নিষ্পাপ অনুসন্ধান, এন = 1000 এর জন্য কিছুটা কমিয়ে দেওয়া শুরু করুন। এক্সেল জিরো রিটার্নকে মিথ্যা হিসাবে স্বীকৃতি দেয়, অন্য সমস্ত রিটার্ন সত্য বলে প্রমাণিত হয়।

নোট i এবং j এর তদন্তের প্রয়োজন নেই, যেহেতু i> j> = 0 দেওয়া হয়েছে :

(-আই) 2 + (-আই) (- জে) + (-জে) 2 = আমি 2 + আইজ + জ 2

( আমি এবং জে হিসাবে একই ফলাফল )

(-আই) 2 + (-আই) জে + জ 2 = i 2 - আইজ + জ 2

i 2 + i (-j) + (-j) 2 = i 2 - ij + j 2

(যদি একটি নেতিবাচক হয় তবে এটি কোনটি গুরুত্বপূর্ণ নয়) এবং তারপরে

(ij) 2 + (ij) j + j 2 = (i 2 - 2ij + j 2 ) + (ij - j 2 ) + j 2 = i 2 - ij + j 2

এবং যেহেতু (আইজে) এবং জে উভয়ই অ-নেতিবাচক, তাই নেতিবাচক সংখ্যার সাথে জড়িত লোশিচিয়ান সংখ্যাগুলির যে কোনও প্রজন্ম অ-নেতিবাচক সংখ্যা ব্যবহার করে অর্জন করা যেতে পারে।


একটি বাইট সংরক্ষণ করেছেন Next:Next-> Next b,aটেলর স্কটকে ধন্যবাদ।


এটি নেতিবাচক iবা এটি পরীক্ষা করে দেখে না j
তিতাস

"অন্যান্য সমতুল্য বৈশিষ্ট্যগুলি" এর অধীনে প্রথম পয়েন্টটি দেখুন। নোট করুন যে সমস্ত পরীক্ষার কেস সঠিকভাবে আসে। আমি আমার উত্তরের গাণিতিক ন্যায়সঙ্গততা যুক্ত করব (যদি পারি তবে)।
জোফান

দুঃখিত, আমার দোষ ওভাররেড যে এটি প্রয়োজনীয় নয়।
তিতাস

@Joffan আপনি ঘনীভূত করতে Next:NextকরতেNext b,a
টেলর স্কট

@ জোফান আবার আপনার সমাধানের দিকে তাকিয়ে থাকতে পারে এটিই আপনার সমাধানের :End Functionশেষে নিখোঁজ হওয়ার কারণে
টেলর স্কট

1

জাভাস্ক্রিপ্ট (বহিরাগত গ্রন্থাগার ব্যবহার করে - গণনাযোগ্য) (by৩ বাইট)

k=>_.Range(0,k+1).Any(i=>_.Range(0,k+1).Any(j=>i*i+j*j+i*j==k))

লাইব্রেরিতে লিঙ্ক করুন: https://github.com/mvegh1/ অগণিত কোড ব্যাখ্যা: 0 থেকে কে পর্যন্ত একটি পূর্ণসংখ্যা তৈরি করুন (এটি "i" রেঞ্জ কল করুন), এবং পরীক্ষা করুন যদি কোনও "i" নির্দিষ্ট ভবিষ্যদ্বাণীকে সন্তুষ্ট করে কিনা। সেই প্রাকটিকটি 0 থেকে কে পর্যন্ত একটি পরিসীমা তৈরি করে (এটিকে "জে" ব্যাপ্তি বলুন) এবং পরীক্ষা করে যদি কোনও "জ" একটি নির্দিষ্ট প্রাকটিকে সন্তুষ্ট করে। সেই ভবিষ্যদ্বাণীটি হ'ল লোশিয়ান সূত্র

এখানে চিত্র বর্ণনা লিখুন


1

পার্ল 6 ,  52 51  50 বাইট

->\k{?first ->(\i,\j){k==i*i+j*j+i*j},(0..k X 0..k)}
->\k{?grep ->(\i,\j){k==i*i+j*j+i*j},(0..k X 0..k)}

{?grep ->(\i,\j){$_==i*i+j*j+i*j},(0..$_ X 0..$_)}

ব্যাখ্যা:

{
  # Turn the following into a Bool
  # ( Technically not necessary as a list of 1 or more values is truthy )
  ?

  # find all where the code block returns a truthy value
  grep

  # pointy block that takes one value (list of 2 values)
  # and gives each of the values in it a name
  ->
    $ ( \i, \j )
  {
    # return true if the definition matches
    $_ == i*i + j*j + i*j
  },

  # a list of 2 element lists (possible i and j values)
  ( 0..$_ X 0..$_ )
}

টেস্ট:

use v6.c;
use Test;

my @true = 0, 1, 4, 7, 12, 13, 108, 109, 192, 516, 999;
my @false = 2, 5, 10, 42, 101, 102, 128, 150, 501, 1000;

plan (@true + @false) * 2;

my &is-loeschian = {?grep ->(\i,\j){$_==i*i+j*j+i*j},(0..$_ X 0..$_)}

for |(@true X True), |(@false X False) -> ( $input, $expected ) {
  my ($result,$seconds) = $input.&time-it;
  is $result, $expected, ~$input;
  cmp-ok $seconds, &[<], 60, "in $seconds seconds"
}

sub time-it ( $input ) {
  my $start = now;
  my $result = $input.&is-loeschian;
  my $finish = now;
  return ( $result, $finish - $start )
}
1..42
ok 1 - 0
ok 2 - in 0.00111763 seconds
ok 3 - 1
ok 4 - in 0.00076766 seconds
...
ok 19 - 516
ok 20 - in 0.19629727 seconds
ok 21 - 999
ok 22 - in 0.1126715 seconds
ok 23 - 2
ok 24 - in 0.0013301 seconds
ok 25 - 5
ok 26 - in 0.00186610 seconds
...
ok 37 - 150
ok 38 - in 0.83877554 seconds
ok 39 - 501
ok 40 - in 9.2968558 seconds
ok 41 - 1000
ok 42 - in 37.31434146 seconds

এটি নেতিবাচক iবা এটি পরীক্ষা করে দেখে না j
তিতাস

@ টিটাস কম পরিমাণে (0..$_ X 0..$_)থাকলে একটি খালি তালিকা তৈরি করে , তাই নেতিবাচক জন্য পরীক্ষা করার প্রয়োজন নেই এবং কারণ তারা কখনও নেতিবাচক হবে না। যেহেতু এটি কেবলমাত্র পজিটিভ লোয়েশিয়ান সংখ্যার জন্যই উত্পাদন করার কথা , তাই আমাকে নেতিবাচক ক্ষেত্রে বিশেষ কিছু করতে হবে না। $_0ijTrue
ব্র্যাড গিলবার্ট বিবিগিলস

9 = (3*3)+(-3*-3)+(3*-3)একটি ইতিবাচক Loechian সঙ্গে i=3, j=-3; তবে আমি ওভারড্রেড করেছি যে প্রতিটি লোসচিয়ান সংখ্যার অ-নেতিবাচক iএবং থাকে j। সুতরাং নেতিবাচক সংখ্যাগুলি সন্ধানের প্রয়োজন নেই। সুতরাং আসলে আমরা এই মন্তব্যগুলি মুছতে পারে। বাগিংয়ের জন্য দুঃখিত; আমার ভুল.
তিতাস

@ টিটাস {grep ->(\i,\j){$_==i*i+j*j+i*j},(-$_..$_ X -$_..$_)}(9)ফলাফলগুলিতে কোড পরিবর্তন করছে ((-3,0),(-3,3),(0,-3),(0,3),(3,-3),(3,0))। সত্যিই আমি সম্ভবত অন্যান্য উত্তর থেকে এটি অভিযোজিত।
ব্র্যাড গিলবার্ট 222

1

পাওয়ারশেল ভি 2 +, 63 56 55 বাইট

param($k)(0..$k|%{0..($i=$_)|%{$i*($i+$_)+$_*$_}})-eq$k

ইনপুট নেয় $k, দু'বার উপরের দিকে লুপ করে (বাইরের লুপ $i = 0 to $k, অভ্যন্তরীণ লুপ $j = 0 to $i), প্রতিটি পুনরাবৃত্তি i*i + j*j + i*j(সংক্ষিপ্ত i*(i+j) + j*j) এর ফলাফল উত্পন্ন করে । এই ফলাফলগুলি পেরেন্সে আবদ্ধ হয়, এবং এর অ্যারে হিসাবে পাস হয় -eq$k। এটি কেবলমাত্র ইনপুট সমান উপাদান নির্বাচন করতে ফিল্টার হিসাবে কাজ করে। সত্যের জন্য একটি ননজারো (পিছনে নম্বর) আউটপুট দেয় বা মিথ্যা জন্য কিছুই (খালি নয়)। 1000আমার মেশিনে প্রায় 15 সেকেন্ডের মধ্যে প্রক্রিয়াগুলি ।

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

PS C:\Tools\Scripts\golfing> (1,4,7,12,13,108,109,192,516,999|%{.\loeschian-numbers.ps1 $_})-join','
1,4,7,12,13,108,109,192,516,999

PS C:\Tools\Scripts\golfing> (2,5,10,42,101,102,128,150,501,1000|%{.\loeschian-numbers.ps1 $_})-join','

PS C:\Tools\Scripts\golfing>

1

পার্ল, 54 + 1 ( -nপতাকা) = 55 বাইট

for$i(0..$_){for$j(0..$_){$i*$i+$j*$j+$i*$j-$_?1:say}}

চালানোর জন্য প্রয়োজন -nএবং -M5.010পতাকা:

perl -nE 'for$i(0..$_){for$j(0..$_){$i*$i+$j*$j+$i*$j-$_?1:say}}'

যদি নম্বরটি লোশিয়ান সংখ্যা হয় এবং কিছু না কিছু থাকে তবে আউটপুট দেয়।

এই বাস্তবায়নটি বেশ বিরক্তিকর, সুতরাং এখানে 87 টি বাইটের জন্য, রেজেেক্স ভিত্তিক, কেবল চোখের জন্য:

perl -pE '$_=(1 x$_)=~/^(.*)(??{$1x(-1+length$1)})(.*)(??{$2x(-1+length$2)})(??{$1x length$2})$/'

এটিকে দিয়ে যত্নবান, ব্যাকট্র্যাকিংয়ের ফলে প্রচুর স্মৃতি ব্যবহৃত হবে, সুতরাং সংখ্যাগুলি খুব বড় করে দেখার চেষ্টা করবেন না! (বিশেষত এমন সংখ্যা যা লোয়েশিয়ান নয়)


1

ডায়ালগ এপিএল , 19 বাইট

⊢∊(∘.(×-⍨2*⍨+)⍨0,⍳)

K ∊ ( i + j ) ² - ij , কোনও 0 ≤ i , jk এর জন্য কিনা তা পরীক্ষা করে ।

    হয় k
সদস্য
    ∘.সব সমন্বয়
        × আমি বার
        -⍨ থেকে বিয়োগ
        2*⍨বর্গ
        + আমি প্লাস
     সবার জন্য আমি এবং মধ্যে
    0,শুন্যতে prepended
    মাধ্যমে পূর্ণসংখ্যার 1

1000 আমার M540 উপর 3.3 সেকেন্ড এবং এমনকি কম লাগে TryAPL


1

মতলব, 53 52 বাইট

n=input('');[a b]=ndgrid(0:n);find((a+b).^2-a.*b==n)

সমস্ত সম্ভাবনার উপর সহজ অনুসন্ধান।
মিথ্যা হিসাবে খালি অ্যারে আউটপুটস এবং সত্যের মান হিসাবে একটি খালি নয় খালি or

অল-জেরো ম্যাট্রিক্সকে মিথ্যা এবং অল-জিরো ম্যাট্রিক্সকে সত্য হিসাবে বিবেচনা করে আমরা 47% বাইট সমাধানের findফলে কার্য থেকে মুক্তি পেতে পারি :

n=input('');[a b]=ndgrid(0:n);(a+b).^2-a.*b==n

একটি বাইট @ ফ্লোয়ারকে ধন্যবাদ সংরক্ষণ করেছে


1
(a+b).^2-a.*b==nখাটো হয়।
flawr


1

গণিত, 44 বাইট

MemberQ[(+##)^2-##&@@@0~Range~#~Tuples~2,#]&

নামবিহীন ইনপুট এবং ফিরে যেমন একটি পূর্ণসংখ্যা গ্রহণ ফাংশন Trueবা False। কমান্ডটি 0~Range~#~Tuples~2উভয় 0এবং ইনপুট উভয়ের মধ্যে অর্ডারযুক্ত সমস্ত সংখ্যার পূর্ণসংখ্যা তৈরি করে #। ফাংশনটি (+##)^2-##&তার যুক্তিগুলির যোগফলের বিয়োগের যোগফলের বর্গাকার গণনা করে; যখন দুটি তর্ক করতে বলা হয় iএবং jএটি ঠিক i^2+j^2+ijযেমনটি পছন্দসই হয়। সুতরাং যে ফাংশনটি সমস্ত টিপলসকে ডাকা হয় এবং তারপরে MemberQ[...,#]ফলাফলগুলি মানগুলির মধ্যে একটি ইনপুট কিনা তা পরীক্ষা করে।


1

এএসপি, 39 + 4 = 43 বাইট

o:-k=I*I+J*J+I*J;I=1..k;J=1..k.:-not o.

আউটপুট: সমস্যাটি সন্তুষ্টিজনক iff কে লোসচিয়ান।

উত্তর সেট প্রোগ্রামিং একটি যৌক্তিক ভাষা, প্রোলোগুলির অনুরূপ। আমি এখানে পোটাসকো প্রয়োগ , ক্লিঙ্গো ব্যবহার করি

ইনপুটটি পরামিতিগুলি থেকে নেওয়া হয় ( -ck=এটি 4 বাইট দীর্ঘ)। কল উদাহরণ:

clingo -ck=999

আউটপুট নমুনা:

SATISFIABLE

1000 দিয়ে চেষ্টা করা:

clingo -ck=1000

আউটপুট নমুনা:

UNSATISFIABLE

আপনি এটি আপনার ব্রাউজারে চেষ্টা করতে পারেন ; দুর্ভাগ্যক্রমে, এই পদ্ধতিটি কল পতাকাগুলি পরিচালনা করে না, সুতরাং #const k=999এটি কাজ করার জন্য আপনাকে লাইনটি যুক্ত করতে হবে।


বর্ণহীন এবং বর্ণিত কোড:

v(1..k).  % predicate v(X) holds for any X in [1..k]
o:- k=I*I+J*J+I*J ; v(I) ; v(J).  % o holds if k is Loeschian.
:- not o.  % discard models where o doesn't holds (make problem unsatisfiable)

1

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

for(;$i++<$k=$argv[1];)for($j=$i+1;$j--;)$i*$i+$j*$j+$i*$j-$k?:die(1);

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়; অন্য 1সাথে, Loeschian নম্বর জন্য প্রস্থান করে 0
সাথে চালাও -nr

ভাঙ্গন

for(;$i++<$k=$argv[1];)     # loop $i from 1 to $k
    for($j=$i+1;$j--;)      # loop $j from $i to 0
        $i*$i+$j*$j+$i*$j-$k?   # if $i,$j,$k do not satisfy the equation, do nothing
        :die(1);                # else exit with return code 1
                            # implicit: exit with code 0
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.