প্রাথমিক স্ট্রিংস


27

প্রাইমেনারি ( বাইনারি-প্রাইম ) স্ট্রিংটি হ'ল যা বাইনারি গ্রিড হিসাবে লেখা হয়, প্রতিটি সারি এবং কলামে একটি মূল মোট থাকে।

এটি বেশ অস্পষ্ট ব্যাখ্যা, সুতরাং আসুন এটি একটি কাজের উদাহরণ দিয়ে ভেঙে দিন ...


এই উদাহরণের জন্য আমরা স্ট্রিংটি ব্যবহার করব bunny:

প্রথমে প্রতিটি চরিত্রের ASCII কোড পয়েন্ট এবং এর বাইনারি উপস্থাপনা সন্ধান করুন:

Char | ASCII | Binary

b      98      1100010
u      117     1110101
n      110     1101110
n      110     1101110
y      121     1111001

এই বাইনারি মানগুলি উপরে থেকে নীচে পর্যন্ত নিয়ে যান এবং গ্রিডে সাজান (প্রয়োজনে নেতৃস্থানীয় জিরো যুক্ত করুন):

1 1 0 0 0 1 0
1 1 1 0 1 0 1
1 1 0 1 1 1 0
1 1 0 1 1 1 0
1 1 1 1 0 0 1

তারপরে, 1প্রতিটি সারি এবং কলামে s এর সংখ্যা গণনা করুন :

1 1 0 0 0 1 0   > 3
1 1 1 0 1 0 1   > 5
1 1 0 1 1 1 0   > 5
1 1 0 1 1 1 0   > 5
1 1 1 1 0 0 1   > 5

v v v v v v v

5 5 2 3 3 3 2

যদি, এবং শুধুমাত্র যদি, প্রতিটি একক মোট প্রধান হয় (যেমন এখানে) তবে স্ট্রিংটি একটি বৈধ বাইনারি-প্রাইম।


চ্যালেঞ্জ

আপনার টাস্ক একটি ফাংশান বা প্রোগ্রাম যা, যখন একটি স্ট্রিং, আয় / আউটপুট দেওয়া তৈরি করা truthyযদি স্ট্রিং primenary, এবং falsyঅন্যথায়।

বিধি / বিবরণ

  • আপনি ধরে নিতে পারেন যে স্ট্রিংয়ের অক্ষরগুলি সর্বদা ASCII পরিসরে 33-126(অন্তর্ভুক্ত) থাকবে।
  • স্ট্রিং খালি হবে না।
  • একজন primenary স্ট্রিং নেই না একটি মৌলিক দৈর্ঘ্য আছে - উদাহরণস্বরূপ, W1n*4 অক্ষর থাকা সত্বেও, বৈধ।
  • এটি , তাই সংক্ষিপ্ত উত্তরটি (বাইটে) জেতে - তবে সমস্ত জমাটি স্বাগত।
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ করা হয়েছে।

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

'husband'     -> True
'HOTJava'     -> True
'COmPaTIBILE' -> True
'AuT0HACk'    -> True

'PPCW'        -> False
'code-golf'   -> False
'C++'         -> False
'/kD'         -> False

'HI'          -> False
'A'           -> False

Repl.it এর উপর একটি কার্যক্ষম, তবে অবিশ্বাস্যভাবে ভার্জোজ পাইথনের উদাহরণ রয়েছে যা আপনি আপনার সমাধানটির বিপরীতে পরীক্ষা করতে পারেন।


আমি জিজ্ঞাসা করতে পারি যে আপনি কীভাবে husbandএটি বৈধতা আবিষ্কার করেছিলেন ? নাকি তাদের কেউ? দুর্দান্ত সমস্যা যদিও!
গ্যাব্রিয়েল বেনামি

3
@ গ্যাব্রিয়েল বেনামি আমি খুশি যে কেউ জিজ্ঞাসা করেছেন! আমি একজন মাধ্যমে কর্তিত অনলাইন অভিধান ফাইল,, প্রতিটি চিঠির কয়েক র্যান্ডম হাতের চেষ্টা কখনও কখনও সংখ্যার জন্য চিঠি সুইচিং ইত্যাদি তারপর আমি যদি outputted তালিকা মাধ্যমে দেখে ছিল এবং পরীক্ষার বিষয় একটি দম্পতি আমি পছন্দ বাছাই করা
FlipTack

প্রতি 1-2 অক্ষর ইনপুট ফেরত দেওয়ার গ্যারান্টিযুক্ত False, সঠিক?
mbomb007

... কারণ 0এবং 1এটি প্রধান নয় এবং প্রদত্ত পরিসরে কেবল অক্ষরযুক্ত প্রতিটি 1-2 টি চর ইনপুট স্ট্রিং অন্তত একটি 0বা 1উল্লম্ব যোগ হিসাবে গ্যারান্টিযুক্ত । পরীক্ষার ক্ষেত্রে আপনার কয়েকটি 1 এবং 2 টি অক্ষরের স্ট্রিং যুক্ত করা উচিত।
mbomb007

@ mbomb007 1 চরের ইনপুটগুলিতে কলামের দিকের প্রাথমিক সংখ্যা থাকতে পারে না, তাই তারা ফিরে আসবে false। ২ টি চর ইনপুট পারে তবে আমরা যে ASCII ব্যাপ্তি ব্যবহার করছি তা তেমন নয়, তাই এই দৃশ্যের জন্য আপনি সঠিক।
ফ্লিপট্যাক

উত্তর:


8

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

BtXsw!shZp

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

এটি কাজের জন্য আদর্শ ভাষা। এটি চ্যালেঞ্জের স্পেসিফিকেশনের আক্ষরিক অনুলিপি।

Bt % Converts input to binary matrix, duplicate
Xs  % Sum columns (alternative X version to prevent defaulting to sum along first non-singleton dimension, thanks @Jonathan Allan)
w! % Get the duplicate to the top of the stack, transpose
s  % Sum again
h  % Concatenate horizontally
Zp % Check primality element-wise. Display implicitly.

যেহেতু যে কোনও শূন্য মেটা অনুসারে একটি এমএটিএল অ্যারে মিথ্যা করে তোলে , অন্য কিছুই প্রয়োজন হয় না - মূলত, একটি অন্তর্নিহিতকে (যদি) Aবলা হয় ?


aমিথ্যা হওয়া উচিত, কিন্তু ফিরে 1 1? (এর কলামগুলি প্রাইমগুলিতে
জুড়ে না

আমি মনে করি BtXsw!shZpএটি স্থির করে 10 এর জন্য বিজয়ী হবে
জোনাথন অ্যালান

@ Flp.Tck সারি ভেক্টরগুলির সাথে কাজ করার সময় ম্যাটল্যাবের 'ক্ষমাশীল' আচরণ সম্পর্কে সম্পূর্ণরূপে ভুলে গিয়েছিল। আমি দুঃখিত, এখনই এটি স্থির।
সানচাইজেস

এখনই কাজ করে :) (এটি চেষ্টা করে অনলাইনে লিংকটি আপডেট করতে পারেন)
ফ্লিপট্যাক

@ Flp.Tkc সম্পন্ন হয়েছে। একটি দুর্দান্ত চ্যালেঞ্জের জন্য ধন্যবাদ!
সানচিইস

4

জেলি , 13 12 11 বাইট

OBUZ;$S€ÆPẠ

TryItOnline! বা সমস্ত পরীক্ষার কেস

কিভাবে?

OBUZ;$S€ÆPẠ - Main link: word                  e.g. ha!
O           - cast to ordinals                 e.g. [104,97,33]
 B          - convert to binary                e.g. [[1,1,0,1,0,0,0],[1,1,0,0,0,0,1],[1,0,0,0,0,1]]
  U         - reverse each entry (say "b")     e.g. [[0,0,0,1,0,1,1],[1,0,0,0,0,1,1],[1,0,0,0,0,1]]
     $      - last two links as a monad
   Z        - transpose                        e.g. [[0,1,1],[0,0,0],[0,0,0],[1,0,0],[0,0,0],[1,1,1],[1,1]]
    ;       - concatenate with "b"             e.g. [[0,1,1],[0,0,0],[0,0,0],[1,0,0],[0,0,0],[1,1,1],[1,1],[0,0,0,1,0,1,1],[1,0,0,0,0,1,1],[1,0,0,0,0,1]]
      S€    - sum €ach                         e.g. [2,0,0,1,0,3,2,3,3,2]
        ÆP  - is prime (1 if prime, 0 if not)  e.g. [1,0,0,0,0,1,1,1,1,1]
          Ạ - all truthy?                      e.g. 0


3

জেলি , 15 বাইট

O+⁹Bṫ€3µS€;SÆPP

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

ব্যাখ্যা

O+⁹Bṫ€3µS€;SÆPP  Main link. Input: string z
O                Ordinal, get ASCII value of each char
  ⁹              Nilad representing 256
 +               Add 256 to each ordinal value
   B             Binary digits of each
    ṫ€3          Tail, take each list of digits from the 3rd value to the end
                 These are the last seven digits of each
       µ         Start a new monadic chain
        S€       Sum each list of digits by rows
           S     Sum by column
          ;      Concatenate
            ÆP   Test if each is prime, 1 if true else 0
              P  Product

3

গণিত, 75 বাইট

And@@Join@@PrimeQ@{+##&@@#,+##&@@@#}&@IntegerDigits[ToCharacterCode@#,2,7]&

নামহীন ফাংশন ইনপুট হিসাবে একটি স্ট্রিং গ্রহণ এবং ফিরে Trueবা False

ToCharacterCode@#ইনপুটটিকে তার ASCII মানগুলির তালিকায় রূপান্তর করে; IntegerDigits[...,2,7]প্রতিটি মানকে তার বিটের তালিকায় পরিণত করে, প্রয়োজনীয় হলে দৈর্ঘ্যে 7 কে প্যাড করুন। সুতরাং এখন আমাদের কাছে একটি 2 ডি অ্যারে রয়েছে এবং আমরা এর সমস্ত সারি অঙ্ক এবং কলামের যোগফল চাই; দেখুন এবং দেখুন, চরিত্রের স্প্যামসটি {+##&@@#,+##&@@@#}&@...ঠিক সেভাবেই কাজ করে (এটি +##&ব্যবহার করে প্রথম স্থানাঙ্কের ভেক্টরগুলির তালিকার সাথে "সমস্ত আর্গুমেন্টের যোগফল প্রয়োগ করে ", এবং দ্বিতীয় ভ্যারেক্টর ব্যবহার @@করে প্রতিটি ভেক্টরকে তার নিজস্ব পূর্ণসংখ্যার তালিকা হিসাবে ব্যবহার করে @@@) । তারপরে আমরা কেবল ফলাফলগুলি কিনা তা যাচাই করেছিলাম PrimeQ, তালিকাটি সমেত ফ্ল্যাট করুন Join@@এবং Andসেই সমস্ত মানগুলির সাথে নিই ।


2

রুবি -rprime , 100 বাইট

->s{a=s.bytes.map{|b|b.digits 2}
a.all?{|r|r.sum.prime?}&([0]*7).zip(*a).all?{|c|c.count(1).prime?}}

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

ব্যাখ্যা

->s{
    a=s.bytes                       # Get byte values from string
             .map{|b|b.digits 2}    # For each, map it to its binary digits
                                    #   (least significant digits first)
a.all?{|r|r.sum.prime?}             # Each character has a prime number of 1's?
    &                               # Bit-and (because it saves bytes here)
    ([0]*7).zip(*a)                 # Zip bit array with an all-zero array
                                    #   (If we don't, then uneven array lengths
                                    #   cause some columns to not be returned.)
    .all?{|c|c.count(1).prime?}     # All columns have a prime number of 1's?
                                    #   (We use count instead of sum here because
                                    #   zip pads columns with trailing nils, which
                                    #   can't be added to numbers via sum.)
}

1

পার্ল, 151 121 111 + 3 = 114 বাইট

সাথে চালাও -lF। প্রোগ্রামটি কেবল প্রথম ইনপুটটির জন্য সঠিকভাবে কাজ করবে। প্রোগ্রামটি শেষ করুন এবং আপনার পরবর্তী ইনপুটটির জন্য পুনরায় চালু করুন।

আমাকে লেট করার জন্য @Dada ধন্যবাদ জানেন //পর Fঅপ্রয়োজনীয় ছিল। এর মাধ্যমে ইনপুটটি পাইপ করে অতিরিক্ত বাইট (112 এর জন্য) অপসারণ করা যেতে পারে echo -nতবে আমি মনে করি এটি প্রযুক্তিগতভাবে আরও কোড যুক্ত করছে, তাই ওয়াইএমএমভি।

for$c(@a=map{sprintf"%07b",ord}@F){$b[$_].=substr$c,$_,1 for 0..6}s/0//g,$d|=/^1?$|^(11+?)\1+$/ for@a,@b;say!$d

রিডেবল:

                                     #Implicitly split input into characters in @F array
for$c(@a=map{sprintf"%07b",ord}@F)  #Convert @F to 7-bit binary as @a, then loop through it                        
    $b[$_].=substr$c,$_,1 for 0..6   #Transpose @a's bits into @b
}
s/0//g,$d|=/^1?$|^(11+?)\1+$/ for@a,@b; #Remove any zeros, then run through composite regex
say!$d                          #If all composite regex checks fail, then it's fully prime.

1
একটি সংস্করণ যা কেবলমাত্র প্রথম ইনপুটটিতে কাজ করে তা পুরোপুরি ঠিক আছে, তাই আপনি 141 বাইট সংস্করণটিকে প্রধান হিসাবে রাখতে পারেন এবং অন্যটিকে একাধিক ইনপুট ব্যবহার করার পরামর্শ দিতে পারেন।
দাদা

এছাড়াও মনে রাখবেন আপনি বাদ পারেন //পর -F, এবং আপনি চূড়ান্ত সম্পর্কে newline (সঙ্গে ছাড়া ইনপুট নিতে পারেন echo -n) পরিত্রাণ পেতে -lপতাকা।
দাদা

1

পাইথন 3, 228 227 225 বাইট

একটি দুর্দান্ত উত্তর নয়, আমি এটির মতো গল্ফ করতে সক্ষম হইনি যতটা আমার পছন্দ হবে তবে আমি এটির জন্য এত দিন ব্যয় করেছি আমার মনে হয় আমার এটি পোস্ট করা উচিত। বাইটস কাটার বিষয়ে পরামর্শগুলি প্রশংসিত হবে।

r=range
n=[format(ord(c),"08b")for c in input()]
n=map(lambda s:s.count("1"),n+["".join([f[1]for f in filter(lambda e:e[0]%8<1,enumerate("X"*-~i+"".join(n)))][1:])for i in r(8)])
print(all(all(s%d for d in r(2,s))for s in n))

সম্পাদনা 1: একটি বাইট হারিয়ে এর e[0]%8==0সাথে প্রতিস্থাপিত e[0]%8<1। ধন্যবাদ Flp.Tkc!

সম্পাদনা 2: (i + 1) - - i সহ দুটি অতিরিক্ত বাইট হারিয়েছে। আমার বিট-স্তরের জ্ঞানটি কতটা খারাপ তা প্রকাশ করার জন্য এরিককে ধন্যবাদ :) এই সংশোধনটি পরীক্ষা করার সময়, আমি আবিষ্কার করেছি যে kappaএটি বৈধ ... আপনি যা চান তা তৈরি করুন।


1
আপনি কি পরিবর্তন e[0]%8==0করতে পারেন e[0]%8<1?
ফ্লিপট্যাক

@ Flp.Tkc ভাল জায়গা! এটি করা যায় না তার কোনও কারণ নেই।
ফোরহৌফোর

1
@ Flp.Tkc আমি মনে করি না যে আমি বাইটগুলিকে একটি ফাংশন করে বাঁচাতে পারব। আমি চাই আপনি কীভাবে 404 রেপ
বিটিডব্লিউ

এমনটা হওয়ার কথা <1, তাই না <0?
ধ্বংসাত্মক লেবু

@ আবিষ্কারযোগ্য তরমুজ হাঁ, আমাকে এটি সংশোধন করতে দিন।
ফোরঅফ চার

1

গ্রোভী, 151 137 বাইট

{p={x->x<3||(2..(x**0.5)).every{x%it}};y={it.every{p(it.count("1"))}};x=it.collect{0.toString((int)it,2) as List};y(x)&&y(x.transpose())}

গ্রোভির কোনও প্রাথমিকতার চেক নেই ...

p={x->x<3||(2..(x**0.5)).every{x%it}}; - প্রাথমিকতা পরীক্ষার জন্য বন্ধ।

y={it.every{p(it.count("1"))}}; - পাস করা বাইনারি 2 ডি অ্যারের জন্য "1" এর সমস্ত গুনগুলি প্রধান কিনা তা নিশ্চিত করার জন্য বন্ধ।

x=it.collect{0.toString((int)it,2) as List}; - স্ট্রিং থেকে বাইনারি অ্যারেতে আচ্ছাদন।

y(x)&&y(x.transpose()) - প্রধান ম্যাট্রিক্স এবং ট্রান্সপোজড ম্যাট্রিক্সের সমস্ত প্রাইম-বৈধ যাবতাদের জন্য, নিশ্চিত হয়ে নিন যে সেগুলি সত্যে ফিরে এসেছে।


1

পাইথ , 37 বাইট

L.AmP_sdb=sMM.[L\0lh.MlZQ=.BMQ&yZy.TZ

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


                                 Code | Explanation
--------------------------------------+----------------------------------------------------------------
L.AmP_sdb=sMM.[L\0lh.MlZQ=.BMQ&yZy.TZ | Full code
L                                     | Define function y(b):
   m    b                             |   For each d in b:
    P_sd                              |     Is the sum of the elements of the list prime?
 .A                                   |   Return whether all elements of the resulting list are truthy
                         =   Q        | Assign the following to Q:
                          .BMQ        |   The list of binary strings for each character in the input
         =             Z              | Assign the following to Z:
               L             Q        |   For every element in Q:
             .[ \0                    |     Pad with 0 on the left
                  lh.MlZQ             |     To the length of the longest element in Q
            M                         |   For each element in the resulting list:
          sM                          |     Convert each character to an integer
                              &yZ     | Print y(Z) AND
                                 y.TZ |   y( <Transpose of Z> )

1

ব্র্যাচল্যাগ , 14 বাইট

ạḃᵐB↔ᵐz₁,B+ᵐṗᵐ

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

সাফল্য বা ব্যর্থতার মাধ্যমে ফলাফলগুলি। (সাফল্যের ক্ষেত্রে, সমস্ত কলাম এবং সারি অঙ্কের একটি তালিকা আউটপুট ভেরিয়েবলের মাধ্যমে উপলব্ধ।

   B              The variable B is
ạ                 the codepoints of the input
 ḃᵐ               converted to lists of binary digits,
    ↔ᵐ            which with each list reversed
      z₁          then zipped without cycling
        ,B        and concatenated with B
          +ᵐ      has elements which all sum to
            ṗᵐ    prime numbers.

1

O5AB1E, 12 বাইট

Çžy+bø€SOp¦W

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

এটি আমার প্রথম কোড গল্ফ তাই সহজে যান :)

Ç              % Converts the implicit input into ascii values
 žy+           % Adds 128 to each value, inspired by Emigna as a way to pad zeros
    b          % Convert all values into bits
     ø         % Transpose
      €SO      % Sum each string of binary digits created
         p¦    % Check if each element is prime and cut the first element out (adding 128 makes it equal to the number of characters)
           W   % Take the minimum value to effectively "and" all the elements

এটি একটি একক অক্ষরের ইনপুটটির জন্য একটি খালি ফলাফল দেয়। আমি O5AB1E তে পারদর্শী নই তবে এটি যদি একটি মিথ্যা মান হয় তবে তা ঠিক।
6:58

1

পাইথন 3 , 209 189 180 171 160 বাইট

-9 বাইটের জন্য থ্যাঙ্কস স্কুইড :)

def p(s):n=s.count('1');return(n>1)*all(n%i for i in range(2,n))
def f(s):t=[f'{ord(c):07b}'for c in s];return all(map(p,t+[[u[j]for u in t]for j in range(7)]))

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


আমি পছন্দ করি আপনি কীভাবে পরীক্ষার কেস মুদ্রণ বিবৃতিটি পুনরায় লিখেছেন :)
মোভাটিকা

হ্যাঁ আমি এফ-স্ট্রিং সম্পর্কে একটি স্মিজ অবসেসিভ বাধ্যবাধকতা ... এছাড়াও, আপনি t+মানচিত্রের বিবৃতিতে সরিয়ে দিলে এটি কি সমতুল্য নয় ?
মনিকা

নাহ, কারণ প্রাইম চেকটি বিট ম্যাট্রিক্সে উভয় সারি এবং কলামগুলি কভার করতে হবে। tসমস্ত সারি রয়েছে, যখন [[t[i][j]..i..]..j..]স্থানান্তরিত হয় t, অর্থাৎ কলামগুলি। ম্যাট্রিক্স স্থানান্তর করার যদি আরও ছোট উপায় থাকে তবে আমরা আরও বাইটগুলি সংরক্ষণ করতে পারি :)
মোভাটিকা

এটি চেষ্টা করার সময় এটি কাজ করছে , আপনি কি কোনও স্ট্রিং ভেঙে ফেলেন তা জানেন?
মনিকা

হ্যাঁ। beezzমিথ্যা প্রত্যাবর্তন করা উচিত, কিন্তু না। এটি প্রাইম চেক ভাঙার কারণে এটি True4 বিটের জন্য ফিরে আসে । ব্যবহার করে দেখুন print(p('1111'))। এটি এখনই স্থির করুন। সমস্ত পরীক্ষার কেসগুলি এটি আবরণ করেনি, কারণ ব্যবহৃত অক্ষরগুলির সমস্ত প্রাথমিক বৈশিষ্ট্য।
মোভাটিকা

1

কে (ওকে) , 40 33 বাইট

সমাধান:

&/{2=+/d=_d:x%!x}'+/'m,+m:(7#2)\'

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

ব্যাখ্যা:

অর্ধেকটি ম্যাট্রিক্স তৈরি করছে, অন্য অর্ধেকটি আদিমতার চেক।

&/{2=+/d=_d:x%!x}'+/'m,+m:(7#2)\' / the solution
                                ' / apply to each (')
                               \  / decode
                          (   )   / do this together
                           7#2    / 7#2 => 2 2 2 2 2 2 2
                        m:        / save as m
                       +          / transpose
                     m,           / append to m
                  +/'             / sum (+/) each (')
                 '                / apply to each
  {             }                 / lambda taking implicit x
              !x                  / range 0..x
            x%                    / x divided by ...
          d:                      / save as d
         _                        / floor
       d=                         / equal to d?
     +/                           / sum (+/)
   2=                             / equal to 2?
&/                                / minimum


0

জাভাস্ক্রিপ্ট, 234 বাইট

f=z=>(z=[...z].map(v=>v.charCodeAt(0))).map(v=>v.toString(2).replace(/0/g,"").length).every((p=v=>{for(i=2;i<v;i++){if(v%i===0){return 0}};return v>1}))&&[...""+1e6].map((v,i)=>z.reduce((a,e)=>!!(e&Math.pow(2,i))+a,0)).every(v=>p(v))

আমরা সংখ্যাটি বাইনারি রূপান্তর করে, একটি স্ট্রিং প্রতিস্থাপন ব্যবহার করে শূন্যগুলি সরিয়ে এবং তারপরে 1 গুলি গণনা করে অনুভূমিক মানগুলি পাই। উল্লম্ব অঙ্কগুলি 1 থেকে 7 লুপ করে এবং একটি বিটওয়াস এবং 2 টি দ্বারা nth পাওয়ারে উত্থাপিত হয়।


Math.pow(2,i)(1<<i)ধরে নিলে সংক্ষিপ্ত করা যেতে পারে i<32, সম্ভবত 7 বাইট সাশ্রয় করতে পারে , যদিও না পারে।
নারুয়োকো

0

ক্লোজার, 180 বাইট

#(let[S(for[i %](for[j[1 2 4 8 16 32 64]](min(bit-and(int i)j)1)))A apply](not-any?(fn[i](or(= i 1)(seq(for[d(range 2 i):when(=(mod i d)0)]d))))(into(for[s S](A + s))(A map + S))))

বিট তালিকা উত্পন্ন করার একটি ছোট উপায় এবং প্রাথমিকতা পরীক্ষাও থাকতে পারে।



0

পাইথন 3, 164 বাইট

import numpy;a=numpy.array([list(f'{ord(_):07b}')for _ in input()]).astype(int);print(all([(v>1)*all(v%i for i in range(2,v))for v in set(a.sum(0))|set(a.sum(1))]))

0

রুবি 2.7 -rprime, 95 বাইট

->s{a=s.bytes.map{[*@1.digits(2),0][..6]}
(a.map(&:sum)+a.transpose.map(&:sum)).all?(&:prime?)}

টিআইওর কোনও লিঙ্ক নেই কারণ টিআইও এখনও রুবি 2.5.5.5 চালায়। 😭

ব্যাখ্যা

বেশ সহজ. প্রথম লাইনটি প্রতিটি অক্ষরের বাইনারি অঙ্কগুলি অ্যারে হিসাবে সাত অঙ্কে প্যাড করে দেয়, যা সত্যই সহজ হওয়া উচিত:

a = s.bytes.map { [*@1.digits(2), 0][..6] }

সেই নম্বরযুক্ত ব্লক প্যারামিটার ( @1) এবং অবিরাম পরিসীমা ( ..6) হটনেস পরীক্ষা করে দেখুন

দ্বিতীয় লাইনে সারি এবং কলাম এবং পরীক্ষাগুলির যোগফল থাকে যদি তারা সমস্ত প্রধান হয়:

(a.map(&:sum) + a.transpose.map(&:sum)).all?(&:prime?)

0

জাভাস্ক্রিপ্ট (নোড.জেএস) , 149 146 ... 134 130 129 বাইট

x=>[...x].map(y=>a=[...a.map(n=>y.charCodeAt()&2**i++?++z&&-~n:n,z=i=0),z],a=[...Array(7)])&&!a.some(n=>(P=r=>n%--r?P(r):~-r)(n))

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

ব্যাখ্যা

x=>                        // Main function:
 [...x].map(               //  For each y in x:
  y=>
   a=[...a.map(            //   For each i in range(0, len(a)):
    n=>                   
     y.charCodeAt()&2**i++ //    If y AND 2**i is not zero:
     ?++z&&-~n:n,          //     z = z + 1; a[i] = a[i] + 1 (1 if a[i] is undefined)
    z=i=0                  //   Initially z = 0
   ),z],                   //   Then push z at the end of a
  a=[...Array(7)]          //  Initially a = [undefined] * 7
 )&&!a.some(               //  Then for each n in a:
  n=>(
   P=r=>                   //   Composite function:
    n%--r?                 //    If n % (r - 1) == 0 or r == 1:
     P(r)                  //     Return P(r - 1)
    :~-r                   //    Else: Return r - 2
  )(n)                     //   Starting from r = n
 )                         //  Return whether the composite function returns 0 for all n.

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

  • y.charCodeAt()&2**i
    • আমরা সংশ্লিষ্ট বিট ফিরে যাওয়ার এই কোড প্রয়োজন y.charCodeAt()হলে 0 <= i < 7, এবং 0 অন্যথায়।
    • যখন i < 7, কোডটি দৃশ্যত যথারীতি কাজ করে।
    • যখন 7 <= i <= 32, এর সাথে সম্পর্কিত বিটটি y.charCodeAt()যাইহোক 0 হয়, ফলাফলটি প্রত্যাশার মতো 0 হয়।
    • কখন 32 < i < 1024, যেহেতু int32(2**i) == 0, ফলাফলটি আশানুরূপ 0 হয়।
    • কখন 1024 <= i, আমাদের রয়েছে 2**i == Infinity, এবং যেহেতু int32(Infinity) == 0, ফলাফলটি প্রত্যাশার মতো 0।
  • (P=r=>n%--r?P(r):~-r)(n)
    • সরলতার জন্য আমরা যাক R = --r = r - 1
    • এই সহায়ক ফাংশনটি কখন n % R == 0বা শেষ হয় n % R is NaN
      • n % R == 0: Rএর একটি ফ্যাক্টর n
        • যদি R == 1, তবে nপ্রধান কারণ সমস্ত 1 < R < nভাগ করতে পারে না n। ফিরুন 0 (মিথ্যা)
        • যদি R == -1, তবে n == 0। রিটার্ন -২ (সত্যবাদী)
        • অন্যথায়, R - 1যেখানে R - 1 > 0(সত্য) ফিরে আসুন।
      • n % R is NaN: অবৈধ মডুলার গণনা।
        • তাহলে R == 0: n == 1। রিটার্ন -১ (সত্যবাদী)
        • তাহলে n is NaN: R is NaN। রিটার্ন -১ (সত্যবাদী)
    • ফলস্বরূপ, কেবলমাত্র যখন R == 1এই ফাংশনটি মিথ্যা মানটি ফিরিয়ে দিতে পারে, নির্দেশকটি nপ্রধান।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.