গঠনমূলক এন-গনস


10

একটি গঠনমূলক এন-গন হল এমন একটি নিয়মিত বহুভুজ যা আপনি কেবল একটি কম্পাস এবং একটি চিহ্নবিহীন শাসকের সাহায্যে তৈরি করতে পারেন sides

গাউস, শুধুমাত্র এন, যার জন্য এন-Gon অঙ্কনযোগ্য দ্বারা হিসাবে বলেন (অর্থাৎ। স্বতন্ত্র ফার্মার মৌলিক সংখ্যার কোন সংখ্যা এবং 2 এর একটি ক্ষমতা একটি পণ্য n = 2^k * p1 * p2 * ...দিয়ে kএকটি পূর্ণসংখ্যা এবং প্রতি হচ্ছে pকিছু স্বতন্ত্র ফার্মার প্রধান)।

ফারম্যাট প্রাইম এমন এক প্রাইম যা F (n) = 2 ^ (2 ^ n) +1 হিসাবে ইতিবাচক পূর্ণসংখ্যার হিসাবে প্রকাশ করা যায়। একমাত্র পরিচিত ফার্ম্যাট প্রাইম 0, 1, 2, 3 এবং 4 এর জন্য।

চ্যালেঞ্জ

একটি পূর্ণসংখ্যা দেওয়া n>2, এন-গন গঠনমূলক কিনা তা বলুন।

সবিস্তার বিবরণী

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

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

প্রাসঙ্গিক OEIS

উদাহরণ

3 -> True
9 -> False
17 -> True
1024 -> True
65537 -> True
67109888 -> True
67109889 -> False

উত্তর:


8

জেলি , 7 5 বাইট

2 বাইট সংরক্ষণের জন্য Sp3000 ধন্যবাদ।

ÆṪBSỊ

নিম্নলিখিত শ্রেণিবিন্যাস ব্যবহার করে:

এগুলি সেই সংখ্যাও যার জন্য ফাই (এন) 2 এর শক্তি।

যেখানে ফাই হলেন এলারের মোটামুটি কাজ

ÆṪ        # Compute φ(n).
  B       # Convert to binary.
   S      # Sum bits.
    Ị     # Check whether it's less than or equal to 1. This can only be the
          # case if the binary representation was of the form [1 0 0 ... 0], i.e. 
          e# a power of 2.

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

বিকল্পভাবে (xnor এর ক্রেডিট):

ÆṪ’BP
ÆṪ        # Compute φ(n).
  ’       # Decrement.
   B      # Convert to binary.
    P     # Product. This is 1 iff all bits in the binary representation are
          # 1, which means that φ(n) is a power of 2.

আমার গণিতের উত্তরের একটি সরাসরি বন্দর দুটি বাইট দীর্ঘ:

ÆṪ        # Compute φ(n).
  µ       # Start a new monadic chain, to apply to φ(n).
   ÆṪ     # Compute φ(φ(n)).
      H   # Compute φ(n)/2.
     =    # Check for equality.

আমি জেলিকে চিনি না, তবে আপনি সম্ভবত 2 এর পাওয়ার ফ্যাক্টরিং এবং সর্বাধিক 2 কিনা তা পরীক্ষা করে পরীক্ষা করতে পারেন? আপনি এবং এর পূর্বসূরীর বিটওয়াইড এবং এর পূর্বসূরি 0 আছে কিনা তাও পরীক্ষা করতে পারেন
xnor

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

আমি দেখতে পাচ্ছি যে E তালিকার সমস্ত উপাদান সমান কিনা তা পরীক্ষা করতে পারে। আপনি যদি সংখ্যাটি দ্বিগুণ করেন, এটির ফ্যাক্টর করেন এবং সমস্ত উপাদান সমান কিনা তা পরীক্ষা করেন?
xnor

@ এক্সনর এটিও একটি দুর্দান্ত ধারণা। :) এটি তখন সম্ভবত 6 বাইট হবে, তবে স্প 3000 উল্লেখ করেছে যে এখানে রয়েছে Bএবং যা আমাকে এটি 5 এ পরীক্ষা করতে দেয়
মার্টিন ইন্ডার

আহ, সুন্দর। কোনও সুযোগ যে হ্রাস, তারপর বাইনারি, তারপরে পণ্যটি সংক্ষিপ্ত?
xnor

3

গণিত, 24 বাইট

e=EulerPhi
e@e@#==e@#/2&

ওইআইএস থেকে নিম্নলিখিত শ্রেণিবিন্যাস ব্যবহার করে:

সংখ্যার মতো সংখ্যনীয় যে কোটোটিয়েন্ট-অফ-টেলিয়েন্টের সমষ্টিফলের সমান।

Totient φ(x) একটি পূর্ণসংখ্যা এর xনিচে ধনাত্মক পূর্ণসংখ্যা সংখ্যা xযে coprime হয় x। কোটিটিয়েন্ট হ'ল ধনাত্মক পূর্ণসংখ্যার সংখ্যা, অর্থাত্‍ নয় x-φ(x)। যদি টোটেন্টটি কোটিটিয়েন্টের সমান হয় তবে এর অর্থ হল এর যোগফল φ(x) == x/2

আরও সরল শ্রেণিবদ্ধকরণ

এগুলি সেই সংখ্যাও যার জন্য ফাই (এন) 2 এর শক্তি।

দীর্ঘকাল বাইট হয়ে শেষ:

IntegerQ@Log2@EulerPhi@#&

কটিোটিয়েন্টস এবং টোটেন্টগুলি কী কী? এবং কোটোটিয়েন্ট-অফ-টেলেন্ট এবং টেলিয়েন্ট-অব-টোটেন্টের অনুপাত কি?
ক্লিমিক

@ Qwerp-Derp দ্য এর totient nপূর্ণসংখ্যার নীচের সংখ্যা nযে coprime হয় n, এবং cototient নিচে পূর্ণসংখ্যার সংখ্যা nযে হয় না। আমি একটি লিঙ্কে সম্পাদনা করব।
মার্টিন ইন্ডার

ম্যাথমেটিকার বিল্ট-ইন আমাকে বিস্মিত করার জন্য কখনই থামবে না
সেফা

@ কিউয়ার্প-ডের্প আপনার দ্বিতীয় প্রশ্নের জন্য এটির অর্থ কেবলমাত্র আপনি এর যোগফলের (কো) সমষ্টিটিকে গণনা করুন n
মার্টিন ইন্ডার

3

রেটিনা, 51 50 বাইট

0+$

+`^(.*)(?=(.{16}|.{8}|....|..?)$)0*\1$
$1
^1$

ইনপুট বাইনারি হয়। প্রথম দুটি লাইন দুটি এর শক্তির সাথে বিভক্ত হয়, পরের দুইটি সমস্ত পরিচিত ফারম্যাট প্রাইম দ্বারা ভাগ হয় (যদি বাস্তবে সংখ্যাটি ফর্ম্যাট প্রাইমসের পণ্য হয়)। সম্পাদনা: @ মার্টিন ইন্ডারকে ধন্যবাদ 1 বাইট সংরক্ষণ করা


বাইনারি ইনপুটটি ঠিক আছে, পাশাপাশি ফার্মাট প্রাইমগুলি সম্পর্কে ধারণাও রয়েছে
সেফায়

2

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

n=>[...Array(5)].map((_,i)=>n%(i=2**2**i+1)?0:n/=i)&&!(n&n-1)

1

আসলে, 6 বাইট

এই উত্তরটি মার্টিন ইন্ডারের জেলি উত্তরের xnor এর অ্যালগরিদমের উপর ভিত্তি করে । গল্ফিং পরামর্শ স্বাগত জানাই। এটি অনলাইন চেষ্টা করুন!

▒D├♂≈π

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

         Implicit input n.
▒        totient(n)
 D       Decrement.
  ├      Convert to binary (as string).
   ♂≈    Convert each char into an int.
     π   Take the product of those binary digits.
         If the result is 1,
           then bin(totient(n) - 1) is a string of 1s, and totient(n) is power of two.

0

ব্যাচ, 97 বাইট

@set/pn=
@for /l %%a in (4,-1,0)do @set/a"p=1<<(1<<%%a),n/=p*!(n%%-~p)+1"
@cmd/cset/a"!(n-1&n)"

দশমিক ইনপুট স্টিডিনে রয়েছে। এটি 2 পুনরাবৃত্তভাবে পাওয়ার ক্ষমতার গণনার চেয়ে 1 বাইট সংক্ষিপ্ত। @ Xnor এর 2 টি পরীক্ষার শক্তি ব্যবহার করে আমি 1 বাইট সংরক্ষণ করেছি।

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