"প্রধান অক্ষর" ব্যবহার না করে মূল সংখ্যাগুলি সন্ধান করা


21

আপনার কাজটি, যদি আপনি এটি গ্রহণ করা চয়ন করেন তবে একটি প্রোগ্রাম / ফাংশন লিখুন যা কোনও পূর্ণসংখ্যা N কে ইনপুট হিসাবে গ্রহণ করে । প্রোগ্রাম / ফাংশনটি প্রথম এন প্রাথমিক সংখ্যাগুলির তালিকা আউটপুট / ফিরিয়ে দেয় । তবে এখানে ধরা আছে: আপনার কোডটিতে আপনাকে প্রধান অক্ষর ব্যবহার করার অনুমতি নেই । প্রধান চরিত্রটি এমন একটি চরিত্র যা ইউনিকোড কোড পয়েন্ট একটি মৌলিক সংখ্যা। মুদ্রণযোগ্য এএসসিআইআই ব্যাপ্তিতে এইগুলি হ'ল:

%)+/5;=CGIOSYaegkmq

আপনার কোডগুলি যদি সেগুলি ব্যবহার করে তবে নিয়মটি অ-ASCII অক্ষরের ক্ষেত্রেও প্রযোজ্য।

  • একটি বৈধ ইনপুট হল একটি পূর্ণসংখ্যা N যেখানে 0 <এন <= টি , আপনি টি বেছে নিতে পারেন তবে এটি 10000 এর চেয়ে বড় বা সমান হতে হবে T টি সসীম হতে হবে না।
  • অবৈধ ইনপুটগুলির জন্য (অ-পূর্ণসংখ্যা, পরিসরের বাইরে পূর্ণসংখ্যার) কোনও ব্যতিক্রম বা আউটপুট নিক্ষেপ / কিছুই রিটার্ন / নাল না।
  • ইনপুট হিসাবে শীর্ষস্থানীয় / পিছনের শ্বেত স্পেস সহ একটি পূর্ণসংখ্যা অবৈধ হিসাবে বিবেচিত হয়।
  • +ইনপুট হিসাবে একটি চিহ্ন চিহ্ন হিসাবে একটি পূর্ণসংখ্যা অবৈধ হিসাবে বিবেচিত হয়।
  • ইনপুট হিসাবে শীর্ষস্থানীয় শূন্যগুলির একটি পূর্ণসংখ্যা বৈধ হিসাবে বিবেচিত হয়।
  • যদি আপনার ভাষা আপনাকে ইতিমধ্যে পার্সড পূর্ণসংখ্যাকে ইনপুট হিসাবে পাস করতে দেয় তবে উপরের পার্সিং বিধিগুলি (একটি ব্যাপ্তি ব্যতীত) প্রযোজ্য হবে না কারণ ইন্টটি ইতিমধ্যে পার্স করা হয়েছে।
  • ইনপুটটি সর্বদা বেস -10 থাকে।
  • অন্তর্নির্মিত প্রাইম জেনারেটর এবং প্রাথমিকতা পরীক্ষকদের (এটিতে প্রাইম ফ্যাক্টেরাইজেশন ফাংশন অন্তর্ভুক্ত) ব্যবহারের অনুমতি নেই।
  • উত্স বিধিনিষেধ ইউনিকোড অক্ষরগুলিতে চাপিয়ে দেওয়া হয়েছে, তবে স্কোরের জন্য বাইট গণনা যদি আপনি চান তবে অন্য একটি এনকোডিংয়ে থাকতে পারে।
  • আউটপুটটিতে একটি একক পেছনের নতুন লাইন থাকতে পারে তবে এটি প্রয়োজন হয় না।
  • যদি আপনি স্ট্রিং হিসাবে প্রাথমিক নম্বর তালিকার আউটপুট / ফিরিয়ে দেন, তবে প্রতিটি মৌলিক সংখ্যা অবশ্যই এক বা একাধিক অ-অঙ্কের চর দ্বারা সীমাবদ্ধ করতে হবে। আপনি কোন ডিলিমিটার ব্যবহার করেন তা চয়ন করতে পারেন।
  • এটি একটি চ্যালেঞ্জ, বাইটের মধ্যে সংক্ষিপ্ততম কোড।

আপনার কোড যাচাই করার জন্য স্নিপেট স্ট্যাক করুন

আপনি নীচে স্ট্যাক স্নিপেট ব্যবহার করতে পারেন যাচাই করতে আপনার কোডটিতে প্রধান অক্ষর নেই:

var primes=[],max=10000;for(var i=2;i<=max;i++){primes.push(i);}for(var N=2;N<Math.sqrt(max);N++){if(primes.indexOf(N)===-1){continue;}primes=primes.filter(function (x){return x===N||x%N!==0;});}function setText(elem,text){var z=('innerText' in elem)? 'innerText' : 'textContent';elem[z]=text;}function verify(inputCode,resultSpan){var invalidChars=[];var success=true;for(var i=0;i<inputCode.length;i++){var cc = inputCode.charCodeAt(i);if (cc>max){setText(resultSpan,"Uh oh! The char code was bigger than the max. prime number calculated by the snippet.");success = false;break;}if (primes.indexOf(cc)!==-1){invalidChars.push(inputCode[i]);}}if (invalidChars.length===0&&success){setText(resultSpan, "Valid code!");}else if(success) {  var uniqueInvalidChars = invalidChars.filter(function (x, i, self){return self.indexOf(x)===i;});setText(resultSpan, "Invalid code! Invalid chars: " + uniqueInvalidChars.join(""));    }}document.getElementById("verifyBtn").onclick=function(e){e=e||window.event;e.preventDefault();var code=document.getElementById("codeTxt").value;verify(code,document.getElementById("result"));};
Enter your code snippet here:<br /><textarea id="codeTxt" rows="5" cols="70"></textarea><br /><button id="verifyBtn">Verify</button><br /><span id="result"></span>


10
এটি ;নিষিদ্ধ হওয়ার মতো
ঘটনাটি

যদি প্রাথমিকতা পরীক্ষকদের অনুমতি না দেওয়া হয় তবে প্রধান ফ্যাক্টরীকরণের কার্যগুলি কী হবে।
মালটিসেন

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

আমরা কি এই অবৈধ ইনপুটগুলির কিছু ফেলে দিতে বাধ্য? উদাহরণস্বরূপ, যদি আমাদের ভাষার স্ট্রিং-> ইন্ট ফাংশন কোনও নেতৃস্থানীয়কে মঞ্জুরি দেয় তবে +ম্যানুয়ালি এগুলি ছুঁড়ে ফেলার জন্য এটি হতাশার মতো বলে মনে হচ্ছে।
রানার 1212

11
আমি এটি সম্পর্কে সমস্ত উত্সাহিত হয়েছি এবং একটি সমাধান শুরু করি, তখন বুঝতে পারি বন্ধ প্যারেনগুলি বঞ্চিত করা হয়। ভাল, আমি বাইরে আছি।
অ্যালেক্স এ।

উত্তর:


10

সিজেম, 19 18 30 34 33 19 17 21 21 বাইট

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

{_3\#,2>__ff*:~-<N*}

এটি সম্ভবত আমি সবচেয়ে কার্যকরভাবে প্রয়োগ করেছি এমন সবচেয়ে ভয়াবহ অদক্ষতার একটি al তবে আমি আকারের জন্য এটি করেছি!

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

আমার অ্যালগরিদমটি 3 inputম শক্তি দ্বারা উত্থাপনের মাধ্যমে শুরু হয় , যা inputইনপুটটি বৈধ হলে -ত প্রাইমের চেয়ে বড় একটি সংখ্যা দেওয়ার গ্যারান্টিযুক্ত । তারপরে 2 থেকে এই সংখ্যার বিয়োগের সংখ্যার পূর্ণসংখ্যার একটি তালিকা তৈরি করা হয়, যা আমরা চাই সমস্ত মৌলিক সংখ্যার জন্য যথেষ্ট পরিমাণে সোয়াথ। সংমিশ্রিত সংখ্যাগুলি থেকে মুক্তি পাওয়ার জন্য ... দীর্ঘশ্বাস ... আমরা প্রতিটি জোড়াওয়ালা পণ্যটির একটি তালিকা তৈরি করি, যা আমাদের উদ্দেশ্যে সম্মিলিত সংখ্যা 4 থেকে কিছু নির্বোধের বৃহত মানের তৈরি করা উচিত, এটি আমাদের উদ্দেশ্যে যথেষ্ট বড়। তারপরে এই যৌগিক তালিকায় থাকা মূল তালিকা থেকে প্রতিটি উপাদান সরিয়ে নেওয়া, এটি প্রথম inputউপাদানগুলিতে ছাঁটাই করা , এবং উপাদানগুলিকে নিউলাইন চরিত্রের সাথে যুক্ত করা কেবল বিষয়।

অ্যালগরিদম কোনও ইনপুট জন্য কাজ করা উচিত । যাইহোক, দোভাষী / কম্পিউটারের পর্যাপ্ত মেমরি বা সময় রয়েছে কিনা তা পুরোপুরি অন্য একটি প্রশ্ন, কারণ সময় এবং স্থানের প্রয়োজনীয়তা ইনপুটটির ক্ষেত্রে তাত্পর্যপূর্ণ। সুতরাং যদি অনলাইন ইন্টারপ্রেটারের জন্য ইনপুটটি প্রায় 5 বা অফলাইনটির জন্য 8 এর চেয়ে বড় হয়, তবে সেই প্রশ্নের উত্তর সম্ভবত না হয় no


3
হেই, আপনার উত্তরে 17 নম্বর বাইট রয়েছে।
কোরি ওগবার্ন

তোমার দরকার কেন S*?
jimmy23013

@ user23013 অবৈধ ইনপুটগুলি 1 টিরও কম অ্যালগরিদমের মাধ্যমে এখনও ফিড দেয়, তারা কেবল একটি খালি তালিকা তৈরি করে। তবে এটি তাদের পক্ষে আইনী আউটপুট নয়, তাই এই অবৈধ ইনপুটগুলির জন্য একটি ফাঁকা আউটপুট উত্পাদন করার জন্য আমি ফাঁকা জায়গাগুলির সাথে তালিকার উপাদানগুলিতে যোগদান করি।
রানার 1212

1
আমি এটি লক্ষ্য করেছি, Sপ্রধান চরিত্র নয়?
জাকারি

এটি একটি প্রধান চরিত্র। আমি জানি আমি এটি বলতে 2 বছর বেশি দেরি করেছি, তবে এই উত্তরটি অবৈধ
জাকারিয়া

8

জাভা। 474 বাইট

i\u006dport j\u0061v\u0061.util.*\u003bvoid b(int b\u0029{Lon\u0067 c\u003d2L,d,f[]\u003d{}\u003bfor(f\u003dArr\u0061ys.copy\u004ff(f,b\u0029,Arr\u0061ys.fill(f,0L\u0029\u003bb-->0\u003b\u0029for(d\u003d0L\u003bf[b]<1\u003bf[b]\u003dd<1?c:f[b],d\u003d0L,c\u002b\u002b\u0029for(lon\u0067 h:f\u0029d\u003dh>0&&c\u002fh*h\u003d\u003dc?1:d\u003bj\u0061v\u0061x.x\u006dl.bind.JAXB.un\u006d\u0061rsh\u0061l(""\u002bArr\u0061ys.\u0061sList(f\u0029,Lon\u0067.cl\u0061ss\u0029\u003b}

ফাংশন আর্গুমেন্টের মাধ্যমে ইনপুট নেয়, নিক্ষিপ্ত ব্যতিক্রমের মাধ্যমে আউটপুট দেয়।

ইন্ডেন্টযুক্ত:

i\u006dport j\u0061v\u0061.util.*\u003b
void b(int b\u0029{
    Lon\u0067 c\u003d2L,d,f[]\u003d{}\u003b
    for(f\u003dArr\u0061ys.copy\u004ff(f,b\u0029,Arr\u0061ys.fill(f,0L\u0029\u003bb-->0\u003b\u0029
        for(d\u003d0L\u003bf[b]<1\u003bf[b]\u003dd<1?c:f[b],d\u003d0L,c\u002b\u002b\u0029
            for(lon\u0067 h:f\u0029
                d\u003dh>0&&c\u002fh*h\u003d\u003dc?1:d\u003b
    j\u0061v\u0061x.x\u006dl.bind.JAXB.un\u006d\u0061rsh\u0061l(""\u002bArr\u0061ys.\u0061sList(f\u0029,Lon\u0067.cl\u0061ss\u0029\u003b
}

পালিয়ে যাওয়া অক্ষরগুলি সরানো হয়েছে:

import java.util.*;
void b(int b){
    Long c=2L,d,f[]={};
    for(f=Arrays.copyOf(f,b),Arrays.fill(f,0L);b-->0;)
        for(d=0L;f[b]<1;f[b]=d<1?c:0,d=0L,c++)
            for(long h:f)
                d=h>0&&c/h*h==c?1:d;
    javax.xml.bind.JAXB.unmarshal(""+Arrays.asList(f),Long.class);
}

ব্যাখ্যা:

Long c,d,f[]={};                                                //Initialize variables.

for(f=java.util.Arrays.copyOf(f,b),Arrays.fill(f,0L);b-->0;)
    f=java.util.Arrays.copyOf(f,b),Arrays.fill(f,0L)            //Initialize f to an array of 0's.
                                                     b-->0      //Iterate over the first b primes.

for(d=0L;f[b]<1;f[b]=d<1?c:0,d=0L,c++)
    d=0L                        d=0L                            //Initialize d to 0.
         f[b]<1                      c++                        //Increment c while the b'th prime is 0.
                f[b]=d<1?c:0                                    //If d = 0, the b'th prime = c, else continue.

for(long h:f)                                                   //Iterate over all found primes.

d=h>0&&c/h*h==c?1:d;
  h>0                                                           //Ignore non-found primes.
       c/h*h==c                                                 //Equivalent to c%h==0
               ?1:d                                             //If h is prime and c is divisible by h, d = 1. Otherwise d stays unchanged.

javax.xml.bind.JAXB.unmarshal(""+Arrays.asList(f),Long.class)   //Print solution to stderr
javax.xml.bind.JAXB.unmarshal(                   ,Long.class)   //Prints what's contained to stderr.
                                 Arrays.asList(f)               //Convert f to list.
                              ""+                               //Convert to string.

আমার মূল সমাধানটি একটি returnবিবৃতি ব্যবহার করেছে । স্ট্যাকওভারফ্লোতে এই প্রশ্নটি জিজ্ঞাসা করার পরে , রিগেটম্যান প্রাইম লেটারগুলি ব্যবহার না করে আউটপুট / রিটার্নের একটি উপায় সরবরাহ করতে যথেষ্ট দয়াবান ছিল।

যথারীতি পরামর্শগুলি স্বাগত :)


3
+1 টি। আপনার এবং রাগটম্যানের পক্ষে এটি বের করা সত্যিই কঠিন ছিল। খুব চিত্তাকর্ষক. :)
টিএনটি

5

রুবি, 74

->n,*o{o<<[2..n*n][0].find{|x|!o.find{|y|1.>x.^y.*x.div y}}until o[n-1]
o}

ব্যাখ্যা:

*oএকটি খালি আউটপুট অ্যারের সূচনা করে। এটির nআইটেম না হওয়া পর্যন্ত আমরা ক্ষুদ্রতম সংখ্যা> = 2 খুঁজে পাই যা বর্তমানে কোনও আইটেম বিভক্ত করে না o, তারপরে এটি যুক্ত করুন o। বিভাগের জন্য পরীক্ষার জন্য, হ্যাঁ। সমস্ত ভাল অপারেটর অনুমোদিত নয় এবং আমি এমনকি ব্যবহার করতে পারি না divmod। আমি দেখতে পেলাম সেরাটি ব্যবহার করা x.div y, যা এক্সকে y দ্বারা বিভক্ত করে এবং রাউন্ড ডাউন করে নিয়ে যায়, তারপরে আবার y দিয়ে গুণ করে। এটি যদি x এর সমান হয় তবে কোনও বৃত্তাকার ছিল না, তাই y এক্সকে ভাগ করে। 1.>x.^একটি সমতা পরীক্ষা, যাওররের ফলাফল 0 হয় কিনা তা যাচাই করা হচ্ছে .প্রতিটি অপারেটরের আগে আপনি .ফ্রি অপারেটর কল এবং প্রথম বন্ধনী মুক্ত পদ্ধতি কলগুলিকে মিক্স করতে পারবেন না ।

সম্পাদনা করুন: পোস্ট করার পরে পরিসীমা-চেকিং স্পেসিফিকেশন যুক্ত করা হয়েছিল, আমার ধারণা। মেনে চলার জন্য characters৯ টি অক্ষর প্রয়োজন:

->n,*o{o<<[*2..-~n*n].find{|x|!o.find{|y|1.>x.^y.*x.div y}}until o[n-1]||n<1
o}

4

সিজেম, 38 37 30 বাইট

{_~2#,2>\{(\{1$37c~},\p}*'<(~}

এখানে চেষ্টা করুন

আমি মনে করি এটি সমস্ত নিয়ম মেনে চলতে হবে এবং যে কোনও অ-নেতিবাচক এন এর জন্য কাজ করা উচিত (যেমন টি অসীম) এর জন্য কাজ করে। এটি যদিও মারাত্মকভাবে অক্ষম, তাই এটি বৃহত সংখ্যার জন্য চেষ্টা করবেন না।

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

কোডটির বেশিরভাগটি ইনপুট বৈধতা, তারপরে ইরোটোথিনিসের চালনী। আমার কেবল 3 টি জায়গায় ইনপুট সীমাবদ্ধতার আশপাশে কাজ করা দরকার:

  • )সিজেমে ইনক্রিমেন্ট। আমার এটি একবার দরকার ছিল তবে এটি ~(বিটওয়াইস পরিপূরক) দিয়ে প্রতিস্থাপন করতে পারলাম কারণ আমি পরে যেকোনভাবে সংখ্যাটি স্কোয়ার করছি।
  • %মডুলো হয়। আমি 37c~পরিবর্তে ব্যবহার করছি , যা প্রথমে চরিত্রটি তৈরি করে %এবং তারপরে এভালটি। এটি কোডটিকে অনেক ধীর করে তোলে।
  • ;প্যাকগুলি এবং স্ট্যাক থেকে একটি উপাদান বাতিল করে। আমাকে শেষ পর্যন্ত এটি করা দরকার। পরিবর্তে আমি ব্যবহার করছি '<(~যা চরিত্রকে ধাক্কা দেয় <, এটি হ্রাস করে এবং এটিই।

আমি ভেবেছিলাম যে সমস্ত ইনপুট পার্সিং বিধি দেওয়া হয়েছে, আমাদের কেবল ইতিমধ্যে পার্স করা পূর্ণসংখ্যা গ্রহণ করার অনুমতি নেই।
রানার 1212

@ রানার ১১১২ আমাদের "একটি ফাংশন যা পূর্ণসংখ্যা গ্রহণ করে" লেখার অনুমতি দেওয়া হয়। "কোনও ক্রিয়া নয় যা কোনও পূর্ণসংখ্যার স্ট্রিং উপস্থাপনা গ্রহণ করে"।
মার্টিন এন্ডার

3

বাশ + কোর্টিলস, 227 বাইট

printf -vb br`dc<<<Di14B8209P`
printf -vc -- $[$1-0]
[ "${1#$c}" -o $c -lt 1 ]||{
for i in {2..104729}
{
for f in `jot $[i-1] $[i-1] 1`
{
[ 0 -lt `dc<<<"$i $f~p"` ]||$b
}
[ $f -lt 2 ]&&printf $i\ &&: $[c--]
[ $c -lt 1 ]&&$b
}
}

এটি বেশ কৃপণ ছিল। কিছু জিনিস যার মধ্যে আমি দৌড়েছি:

  • বেশিরভাগ লুপগুলি ( whileএবং until) ব্যবহারযোগ্য নয় কারণ এগুলি সবচেয়ে বেশি বন্ধ হয় doneযার সাথে একটি শেল কীওয়ার্ড এবং কোনও পরিবর্তনশীল প্রসারণের ফলাফল হতে পারে না (যদি না evalব্যবহৃত হয় তবে এটি খুব বেশি কার্যকর হয় না)। শুধুমাত্র ব্যবহারযোগ্য লুপ for/ inযা করতে পারবেন {/ }পরিবর্তে do/ donefor (( ; ; ))ব্যবহারযোগ্য হয় না।
  • = বেরিয়ে গেছে, সুতরাং ভেরিয়েবলগুলি নির্ধারণের জন্য আমাদের আরও একটি উপায় প্রয়োজন। printf -vএই জন্য ভাল।
  • আমরা জানি যে পি (10000) হ'ল 104729 তাই সম্ভাব্য প্রাইমগুলির জন্য বাইরের লুপের জন্য আমরা কেবল 2 থেকে 104729 এ লুপ করতে পারি এবং একবার পর্যাপ্ত প্রাইম থাকলে ব্রেক করতে পারি break
  • jotঅভ্যন্তরীণ লুপে সম্ভাব্য কারণগুলির তালিকা তৈরি করে। যদি কোনও সম্ভাব্য ফ্যাক্টর একটি সম্ভাব্য প্রধানকে ভাগ করে দেয় তবে তা প্রধান নয় এবং আমরা তাড়াতাড়ি বের হয়ে যাই break
  • ভাগ্যক্রমে breakএকটি শেল বিল্টইন এবং কোনও কীওয়ার্ড নয়, সুতরাং এটি কোনও প্রসারণের ফলে তৈরি হতে পারে। dcএকটি বেস 13 নম্বরকে উপস্থাপনে রূপান্তর করে eak
  • কোনও সম্ভাব্য ফ্যাক্টর সম্ভাব্য প্রাইমকে ভাগ করে দেয় কিনা তা পরীক্ষা করতে, আমরা সাধারণ /বা %শেল পাটিগণিত অপারেটরগুলি ব্যবহার করতে পারি না । সুতরাং এটি dcs ~অপারেটরের কাছে আউটসোর্স , যা ভাগফল এবং স্ট্যাকের বাকী অংশকে ধাক্কা দেয়।
  • -lt - এর চেয়ে কম - হ'ল একমাত্র ব্যবহারযোগ্য শেল তুলনা অপারেটর।
  • echoআউটপুট জন্য কোন ব্যবহার। printfযতক্ষণ না আমরা এড়িয়ে চলি ততক্ষণ কাজ করে%

সঠিকভাবে ইনপুট বৈধতা পাওয়া কিছুটা ব্যথা is এটি অবৈধ ইনপুট ক্ষেত্রে কিছুই দেয় না।

আউটপুট:

$ ./primenoprime.sh 10
2 3 5 7 11 13 17 19 23 29 $ 

3

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

\n->[fst c|c<-zip[p|p<-[2..],not$or[b>p-1&&b-1<p|b<-[u*v|u<-[2..p-1],v<-[2..p-1]]]][1..n]]

এটি একটি বেনামি ফাংশন যা পূর্ণসংখ্যা নেয় n ইনপুট হিসাবে ।

এটি কীভাবে কাজ করে: [p|p<-[2..],not$or[b>p-1&&b-1<p|b<-[u*v|u<-[2..p-1],v<-[2..p-1]]]]( হাস্কেল উইকিতে প্রথম সংখ্যা ওয়ান-লাইনারের প্রথম উদাহরণ তবে elemফাংশনটি প্রতিস্থাপনের সাথে) প্রাইমগুলির অসীম তালিকা তৈরি করে। zipতা থেকে সংখ্যার 1জন্য nএকটি তালিকা তৈরি করতে (prime, seq. number)জোড়া। সিক সরিয়ে ফেলুন। সংখ্যা, আবার। ফলাফল দৈর্ঘ্যের প্রাইমগুলির একটি তালিকা n


1

মরিচা, 64897 বাইট

|n|println!{"{:?}",&[2,3,6-1,7,11,13,17,19,23,29,31,37,41,43,47,60-7,0x3b,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,0x97,0x9d,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,0xfb,0x101 ...}

(অক্ষর সীমাবদ্ধতার কারণে কোড স্নিপড, সম্পূর্ণ সমাধান এখানে )

নিম্নলিখিত জং বৈশিষ্ট্যগুলি প্রধান নিষেধাজ্ঞার কারণে অনুপলব্ধ হয়ে উঠেছে:

  • ফাংশন কলগুলি যেমন তাদের প্রয়োজন হয় ')'
  • নিয়মিত বাঁধাই, যেহেতু তাদের লেট প্রয়োজন (ই)
  • ম্যাক্রো সংজ্ঞা, তাদের দরকার ম্যাক্রো-বিধি! (A, E, মি)
  • বিবৃতি মেলে, তাদের ম্যাচ (ক, মি) এবং => (=) প্রয়োজন
  • মিউট্যাবিলিটি, যেহেতু এটি সর্বদা মিউট কীওয়ার্ড (এম) এর সাথে পরিচিত।
  • ফিরে (ই), বিরতি (ক, ই), চালিয়ে যান (ই)
  • অন্য (ঙ)

আপনি প্রযুক্তিগতভাবে যা ব্যবহার করতে পারেন:

  • পারেন। তবে অন্য কিছু না করে, এগুলি অভিব্যক্তিক প্রসঙ্গে অনর্থক, তাই কেবলমাত্র পার্শ্ব প্রতিক্রিয়াগুলির জন্যই ভাল।
  • ম্যাক্রো। প্রিন্টের মতো স্ট্যান্ডার্ড ম্যাক্রো! সাধারণত () অনুসরণ করা হয় তবে এর পরিবর্তে {} বা [] ব্যবহার করা আইনত। এটি ছাড়া, কাজটি অসম্ভব হয়ে উঠবে।
  • বন্ধ, সবচেয়ে সংকীর্ণ অর্থে। আপনি তাদের কল করতে পারবেন না (প্রয়োজন ()) বা তাদের আবদ্ধ করতে পারেন (যাক প্রয়োজন) তবে আপনি একটি একক অ-পুনরাবৃত্তিকে সংজ্ঞায়িত করতে পারেন। এটি না করে, কাজটি অবশ্যই অসম্ভব হয়ে উঠবে।
  • structs মধ্যে।
  • লুপের জন্য এগুলি প্রতিশ্রুতিবদ্ধ, যেহেতু তারা প্রকৃতপক্ষে পরিবর্তনশীল বাঁধাইয়ের অনুমতি দেয় এবং তারা একটি পুনরাবৃত্তি গ্রহণ করে, যা এখনও পরিসরের সিনট্যাক্সের সাথে সংজ্ঞায়িত করা যায়। পুনরুক্তিকারী এমনকি একটি অভিব্যক্তি হতে পারে।
  • +,% এবং / বাদে বিল্টিন অপারেটরগুলি। সংক্ষিপ্ত-সার্কিট লজিকাল অপারেটরগুলি আশাব্যঞ্জক বলে মনে হচ্ছে।

এই সরঞ্জামগুলির সাহায্যে আমি কিছুই টুরিং-সম্পূর্ণ করতে পারিনি। আমি দুঃখিত. যা অবশিষ্ট ছিল তা হ'ল 5 এর সম্পূর্ণ পরিষ্কার 10000 প্রাইম অন্তর্ভুক্ত করা। কমপক্ষে আপনি এটি টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো করে বলতে পারেন।

আমি খুব চাই টুরিং টারপিট ডাইভিংয়ের বিশেষজ্ঞরা (বা জাস্ট!) আমাকে বলুন আমি আরও ভাল কিছু করতে পারতাম কিনা!


1

জিএনইউ এপিএল, 75 68 67 65 59 56 55 টি অক্ষর

⎕IOঅবশ্যই 1

∇z←p n
z←2,j←3
j←j--2
→2×⍳∨⌿1>z|j
z←z,j
→2×⍳n>⍴z
z←n↑z∇

আমি এই অতিরিক্ত পরে বুঝতে পেরেছিলাম যে আমার অতিরিক্ত জায়গা ছিল!


এটি কি এপিএল এনকোডিং বা ইউটিএফ -8 এ রয়েছে? আপনি যদি এপিএল এনকোডিংয়ে রূপান্তর করেন (এবং এটি বৈধ) তবে এটি বাইটে আরও খাটো হবে।
NoOneIsEre

হল UTF-8। হ্যাঁ, তবে এই নিম্ন চরিত্রের পয়েন্টগুলিতে আরও প্রাইমস হতে চলেছে।
জাকারি

সঠিকভাবে বলতে গেলে এটি এখন এপিএলে গণনা করা বাইট, তবে উত্সটিতে এটি নিষেধাজ্ঞাই হ'ল ইউনিকোড। (আমি বুঝতে পারি যে চ্যালেঞ্জটি অ-ইউনিকোড বাইট গণনা অনুমোদিত)
জাকারিয়া

0

পাইথ - 12 বাইট

# প্রাইম কিনা তা দেখতে পাইথের প্রাইম ফ্যাক্টরাইজেশন ফাংশনটি ব্যবহার করে। !tPTমিলিয়ন সমস্যার আওতায় প্রাইমসের জন্য আমার উত্তরটিতে আমাকে কৌশলগুলি ব্যবহার করার পরামর্শ দেয়।

<f!tPTr2^T6Q

যেহেতু ফিল্টারটি কেবল এন এর অধীনে প্রাইমগুলির জন্য কাজ করে এবং প্রথম এন নয়, তাই আমি কেবল পাই (x) এর 10,000 এর জন্য বিপরীতটি দেখেছি এবং 104,000 পেয়েছি তাই আমি 10⁶ এর নীচে প্রাইম ব্যবহার করি এবং প্রথম এন পাই। এটি আসলে চলতে পারে না, সুতরাং আপনার ^T6সাথে প্রতিস্থাপন করে পরীক্ষা করা উচিত ^T3এবং 1000 এর নীচে এনকে সীমাবদ্ধ করুন st স্টিডিন এবং আউটপুট থেকে স্টডআউট ইনপুট।

<          Q     Slice first n
f     r2^T6      filter on range 2->10⁶
 !               Logical not (gives true if tail is empty)
  t              Tail (all but first, so gives empty if prime fact is len 1)
   PT            Prime factorization of filter var (len 1 if num is prime)

5
বিধিগুলি থেকে: "বিল্ট-ইন প্রাইম জেনারেটর এবং প্রাথমিকতা পরীক্ষকদের ব্যবহারের অনুমতি নেই।"
রানার 1112

@ রানার ১১১২ হ্যাঁ তবে এটি কোনও প্রাথমিকতার পরীক্ষক নয়, এটি প্রধান কারণ, এটি নিয়মের সীমানায়। আমার সম্ভবত জিজ্ঞাসা করা উচিত এটি অনুমোদিত কিনা?
মালটিসেন

@Maltysen "বিল্ট-ইন প্রাইম জেনারেটর এবং প্রাথমিকতা পরীক্ষকদের ( প্রাইম ফ্যাক্টরীকরণ ফাংশন অন্তর্ভুক্ত) ব্যবহারের অনুমতি নেই" - এটি আমার কাছে বেশ স্পষ্ট বলে মনে হয়।
ডিজিটাল ট্রমা 20'15

4
এই উত্তর পোস্ট হওয়ার পরে @ ডিজিটালট্রামার স্পষ্টতা "(এতে প্রাইম ফ্যাক্টেরাইজেশন ফাংশন অন্তর্ভুক্ত)" যুক্ত করা হয়েছিল।
মার্টিন ইন্ডার

মার্টিনব্যাটনার ট্রু আমি এটি @ প্রোগ্রামএফএক্স এর বিচক্ষণতার অনুমান করি।
ডিজিটাল ট্রমা 20'15
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.