তুমি আমার পিছনে শয়তান প্রাইম!


22

শয়তান-primes

তারা কে?
তারা হয় Primesধারণকারী 666
এই শয়তান-primes আছেন: [46663,266677,666599,666683,616669]
এগুলো না :[462667,665669,36363631,555]

চক্রান্ত

61 6661১ এর চেয়ে বড় প্রতিটি সংখ্যার পিছনে শয়তান-প্রাইম রয়েছে

চ্যালেঞ্জ

একটি পূর্ণসংখ্যা দেওয়া n>6661শয়তান-প্রধানমন্ত্রীকে পিছনে (বা সমান) এবং নিজের নিকটে খুঁজে পান।

উদাহরণ

পূর্ণসংখ্যা n=30000: 3 শয়তান-primes (এসপি) এটি পিছনে রয়েছে [6661, 16661, 26669]
আপনার কোড অবশ্যই ফিরে আসতে হবে 26669যা এর পিছনে সবচেয়ে নিকটতম is

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

ইনপুট-> আউটপুট

6662->6661    
10000->6661    
66697->66697 (a SP returns himself)  
328765->326663  
678987->676661
969696->966677

বিধি

nআপনার ভাষার সীমার মধ্যে যে কোনওটির জন্য আপনার কোডটি কাজ করা উচিত ।

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর!


1
"প্রায় এক মিনিট" সংজ্ঞা দিন। এটি কি + - 30 সেকেন্ড? আমি ব্যক্তিগতভাবে মনে করি যে ৩০ মিনিট এবং এক মিনিট এর চেয়ে বেশি পার্থক্য করে না ... এছাড়াও বোনাসগুলি সাধারণত বোকা বানানো হয় ... এছাড়াও আমি মনে করি এটি একটি চ্যালেঞ্জ হিসাবে আরও ভাল হতে পারে output the nth satan prime...
সকরাটিক ফিনিক্স

ঠিক আছে লোকেরা ... বোনাস সরানো হবে ...

আশা করি চ্যালেঞ্জ শিরোনামে আমি যে সম্পাদনা করেছি তাতে আপনি আপত্তি করবেন না।
শেগি

3
@ শেগি শিরোনাম পরিবর্তন কোন পয়েন্টটি উপস্থাপন করে ...?
কনর ও'ব্রায়ান

3
আমি অনুমান করি যে কনরও'ব্রায়ান ছড়াছড়ি এবং প্রত্নতাত্ত্বিক উপস্থিতি।
wizzwizz4

উত্তর:



7

নিম , 9 বাইট

>ͻ:D+6S𝕚÷

ব্যাখ্যা:

>         Increment input
 ͻ        Start infinite loop
  :        Previous prime
   D       Duplicate
    +6     Push 666
      S    Swap
       𝕚   See if 666 is a substring of the top of the stack
        ÷  If true, break

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


সুতরাং "66 অঙ্কে প্রিপেন্ডড" ধাক্কা দেওয়ার জন্য আসলেই একটি বিল্টিন আছে? ও_ও নেইম এগিয়েছে।
এরিক দ্য আউটগল্ফার

1
কিভাবে +6666 ধাক্কা? নাকি নিম কি সেই ধাতব?
রবার্ট ফ্রেজার

6
@ রবার্টফ্রেজার স্পষ্টতই +xবোঝায় 612 + অক্ষর কোড x। কোডটি 654 হিসাবে ঘটে তাই 612 + 54 = 666।
ফারগুসক

@ এরিকথ আউটগল্ফার ওয়েল, নিম তিনটি অঙ্কের সংখ্যা এবং দুটি বাইট ব্যবহার করে কয়েকটি চার অঙ্কের প্রতিনিধিত্ব করতে পারে।
Okx

2
@ এরিকথিউটগল্ফার '\+*=100,356,612,868 ( প্লাসটি নিম্নের চরের অর্ডিনাল)
জোনাথন অ্যালান

7

জেলি , 10 9 বাইট

@ ডেনিসকে 10% ধন্যবাদ সংরক্ষণ করা হয়েছে!

ÆRwÐf666Ṫ

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

ব্যাখ্যা

ÆR          # All primes in range [2, input]
   Ðf      # Keep those which satisfy
  w        # truthy if y is in x
     666   #           ^ (this is y)
        Ṫ  # Tail (take the last element)

বিকল্প:ÆRẇ@Ðf666Ṁ
মিস্টার এক্সকোডার

5
আমি পছন্দ করি যে লেজটি (66 666 এর ঠিক পরে) ক্রসের মতো দেখাচ্ছে।
কেইন

4
wপরিবর্তে কাজ করা উচিত ẇ@
ডেনিস ২

@ ডেনিস এস / এস / ডাব্লু / অবশ্যই এটি কাজ করে: পি
এরিক দ্য আউটগোল্ফার

5

পাইথ , 15 14 বাইট

ডেভ সহায়তায় 1 বাইট সংরক্ষিত

969696আমার মেশিনে মেমরির ত্রুটি এবং আরও উচ্চতর কিছু, তবে এটি পর্যাপ্ত মেমরি দেওয়া থাকলে এটি ঠিক।

ef&/`T*3\6P_TS

এখানে এটি ব্যবহার করে দেখুন বা টেস্ট স্যুটটি দেখুন।


কিভাবে?

ef & / `T * 3 \ 6P_TSQ - সম্পূর্ণ প্রোগ্রাম, শেষে অন্তর্নিহিত ইনপুট (প্রশ্ন) সহ

             এসকিউ - ব্যাপ্তি [1, প্রশ্ন]
 চ - ফিল্টার।
          পিটি - প্রধান কি?
  & - এবং
   / `টি * 3 \ 6 - এতে 666 রয়েছে।
ই - শেষ উপাদান।
                - স্পষ্টতই ফলাফল আউটপুট।

পাইথ , 14 বাইট

ef/`T*\63fP_TS

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


14 বাইট:ef&/`T*3\6P_TS
ডেভ

আমি ভুল করে শেষের প্রশ্নটি যুক্ত করেছি, এর 14
ডেভ

"666"666 স্ট্রিংটি বর্ণনা করার একটি কম দক্ষ উপায়*3\6
ডেভ


4

বাশ + কোর ইউটিলেটস, 51 49 বাইট

seq $1|tac|factor|awk 'NF==2&&/666/&&!a--&&$0=$2'

কমান্ড লাইন আর্গুমেন্ট নেয়। বড় সংখ্যার সাথে বেশ ধীর হতে পারে।


এটি সমস্ত "স্যাটান প্রাইমস" কে 6661 এ আউটপুট দেয় তবে এটি কেবল ইনপুটটির নীচের নিকটতমটি মুদ্রণ করা উচিত: এটি অনলাইনে চেষ্টা করুন । একটি ফিক্স কেবল |head -1শেষ যোগ করা হবে।
জাস্টিন মেরিনার ২

@ জাস্টিনমারিনার লোল, ওফস, এটি ঠিক করেছেন
মার্কাসফল্টওয়্যার

4

গণিত, 64 62 61 53 বাইট

#//.i_/;!PrimeQ@i||ToString@i~StringFreeQ~"666":>i-1&

-1 বাইট @ কেলিলাউডারকে ধন্যবাদ

-8 বাইটস (বাহ) @ নোট্যাট্রিকে ধন্যবাদ

ব্যাখ্যা

একটি ইনপুট নিন। আমরা এই পরিস্থিতিতে এই হ্রাস:

  • ইনপুটটি প্রধান নয়, বা

  • ইনপুটগুলির সংখ্যাগুলিতে একটি সারিতে তিনটি 6 এস থাকে না।

আমরা পুনরাবৃত্তি করি যতক্ষণ না কোনও শয়তান প্রধান পৌঁছে যায়।


2
খুব সুন্দর. আপনি আরও একবার হারাতে পারেন যেহেতু একটি প্রাইম 6 এ শেষ হতে পারে না
কেলি লোডার

@ কেলিলাউডার ভাল পয়েন্ট
জংহওয়ান মিন

1
এটি স্ট্রিং সহ আরও সংক্ষিপ্ত:#//.i_/;!PrimeQ@i||ToString@i~StringFreeQ~"666":>i-1&
একটি গাছ নয়

1
@ নোটট্রি বাহ! চমৎকার!
জংহওয়ান মিন


3

জাপট , 14 বাইট

õ fj w æ_sø666

এটা পরীক্ষা করো

সেখানে 50% সময়-ভিত্তিক বোনাস থাকায় দেখা হচ্ছে : 969696অর্ধ সেকেন্ডের নীচে পরীক্ষার কেস সম্পন্ন করে ।


ব্যাখ্যা

পূর্ণসংখ্যার অন্তর্নিহিত ইনপুট U

õ

থেকে পূর্ণসংখ্যার একটি অ্যারের জেনারেট করুন 1থেকে U

fj

ফিল্টার ( f) প্রাইম

w

বিপরীত।

æ_

1কোনও ফাংশন পেরিয়ে যাওয়ার পরে সত্যিকারের মান (এই ক্ষেত্রে ) প্রদান করে এমন প্রথম উপাদানটি ফেরত দিন যা পরীক্ষা করে যদি ...

sø666

পূর্ণসংখ্যার স্ট্রিংয়ে রূপান্তরিত ( s) এতে ( ø) 666 থাকে।


দ্রুত বিকল্প, 15 বাইট

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

U-@j *U´sø666}a

এটা পরীক্ষা করো


2

পাওয়ারশেল , 128 বাইট

param($n)function f($a){for($i=2;$a-gt1){if(!($a%$i)){$i;$a/=$i}else{$i++}}}for(){if($n-match666-and($n-eq(f $n))){$n;exit}$n--}

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

পাওয়ারশেলের কোনও প্রাইম ফ্যাক্টেরাইজেশন অন্তর্নির্মিত নেই, সুতরাং এটি প্রাইম ফ্যাক্টর বাডস সম্পর্কে আমার উত্তর থেকে কোড ধার করে ।

আমরা ইনপুট নিই $n, তারপরে একটি নতুন ঘোষণা করি function fযা ইনপুটটির কারণগুলি গণনা করে $a। যদি ইনপুটটি প্রাথমিক $aহয়, তবে এটি ঠিক ফিরে আসবে $a

প্রোগ্রামটির মূল অংশটি হ'ল অসীম for()লুপ। লুপ ভিতরে, আমরা চেক যদি $n -matchবিরুদ্ধে স্প্যানিশ ভাষায় 666এবং তা $nমৌলিক (অর্থাত, $nকারণের সব মিলে যায় $n)। যদি এটি হয় তবে আমরা $nপাইপলাইনে এবং exitঅন্তর্নিহিত আউটপুট সহ রাখি । অন্যথায়, আমরা হ্রাস $n--এবং লুপ অবিরত।


ছাঁটা খনি সংস্করণ নিচে এবং মাত্র অর্ধেক আপনার বাইট গণনা আঘাত পরিচালিত: ডি - codegolf.stackexchange.com/a/140539/571
TessellatingHeckler

2

পাইথন 2 , 77 76 বাইট

সম্পাদনা করুন: -১ বাইট @ মিঃ এক্সকোডারকে ধন্যবাদ

ধীরগতিতে চলমান সময়, ভিতরে চলে O(n^2)

lambda x:max(q for q in range(x+1)if"666"in`q`*all(q%t for t in range(2,q)))

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

আরও 76 বাইট সমাধান

lambda x:max(q*("666"in`q`*all(q%t for t in range(2,q)))for q in range(x+1))

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

সঙ্গে SymPy 73 বাইট

lambda x:max(q for q in primerange(0,x+1)if"666"in`q`)
from sympy import*

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


76 বাইট: lambda x:max(q for q in range(x+1)if"666"in`q`*all(q%t for t in range(2,q)))- এর max()পরিবর্তে ব্যবহার করুন[][-1]
মিঃ এক্সকোডার

2

পাওয়ারশেল , 71 69 64 বাইট

param($s)for(;$s-notmatch666-or(2..($s/2)|?{!($s%$_)});$s--){}$s

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

  • 328765 আমার মেশিনে ~ 30 সেকেন্ড সময় নেয়, তবে টিওআরুনের 60 সীমা সীমা ছাড়িয়ে যায়।

  • 678987 লাগে ~ 1.5 মিনিট।

  • 969696 লাগে ~ 4.5 মিনিট।

কারণগুলি করার চতুর উপায়।
অ্যাডমবর্কবার্ক

2

এমএটিএল, 16 বাইট

ZqP"@V'666'Xf?@.

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

ব্যাখ্যা

         Implicitly grab input (n)
Zq       Compute the primes up to n (output is in increasing order)
P        Flip the array (so larger primes come first)
"        For each prime
  @V     Convert it to a string
  '666'  Push the string literal '666' to the stack
  Xf     Find the location of '666' in the prime
  ?      If it was present...
    @.   Push it to the stack and break
         Implicitly display the stack contents

2

সি ++ 389 বাইট

#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
#include <boost/multiprecision/miller_rabin.hpp>
using namespace boost::random;typedef boost::multiprecision::cpp_int Z;int main(int,char**v){mt19937 m(clock());independent_bits_engine<mt11213b,256,Z>g(m);Z n{v[1]},p;while(p++<=n)if(miller_rabin_test(p,25,g)&&p.convert_to<std::string>().find( "666" )!=-1)std::cout<<p<<" ";}

এটি একটি সম্পূর্ণ প্রোগ্রাম!
এটি সংকলন করতে আপনার বুস্ট দরকার। (অথবা আপনার প্রিয় অনলাইন সি ++ শেলটিতে অনুলিপি করুন এবং আটকান)
কমান্ড-লাইন এন দিয়ে এনটি চালান আর্গুমেন্ট হিসাবে।

Ungolfed:

#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
#include <boost/multiprecision/miller_rabin.hpp>
using namespace boost::random;

typedef boost::multiprecision::cpp_int integer;

int main( int argc, char** argv )
{
  mt19937 mt( clock() );
  independent_bits_engine <mt11213b, 256, integer> rng( mt );

  integer input {argv[ 1 ]};
  integer possible;

  while (possible++ <= input)
    if (
      // is_prime( possible )
      miller_rabin_test( possible, 25, rng )
    && 
      // possible has "666" in it
      (possible.convert_to <std::string> ().find( "666" ) != std::string::npos))

    std::cout << possible << " ";
}

শর্টকাটগুলি এলোমেলো নম্বর পরীক্ষার ক্ষেত্রে করা হয়েছিল। মূল কোডটি 6661 এ সম্ভাব্য প্রাইমগুলি পরীক্ষা করা শুরু করে এবং দুটি দ্বারা বর্ধিত হয়। আপনি এনপোসের পরিবর্তে (-1) এর কারণে একটি সংকলক সতর্কতাও পাবেন।

তবুও, এটি বেশ দ্রুত চলে। আমার পুরানো এএমডি সেম্প্রন 130 এ 1,000,000 এর নীচে সমস্ত 214 শটান প্রাইম খুঁজে পেতে কেবল প্রায় 40 সেকেন্ড সময় নিয়েছিল।

: ^ ডি


2

বাশ + বিএসডি-গেমস প্যাকেজ, 33

  • 2 ফেডের সাহায্যে ফেডেরিকো পোলোনিকে ধন্যবাদ জানানো হয়েছে।
primes 2 $[$1+1]|grep 666|tail -1

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


আপনি যদি শেষ দুটি কমান্ডের সাথে প্রতিস্থাপন করেন তবে আপনি 1 বাইট সংরক্ষণ করতে পারবেন tail -n1
ফেডেরিকো পোলোনি

@ ফেডেরিকো পোলোনি দুহ - বিশ্বাস করতে পারি না আমি tailএখানে ভুলে গেছি । আসলে tail -1আরও 1 কম।
ডিজিটাল ট্রমা

1

পাইথন 3 , 85 83 80 বাইট

হলভার্ডস 4 বাইট সংক্ষিপ্ত কারণ এটি পাইথন 2 এ সম্পন্ন হয়েছে।

lambda k:max(x for x in range(k+1)if"666"in str(x)*all(x%i for i in range(2,x)))

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

কিছুটা সময় দিন, এটি O(n^2)জটিলতার কারণে অত্যন্ত ধীর ।


1

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

-1 বাইট ধন্যবাদ @ThePirateBay।

f=n=>/666/.test(d=n)&eval("while(n%--d);d<2")?n:f(n-1)

বড় ইনপুটগুলির সাথে খুব ধীর। প্রাথমিক কোডটি এই কোড গল্ফ উত্তর থেকে অভিযোজিত

সময়

  • ইনপুট 10000 10 সেকেন্ড সময় নিয়েছিল
  • ইনপুট 328765 3 মিনিট সময় নিয়েছিল
  • ইনপুট 678987 9 মিনিট সময় নিয়েছিল
  • ইনপুটটি 96969616 মিনিট সময় নিয়েছিল

টেস্ট

এর মধ্যে কয়েকটি আপনার ব্রাউজারকে কয়েক মিনিটের জন্য স্তব্ধ করে রাখবে।

দ্রুততম সংস্করণ, 56 বাইট

প্রতিটি পরীক্ষার কেস এক সেকেন্ডের অধীনে সম্পন্ন করে।

f=n=>/666/.test(n)&&eval("for(d=2;n%d++;);d>n")?n:f(n-1)

;[6662, 10000, 328765, 678987, 969696].forEach(n=>console.log(`f(${n}) -> ${f(n)}`))


2
আপনার কখনই এটি করা উচিত নয়। এটি কোড গল্ফ এবং কর্মক্ষমতা সম্পূর্ণ অপ্রাসঙ্গিক। আমি দৃ strongly়ভাবে আপনার আগের 55 বাইট উত্তরে ফিরে যাওয়ার পরামর্শ দিচ্ছি। এছাড়াও, আপনি প্রতিস্থাপন 54 বাইট এটা কমে যায় d==1সঙ্গেd<2 যেহেতু n>6661

52 বাইট: f=n=>/666/.test(n)&(g=d=>n%--d?g(d):d<2)(n)?n:f(n-1) তবে বৃহত সংখ্যার জন্য পুনরাবৃত্তি ত্রুটি নিক্ষেপ করবে।
শেগি

f=n=>/666/.test(d=n)-eval("while(n%--d);d")?f(n-1):n
l4m2

1

রুবি, 67 , 66 , 58 , 56 বাইট

+7জন্য বাইট অন্তর্ভুক্ত-rprime

->z{z.downto(1).find{|x|/666/=~x.to_s&&x.prime?}}

এটি বেশ দ্রুত, কমপিউটিংয়ের মানগুলি ~2^52প্রায় এক সেকেন্ডে এবং 2^645 মিনিটেরও কম সময়ে (২০১১ এমবিপি, রুবি ২.৩.১)।


1

স্ট্যাক্স , 10 বাইট

ü>:Ñb/VP6─

এটি চালান এবং এটি ডিবাগ করুন

ব্যাখ্যা (প্যাকযুক্ত):

^w:pc$666$#! Full program, implicit input-parsing
^            Increment input
 w           do-while:
  :p           Previous prime
    c$         Copy and stringify
      666$     Push "666"
          #    Number of occurences
           !   Logical not
             Implicit output

দুর্দান্ত প্রোগ্রাম। স্ট্যাক্স চেষ্টা করার জন্য ধন্যবাদ। এফওয়াইআই, "বিভাজক" বিকল্পটি এভাবে
পুনরাবৃত্তি

@ রিচার্সিভ আহ,
থেক্স



0

সি # (.নেট কোর) , 117 115 112 বাইট

f=>{for(int i=f;i>1;i--){int p=1,j=2;while(j<i)if(i%j++<1)p=0;if(p>0&$"{i}".Contains("666"))return i;}return 0;}

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

  • অপ্রয়োজনীয় ধনুর্বন্ধনী অপসারণ করে 2 বাইট সংরক্ষণ করা হয়েছে।
  • intঘোষণার সংমিশ্রণ করে 3 বাইট সংরক্ষণ করা হয়েছে ।

আমি নিশ্চিত যে এটিকে আরও খাটো করা যেতে পারে; সম্ভবত পুনরাবৃত্তভাবে কল করে func fএবং বাইরের- forলুপটি সরিয়ে দিয়ে ।

রিকার্সিভ অ্যাপ্রোচ, 85 বাইট

i=>{int p=1,j=2;while(j<i)if(i%j++<1)p=0;return p>0&$"{i}".Contains("666")?i:f(--i);}

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

আমি নিশ্চিত না যে এই সেটটি Func<int,int> f = nullপ্রথম সেট করার কারণে কোড-গল্ফের সীমানার মধ্যে কতটা ফিট করে এবং fএটিকে আবার বলা হয়, তবে বাইটগুলির দিকে গন্য হয় না। কোন ব্যাখ্যা প্রশংসা করা হবে।

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