একটি প্রাথমিক পরীক্ষা যা আক্ষরিক অর্থে প্রধান


23

এমন একটি প্রোগ্রাম লিখুন যা নির্দিষ্ট সংখ্যার আদিত্ব পরীক্ষা করে এবং আউটপুটটিকে বুলিয়ান মান হিসাবে দেয় (সত্যটি প্রাইম)। আপনার প্রাথমিক পরীক্ষাটি (তবে এটি করতে হবে না) 1 নম্বরটির জন্য বৈধ হতে পারে।

এখানে ধরা আছে: আপনার প্রোগ্রামটি নিজেই একটি মৌলিক সংখ্যার সাথে যোগ করতে হবে। প্রতিটি অক্ষর (স্পেস সহ) এর ইউনিকোড / এএসসিআইআই মান ( টেবিল ) এ রূপান্তর করুন । তারপরে, আপনার প্রোগ্রামটির যোগফল পেতে এই সমস্ত নম্বর একসাথে যুক্ত করুন।

উদাহরণস্বরূপ, পাইথন ৩.৩-এ আমি লিখেছি এটি-অত-দুর্দান্ত প্রোগ্রামটি নিন:

q=None
y=int(input())
for x in range(2,int(y**0.5)+1):
    if y%x==0:
        q=False
if not q:
    q=True
print(q)

আপনি যদি সমস্ত অক্ষরকে তাদের সম্পর্কিত ইউনিকোড / এএসসিআইআই মানগুলিতে রূপান্তর করেন তবে আপনি পাবেন:

113 61 78 111 110 101 10 121 61 105 110 116 40 105 110 112 117 116 40 41 41 10 102 111 114 32 120 32 105 110 32 114 97 110 103 101 40 50 44 105 110 116 40 121 42 42 48 46 53 41 43 49 41 58 10 32 32 32 32 105 102 32 121 37 120 61 61 48 58 10 32 32 32 32 32 32 32 32 113 61 70 97 108 115 101 10 105 102 32 110 111 116 32 113 58 10 32 32 32 32 113 61 84 114 117 101 10 112 114 105 110 116 40 113 41 

তারপরে আপনি নিজে নিজে বা আপনার নিজের প্রোগ্রাম সহ এই সংখ্যার যোগফল খুঁজে পেতে পারেন। এই নির্দিষ্ট প্রোগ্রামটির যোগফল 8293, যা একটি প্রাথমিক সংখ্যা।

অবশ্যই এটি কোড গল্ফ, তাই আপনি যত কম নিজের প্রোগ্রাম তৈরি করতে পারবেন তত ভাল। অন্যান্য ব্যবহারকারীর দ্বারা নির্দেশিত হিসাবে, এই প্রোগ্রামটি খুব গোলাপী নয়।

কয়েকটি বিধি:

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

পতাকাগুলি ব্যবহার করা যেতে পারে এবং আক্ষরিকভাবে গণনা করা উচিত, প্রসারিত নয়। মন্তব্য অনুমোদিত নয়। নন-এসসিআইআই অক্ষর হিসাবে, তাদের নিজ নিজ এনকোডিংয়ের মান হিসাবে নির্ধারিত করা উচিত।

আপনার প্রোগ্রামের আকার এবং প্রোগ্রামের যোগফলের তালিকা নিশ্চিত করুন। প্রোগ্রামগুলি বৈধ কিনা তা নিশ্চিত করার জন্য আমি পরীক্ষা করব।

শুভকামনা!

আপনার প্রোগ্রামের যোগফল গণনা করতে এবং এটি প্রধান কিনা তা পরীক্ষা করার জন্য এখানে একটি স্নিপেট রয়েছে:


12
অ-গল্ফিং ভাষায়, দেখে মনে হচ্ছে আপনি সংক্ষিপ্ততম প্রাথমিক সিদ্ধান্ত নেওয়ার কোডটি নিতে পারছেন, এবং যোগফলটি প্রধান না হওয়া পর্যন্ত পরিবর্তনশীল নামগুলি টুইঙ্ক করতে পারবেন।
xnor

5
আই / ও-তে বাধা কেন?
জোনাথন অ্যালান

2
"ইউনিবিট মান" কী?! ???
অদিতসু

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

উত্তর:




6

মাইক্রোস্ক্রিপ্ট II, 2 বাইট (যোগফল 137)

N;

মাইক্রোসক্রিপ্ট II, 4 বাইট (যোগফল 353)

N;ph

আমি আসলেই বেশ অবাক হয়েছি যে এই দু'টিই মূল বাইট অঙ্কের জখম করেছে।



4

পাইথ, 2 বাইট, 127

/P

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

1প্রাইমগুলির আউটপুট , 0অ-প্রাইমগুলির জন্য।

/কোড পয়েন্ট আছে 47Pকোড পয়েন্ট আছে 80

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

/P
/PQQ    Implicit variables.
        Q = input
 PQ     Prime factorize Q.
/  Q    Count how many times Q appears. 1 if prime, 0 if not.

4

হাস্কেল, 52 বাইট, 4421

main=do
 k<-readLn
 print$product[1..k-1]`rem`k==k-1

উইলসন উপপাদ্য।


2
এটি একটি সম্পূর্ণ স্ট্যান্ডেলোন প্রোগ্রামে পরিণত হয়েছে।
fquarp

::IO Intসত্যিই প্রয়োজনীয় যদি না যে সবচেয়ে কম ভাবে আপনি একটি মৌলিক সমষ্টি পেতে পারেন হওয়া উচিত নয়।
আরজান জোহানসেন

ভাল কল. যাইহোক, আমরা তখন কিছু কোড পাই যা একটি সমান মানকে 'হ্যাশ' করে। স্পেস বা নতুন-লাইন যুক্ত করা কিছুই (এমনকি মানগুলি) করে না, বা ভেরিয়েবলের নাম পরিবর্তন করে না (এটি চারবার প্রদর্শিত হয়, সুতরাং এর কোডটি (সি বলে) প্রতিস্থাপনের সাথে 4 * সি বিয়োগ করে 4 * সি 'যোগ করা হবে যা ছেড়ে যাবে । সমষ্টি এমনকি যাইহোক, এটা, লাইন ভঙ্গ এবং এখনও ছোট হতে যা আমি করেছি দ্বারা tweaked করা যাবে না।
fquarp

1
একটি পৃথক প্রাথমিক পরীক্ষা দিয়ে 47 বাইট: এটি অনলাইনে চেষ্টা করুন! (দ্রষ্টব্য যে গণনাটি সঠিকভাবে পাওয়ার জন্য স্পেসগুলির পরিবর্তে ট্যাব রয়েছে)।
লাইকনি

পিপিসিজিতেও স্বাগতম!
লাইকনি

4

পাইথন 2, 50 বাইট, 4201

১ এর জন্য কাজ করে।

p=input();print all(p%m for m in range(2,p))*~-p;p

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


পাইথন 2, 44 বাইট, 3701

১ এর জন্য কাজ করে না একটি বুলিয়ান আউটপুট দেয়।

p=input();print all(p%k for k in range(2,p))

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


3

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

এটি ভারীভাবে ইটিএইচ প্রডাকশনগুলির প্রাথমিকতা -পরীক্ষার ফাংশনের উপর ভিত্তি করে তৈরি করা যেতে পারে যা এখানে পাওয়া যাবে

alert((F=(n,x=n)=>n%--x?F(n,x):!~-x)(prompt()))


3

05AB1E 1 , 2 বাইট,173

p=

ব্যাখ্যা:

p  # Checks if number is prime - returns 1 if true and 0 if false. Uses implicit input.
 = # Wouldn't usually be required for this sort of program, but I added it to make the sum prime.

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


কিছু "মন্তব্যে অনুমোদিত নয়" তবে আমি অনুমান করি যে কার্যকরী নো-অপ্সটি দুর্দান্ত কাজ করেছে: ডি
মান কালি

2

পিএইচপি, 38 বাইট, যোগফল 2791

মজাদার ঘটনা: এর $hপরিবর্তে $c, যোগফল হবে 2801(এছাড়াও একটি প্রধান), এবং এর বাইনারি প্রতিনিধিত্ব 101011110001দশমিক হিসাবে পড়াও একটি প্রধান সংখ্যা।

for($b=$c=$argv[1];$c%--$b;);echo$b<2;

কমান্ড লাইন যুক্তি, মুদ্রণ 1বা খালি স্ট্রিং নেয়। সাথে চালাও -r

কোডটি আমার নিজস্ব ফাংশন থেকে নেওয়া হয়েছে (আপনি যদি পারেন তবে মূল পোস্টটি দেখুন)।


@ আর্টির এটি ঠিক আছে।
তিতাস

2

আর, 27 32 বাইট, যোগফল 2243 2609

@ আর্টারনবুলকে ধন্যবাদ জানিয়ে একটি 5 বাইট সংরক্ষণ করা হয়েছে

cat(gmp::isprime(scan(),r=43)>0)

এটি জিএমপি গ্রন্থাগারের আইপ্রেম ফাংশনটি ব্যবহার করে।

> sum(as.integer(charToRaw('cat(!!gmp::isprime(scan()))')))
[1] 2243
> cat(!!gmp::isprime(scan()))
1: 2243
2: 
Read 1 item
TRUE
> 

cat(!!gmp::isprime(scan()))5 বাইট সংক্ষিপ্ত, এবং যোগফল 2243, এছাড়াও প্রধান।
rturnbull

@ আর্টারনবুল তার জন্য ধন্যবাদ :)
মিকিটি

1

পাইথন 2, 44 বাইট, বাইট-সম 3109

এটি xnor এর 44 বাইট বাস্তবায়ন সর্বনিম্ন মূল্যবান ভেরিয়েবলের সাথে যা একটি প্রধান বাইট যোগফল দেয়।

1প্রাইম হলে প্রিন্ট করুন আর 0না হলে।

C=B=1
exec"B*=C*C;C+=1;"*~-input()
print B%C

1

জেলি 6 বাইট , বাইট-সমষ্টি 691

ƓÆḍ,ṠE

1প্রাইম এবং 0যদি না প্রিন্ট ।

TryItOnline!

হেক্সাডেসিমালের বাইটগুলি হ'ল 93 0D D5 2C CD 45( কোড পৃষ্ঠাটি দেখুন ), বা দশমিক যেগুলি 147 13 213 44 205 69691 এর সমষ্টি যা মূল।

কিভাবে?

ƓÆḍ,ṠE - Main Link: no arguments
Ɠ      - read and evaluate a line from STDIN (integer expected)
 Æḍ    - proper divisor count
   ,   - paired with
    Ṡ  - sign
     E - all equal? - returns a boolean (1 or 0)
       - implicit print

দ্য Æḍকার্যকারিতা যেমন যে মৌলিক এবং তাদের negations এক আসতে যখন অন্যান্য পূর্ণসংখ্যার না (composites এবং তাদের negations এক, এক এবং বিয়োগ এক রিটার্ন শূন্য এবং শূন্য আয়, আশ্চর্যের ব্যাপার যে, বিয়োগ এক তার চেয়ে অনেক বেশী সংখ্যার আগমন) করতে হয়।

কার্যকারিতা যেমন যে নেতিবাচক পূর্ণসংখ্যার আসতে বিয়োগ এক, শূন্য রিটার্ন শূন্য এবং ধনাত্মক পূর্ণসংখ্যা এক আসতে হয়।

সুতরাং দুটি ফাংশন কেবল প্রাইমগুলির জন্য একই মান প্রদান করে।

দ্রষ্টব্য যে 3 টি বাইট প্রোগ্রাম ƓÆPযা সরাসরি পরীক্ষা করে থাকে যদি এসটিডিআইএন থেকে ইনপুটটি প্রাথমিক হয় তবে দুর্ভাগ্যক্রমে এটি প্রাইম-সাম প্রোগ্রাম নয় (240)।

5 টি বাইটের জন্য =(সমান), e(বিদ্যমান) বা (নন-ভেক্টরাইজিং সমান) ব্যবহার করে সমতার জন্য পরীক্ষা করাও প্রাইম-সিম প্রোগ্রাম দেয় না।


বিকল্প (সম্ভবত গ্রহণযোগ্য নয়) 4 বাইট, সমষ্টি 571

যদি I / O বিধিনিষেধগুলি এখনও পুরো প্রোগ্রামগুলিকে মঞ্জুরি দেয় যা একটি আর্গুমেন্ট গ্রহণ করে।

Æḍ⁼Ṡ

... উপরের মতো একই নীতিটি ব্যবহার করে, যেখানে নন-ভেক্টরাইজিং সমতা রয়েছে (নন-ভেক্টরাইজিং দিকটির কোনও প্রভাব নেই কারণ যেহেতু কোনওভাবে ভেক্টরাইজ করার কিছু নেই)। হেক্স মান 0D D5 8C CDযা 13 213 140 205দশমিক যা 571 থেকে সমষ্টি, একটি মৌলিক হবে।

আবার নোট করুন যে 2 বাইট প্রোগ্রামটির প্রাথমিক ÆPযোগফল নেই (93)।


ƓÆPG(311) এবং ÆPF(163) ভাল হওয়া উচিত, আমার মনে হয়?
লিন

ইউনিকোড হিসাবে, ƓÆḍ,ṠEমান 16183, যা কাকতালীয়ভাবে প্রধান!
আর্টিয়ার 25'17

@ লিন হ্যাঁ, মনে হচ্ছে "অপ্রয়োজনীয় কোডের বিধিনিষেধ" (স্থানের অক্ষর ব্যতীত) অপসারণ করা হয়েছে, ƓÆPGঠিক আছে। আমি আরও জিজ্ঞাসা করেছি যে কোনও প্রোগ্রাম এসটিডিআইএন ব্যবহারের পরিবর্তে ইনপুট গ্রহণ করছে কিনা তা গ্রহণযোগ্য কিনা।
জোনাথন অ্যালান

1
... এই জাতীয় দুটি জিনিস যদি ঠিক থাকে তবে ÆP¥3 বাইট এবং 97
জোনাথন অ্যালান


1

গণিত, 21 বাইট, 1997

Print@*PrimeQ@Input[]

Input[]ইনপুট একটি লাইন পড়েন (কোনও প্রান্ত প্রান্তটি ব্যবহার না করা হলে STDIN থেকে, ম্যাথমেটিকা ​​সামনে প্রান্তটি ব্যবহার করা হয় তবে একটি ডায়ালগ বাক্সের মাধ্যমে), এবং ক্রিয়াগুলির Print@*PrimeQসংমিশ্রণ ( @*) এবং উপসর্গের ফাংশন স্বরলিপি।PrintPrimeQ@


1

পার্ল 6 , 24 22 বাইট,1949

say .is-prime
for +get

তিনটি সাদা স্থানের অক্ষর প্রয়োজন।
(পার্ল 6 কী ধরণের স্পেসস্পেসের চরিত্র তা বিবেচনা করে না , যদিও আমি দ্বিতীয়টির জন্য বেশি ব্যবহৃত স্থানের পরিবর্তে একটি নতুন লাইন বেছে নিয়েছি ...)



1

পিপ , 8 বাইট,511

0Na%,a=1

আমি একটি প্রাইম চেকার লিখেছি, এবং যোগফলটি ছিল প্রাইম। সুবিধাজনক। ইনপুটগুলি 1-30 যাচাই করুন: এটি অনলাইনে চেষ্টা করুন!

ব্যাখ্যা

          a is first command-line argument
    ,a    Numbers from 0 to a-1
  a%      Take a mod each of those numbers (a%0 gives nil)
0N        Count number of times 0 occurs in that list
      =1  If 0 occurs only 1 time (for a%1), then a is prime


1

জে, 18 বাইট, 1103

echo 1&p:".(1!:1)1

অনুকূল থেকে খুব বেশি দূরে নয়, আমি কমপক্ষে পুরো প্রোগ্রামের প্রাথমিকতা পরীক্ষাটি গল্ফ করতে পারলাম 17 বাইট: echo(p:[:".1!:1)1যা দুর্ভাগ্যক্রমে 1133 = 11 * 103 এর সমষ্টি।

দুর্ভাগ্যক্রমে আমি টিআইওতে কী-বোর্ড কী কীভাবে ইনপুট পেতে হয় তা কীভাবে পাওয়া যায় তা এখনও বুঝতে পারছি না link

ব্যাখ্যা:

echo 1&p:".(1!:1)1  | Full program
           (1!:1)1  | Read a line of input from keyboard
         ".         | Evaluate (converts string to int)
     1&p:           | 1 for prime, 0 for composite
echo                | Print result. The space is required, as 'echo1' would be interpreted as a variable

প্রোগ্রামটি যাচাই করা হচ্ছে:

   1 p:+/u:inv'echo 1&p:".(1!:1)1'  NB. Convert to ints, sum, and test primality
1

1

সি (জিসিসি) , 62 60 বাইট, 4583

অনেকটাই অকপট. আউটপুট * যদি প্রাইম হয়, অন্যথায় এটি একটি স্পেস আউটপুট করে। 1 জন্য কাজ করে না।

-2 ধন্যবাদ l4m2

p;main(i){for(scanf("%d",&p);++i<p;)p=p%i?p:0;puts("*"+!p);}

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


1
n;main(i){for(scanf("%d",&n);++i<n;)n=n%i?n:0;puts("*"+!n);}প্রাইম রাশিটির জন্য কিছু পরিবর্তনশীল নাম পরিবর্তন করতে হতে পারে
l4m2

@ l4m2 খুব ভাল!
গ্যাস্ট্রোপনার

1

এডাব্লু কে , 36 বাইট, বাইট-योग 2239

{for(a=1;$0%++a&&a<$0;);$0=(a==$0)}1

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

আউটপুটগুলি 0প্রাইম এবং প্রাইম না হলে 1। অবশ্যই সবচেয়ে কার্যকর কোড নয়, যেহেতু এটি প্রতিটি সংখ্যার চেয়ে বড় পরীক্ষা করে দেখায় 1যে এটি ইনপুটকে ভাগ করে দেয় কিনা।


1

এক্সেল (57 বাইট, কোড সমষ্টি 3547)

=XOR(0<PRODUCT(MOD(A1,ROW(OFFSET(D2,0,,SQRT(A1))))),3>A1)

এক্সেলের আসলে এর মতো কোনও "ইনপুট" থাকে না, তবে এই সূত্রটি আশা করে যে নম্বরটি A1 তে পরীক্ষিত হবে এবং আপনি যে কোনও ঘরে এটি ফেলে রাখবেন তা আউটপুট করে It's এটি লিখুন পরিবর্তে।


1

জাভা 8, 114 বাইট, প্রাইম 10037

interface M{static void main(String[]a){long n=new Long(a[0]),x=2;for(;x<n;n=n%x++<1?0:n);System.out.print(n>1);}}

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

ব্যাখ্যা:

interface M{                     // Class
  static void main(String[]a){   //  Mandatory main-method
    long n=new Long(a[0]),       //   The first argument as number
    x=2;for(;x<n;n=n%x++<1?0:n); //   Check if `n` is a prime
    System.out.print(n>1);}}     //   Print whether `n` was a prime
                                 //    (if `n` is still the same: it's a prime;
                                 //     if `n` is now 0 or 1: it's not a prime)

আমি ইউনিকোড যোগফলকে প্রধান xহিসাবে তৈরি iকরার পরিবর্তে ব্যবহার করেছি । এখানে ইউনিকোড যোগফল যাচাই করুন।


1

জেলি , 4 বাইট, Σ = 239

ÆPa1

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

প্রুফ: অনলাইনে চেষ্টা করে দেখুন! (জেলি কোড পৃষ্ঠাতে প্রোগ্রামের অক্ষরের 1-ভিত্তিক সূচকগুলি নিন, তাদের 0-ভিত্তিক, যোগফল হ্রাস করতে হবে এবং তারপরে ফলাফলটি প্রধান কিনা তা পরীক্ষা করুন)।


0

স্মাইলব্যাসিক, ৪২ বাইট, 2687

INPUT N:FOR D=2TO N/2P=P+!(N MOD D)NEXT?!P

আউটপুট 1 (সত্য) যদি সংখ্যাটি প্রধান হয়, অন্যথায় 0 (মিথ্যা)।

পরিবর্তনশীল নামগুলি কেবল প্রোগ্রামটিকে প্রধান করে তোলার জন্য বেছে নেওয়া হয়নি। Nহয় এন পরীক্ষা আমভের, Dহয় ivisor, এবং Pকিনা এন হয় ট্র্যাক রাখে পি তুহিন।



0

মরিচা, 190 বাইট, 15013 স্কোর

fn main(){let A=&mut"".into();std::io::stdin().read_line(A);let(B,mut C)=(A.trim().parse::<u64>().unwrap(),true);for H in 2..((B as f64).sqrt()+1.0) as u64{if B%H==0{C=false}}print!("{}",C)}

Ungolfed

fn main() {
    let input = &mut "".into();
    std::io::stdin().read_line(input);
    let (number, mut prime) = (input.trim().parse::<u64>().unwrap(), true);

    for x in 2..((number as f64).sqrt() + 1.0) as u64 {
        if number % x == 0 {
            prime = false;
        }
    }

    print!("{}", prime);
}

1 জন্য কাজ করে না


0

|pQ317. স্কোর তাহলে সোয়াপিং truthy / falsy অনুমতি দেওয়া হয় জন্য কাজ করে, |p!পাশাপাশি 269. জন্য কাজ করে
Khuldraeseth na'Barya

ধন্যবাদ. আমি মনে করি না যে চ্যালেঞ্জের প্রয়োজন স্কোরটি হ্রাস করা উচিত যাতে আমি সেই অংশটি টুইট করতে পারি না।
ওয়েইজুন চিউ

0

ফিসফিসি ভি 2 , 33 বাইট

>>> ⊤ℙ∘ℕ
> Input
>> 1∘2

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

  1. স্কোর: 44381
  2. এটি বৈধ করতে কেবল 6 বাইট / 2 টি অক্ষর যুক্ত হয়েছে!
  3. 1 প্রধান নয়

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

এটি কার্যকর করা হয় এমন ক্রমে এটি প্রদর্শিত হয়:

		; Line 3:
>>  ∘		; Compose...
   1            ; Line 1 with
     2          ; The result of line 2

		; Line 2:
> Input		; Retrieve a line of input

		; Line 1:
>>> ⊤		; The input is...
     ℙ		; Prime
      ∘		; And it is...
       ℕ	; Natural
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.