ये प्राइम्स ऑफ माइन आर ऑलवेज सॉलिड लाइन्स


12

आइए रिक्त स्थान का एक N × N ग्रिड बनाएं और एक संख्या के प्रमुख होने पर नेत्रहीन रूप से निर्धारित करने के लिए उपयोग किया जा सकता है। (एन कोई सकारात्मक पूर्णांक हो सकता है।)

इस ग्रिड के तीन सरल नियम हैं:

  1. Nth कॉलम में n - 1 अंडरस्कोर के दोहराए गए पैटर्न होते हैं जिसके बाद एक स्थान होता है। यह पैटर्न पहली पंक्ति में शुरू होता है और रो N. (पंक्तियों और स्तंभों को 1-अनुक्रमित किया जाता है) पर संभवतः मध्य-पैटर्न को रोका जाता है।)
  2. पहले कॉलम को सभी स्थानों के बजाय सभी अंडरस्कोर के साथ बदल दिया जाता है।
  3. यदि कोई स्थान कहीं होता है तो पंक्ति सूचकांक स्तंभ सूचकांक के बराबर होता है जिसे इसे अंडरस्कोर से बदल दिया जाता है।

उदाहरण: N = 10

           1
  1234567890 <-- column indices
 1__________
 2__________
 3__________
 4_ ________
 5__________
 6_  _______
 7__________
 8_ _ ______
 9__ _______
10_ __ _____
 ^ row indices

सूचकांक सिर्फ स्पष्टता के लिए हैं। सादा ग्रिड ही (आपका कार्यक्रम क्या होना चाहिए):

__________
__________
__________
_ ________
__________
_  _______
__________
_ _ ______
__ _______
_ __ _____

नोटिस जो:

  • पहला कॉलम सभी अंडरस्कोर है।
  • पंक्ति 2 पर अंडरस्कोर को छोड़कर दूसरा कॉलम अंडरस्कोर स्पेस, अंडरस्कोर स्पेस इत्यादि जाता है।
  • तीसरा स्तंभ अंडरस्कोर स्पेस को अंडरस्कोर करता है, अंडरस्कोर स्पेस को अंडरस्कोर करता है, आदि, सिवाय अंडर 3 के अंडरस्कोर के।
  • आदि।

यह भी ध्यान दें कि 1 के अलावा, प्रत्येक कॉलम में केवल प्राइम संख्या वाली पंक्तियों में अंडरस्कोर होते हैं।

चूंकि अंडरस्कोर संपूर्ण फ़ॉन्ट चौड़ाई में फैला है, इसलिए प्रत्येक प्राइम क्रमांकित पंक्ति एक निरंतर ठोस रेखा बनाती है। इसलिए यह जाँचना कि क्या कोई संख्या अभाज्य है या नहीं, नेत्रहीन है; बस जांचें कि क्या इसकी रेखा सभी स्तंभों में ठोस है। (वास्तव में पंक्ति सूचकांक के वर्गमूल को देखना पर्याप्त होता है लेकिन उस ग्रिड का उत्पादन कम सुरुचिपूर्ण लगता है।)

कार्यक्रम

एक प्रोग्राम लिखें जो एन को स्टड (या निकटतम विकल्प) के माध्यम से दिए गए इन ग्रिडों को आकर्षित करेगा। आउटपुट स्टडआउट (या निकटतम वैकल्पिक) पर जाता है और इसमें केवल वैकल्पिक अनुरेखण रेखा के साथ रिक्त स्थान, अंडरस्कोर, और न्यूलाइन शामिल होना चाहिए।

सबसे छोटा कोड जीतता है।


मुझे नहीं पता कि यह कैसे अभाज्य संख्या निर्धारित करता है
फिलिप्पुस बार्टुज़ि

5
@FilipBartuzi शायद en.wikipedia.org/wiki/Sieve_of_Eratosthenes

"Nth कॉलम में n - 1 अंडरस्कोर का दोहराया पैटर्न होता है जिसके बाद एक स्थान होता है।" तो कॉलम n = 1 सभी रिक्त स्थान नहीं होना चाहिए, सभी अंडरस्कोर नहीं?
एल्गोरिथमशार्क

6
मुझे कहना होगा कि मुझे विशेष रूप से "नो ट्रेलिंग न्यूलाइन" आवश्यकता पसंद नहीं है। यह कुछ भाषाओं में बहुत मुश्किल है, दूसरों में सर्वथा असंभव है और यह केवल उन कार्यक्रमों को प्रभावित करता है जो एसटीडीयूएसटी को प्रिंट करते हैं।
डेनिस

4
वर्णन को समझना मेरे लिए कठिन था। इस तरह से मैं इसका वर्णन करूंगा: एन अंडरस्कोर के एन लाइनों की ग्रिड से शुरू करें। के लिए nवीं लाइन, बनाने kवें चरित्र एक अंतरिक्ष यदि kका एक भाजक है mकि 1 या नहीं है m
केसी चू

जवाबों:


7

CJam, 33 28 27 बाइट्स

q~,:)_f{f{md\1=+'_S?}0'_tN}

इसे ऑनलाइन आज़माएं।

यह काम किस प्रकार करता है

q~        " Read one line from STDIN and evaluate it.                                     ";
,:)       " For “N”, push [ 1 ... N ].                                                    ";
_         " Push a copy.                                                                  ";
f{        " For each “I in [ 1 ... N ], push “I   [ 1 ... N ]”; then:                     ";
  f{      " For each “J in [ 1 ... N ], push “J   I”; then:                               ";
    md\   " Push “J % I   J / I”.                                                         ";
    1=+   " Calculate “J % I + (J / I == 1)”.                                             ";
    '_S?  " Push an underscore if the result is truthy and a space otherwise.             ";
  }       "                                                                               ";
  0'_t    " Replace the first character of the resulting array by an underscore.          ";
  N       " Push a newline.                                                               ";
}         "                                                                               ";

उदाहरण चलाते हैं

$ cjam solid-primes.cjam <<< 10
__________
__________
__________
_ ________
__________
_  _______
__________
_ _ ______
__ _______
_ __ _____
$ cjam solid-primes.cjam <<< 100 | md5sum # trailing newline
e4396b316989813dada21141b569ccf9  -

मैं एक स्पष्टीकरण पोस्ट करूँगा जब मैं गोल्फ कर रहा हूँ।
डेनिस

9
33 बाइट्स और आप गोल्फ नहीं कर रहे हैं ??

5

रूबी, 77 73 वर्ण

puts (1..n=gets.to_i).map{|a|?_+(2..n).map{|b|a!=b&&a%b==0? ' ':?_}.join}

कुछ तरकीबें जिनका मैंने इस्तेमाल किया:

  • ..ऑपरेटर लगभग रूबी में सभी ऑपरेटरों की सबसे कम पूर्वता है, तो (1..n=gets.to_i)सिर्फ काम करता है।

  • a!=1चेक करते समय एक अतिरिक्त शर्त जोड़ने के बजाय यह देखने के लिए कि क्या चरित्र को अंडरस्कोर के बजाय एक स्थान होना चाहिए (चूंकि पहली पंक्ति सभी अंडरस्कोर है), मैंने अभी से रेंज शुरू की है 2और एक अतिरिक्त तैयार किया है ?_

  • रेखा A रेखा B बन सकती है:

    A | a%b==0&&a!=b ? ' ':?_
    B | a!=b&&a%b==0? ' ':?_
    

    क्योंकि मुझे ए bऔर ?लाइन ए के बीच एक अतिरिक्त स्थान रखना है , लेकिन बी 0और ?लाइन बी के बीच की आवश्यकता नहीं b?है, एक वैध रूबी विधि है, लेकिन 0?ऐसा नहीं है।

  • putsएक अतिरिक्त की आवश्यकता को हटाते हुए, स्वचालित रूप से आपके लिए नए समाचारों के साथ सरणियों में शामिल हो जाएगा *"\n"

इसके लिए आउटपुट n=100:

____________________________________________________________________________________________________
____________________________________________________________________________________________________
____________________________________________________________________________________________________
_ __________________________________________________________________________________________________
____________________________________________________________________________________________________
_  _________________________________________________________________________________________________
____________________________________________________________________________________________________
_ _ ________________________________________________________________________________________________
__ _________________________________________________________________________________________________
_ __ _______________________________________________________________________________________________
____________________________________________________________________________________________________
_   _ ______________________________________________________________________________________________
____________________________________________________________________________________________________
_ ____ _____________________________________________________________________________________________
__ _ _______________________________________________________________________________________________
_ _ ___ ____________________________________________________________________________________________
____________________________________________________________________________________________________
_  __ __ ___________________________________________________________________________________________
____________________________________________________________________________________________________
_ _  ____ __________________________________________________________________________________________
__ ___ _____________________________________________________________________________________________
_ ________ _________________________________________________________________________________________
____________________________________________________________________________________________________
_   _ _ ___ ________________________________________________________________________________________
____ _______________________________________________________________________________________________
_ __________ _______________________________________________________________________________________
__ _____ ___________________________________________________________________________________________
_ _ __ ______ ______________________________________________________________________________________
____________________________________________________________________________________________________
_  _  ___ ____ _____________________________________________________________________________________
____________________________________________________________________________________________________
_ _ ___ _______ ____________________________________________________________________________________
__ _______ _________________________________________________________________________________________
_ ______________ ___________________________________________________________________________________
____ _ _____________________________________________________________________________________________
_   _ __ __ _____ __________________________________________________________________________________
____________________________________________________________________________________________________
_ ________________ _________________________________________________________________________________
__ _________ _______________________________________________________________________________________
_ _  __ _ _________ ________________________________________________________________________________
____________________________________________________________________________________________________
_  __  ______ ______ _______________________________________________________________________________
____________________________________________________________________________________________________
_ _ ______ __________ ______________________________________________________________________________
__ _ ___ _____ _____________________________________________________________________________________
_ ____________________ _____________________________________________________________________________
____________________________________________________________________________________________________
_   _ _ ___ ___ _______ ____________________________________________________________________________
______ _____________________________________________________________________________________________
_ __ ____ ______________ ___________________________________________________________________________
__ _____________ ___________________________________________________________________________________
_ _ ________ ____________ __________________________________________________________________________
____________________________________________________________________________________________________
_  __ __ ________ ________ _________________________________________________________________________
____ _____ _________________________________________________________________________________________
_ _ __  _____ _____________ ________________________________________________________________________
__ _______________ _________________________________________________________________________________
_ __________________________ _______________________________________________________________________
____________________________________________________________________________________________________
_     ___ _ __ ____ _________ ______________________________________________________________________
____________________________________________________________________________________________________
_ ____________________________ _____________________________________________________________________
__ ___ _ ___________ _______________________________________________________________________________
_ _ ___ _______ _______________ ____________________________________________________________________
____ _______ _______________________________________________________________________________________
_  __ ____ __________ __________ ___________________________________________________________________
____________________________________________________________________________________________________
_ _ ____________ ________________ __________________________________________________________________
__ ___________________ _____________________________________________________________________________
_ __ _ __ ___ ____________________ _________________________________________________________________
____________________________________________________________________________________________________
_   _ _  __ _____ _____ ___________ ________________________________________________________________
____________________________________________________________________________________________________
_ __________________________________ _______________________________________________________________
__ _ _________ _________ ___________________________________________________________________________
_ _ ______________ __________________ ______________________________________________________________
______ ___ _________________________________________________________________________________________
_  __ ______ ____________ ____________ _____________________________________________________________
____________________________________________________________________________________________________
_ _  __ _ _____ ___ ___________________ ____________________________________________________________
__ _____ _________________ _________________________________________________________________________
_ ______________________________________ ___________________________________________________________
____________________________________________________________________________________________________
_   _  ____ _ ______ ______ _____________ __________________________________________________________
____ ___________ ___________________________________________________________________________________
_ ________________________________________ _________________________________________________________
__ _________________________ _______________________________________________________________________
_ _ ___ __ __________ _____________________ ________________________________________________________
____________________________________________________________________________________________________
_  _  __  ____ __ ___________ ______________ _______________________________________________________
______ _____ _______________________________________________________________________________________
_ _ __________________ ______________________ ______________________________________________________
__ ___________________________ _____________________________________________________________________
_ ____________________________________________ _____________________________________________________
____ _____________ _________________________________________________________________________________
_   _ _ ___ ___ _______ _______ _______________ ____________________________________________________
____________________________________________________________________________________________________
_ ____ ______ __________________________________ ___________________________________________________
__ _____ _ _____________________ ___________________________________________________________________
_ _  ____ _________ ____ ________________________ __________________________________________________

अब अतिरिक्त-विशेष ™ मेगा-रंगीन लाल सहित © हाइलाइट-मैजिक ™ ® विस्तारित संस्करण ©: (विस्तार करने के लिए थंबनेल पर क्लिक करें)

रंग के साथ रूबी, 110 वर्ण

puts (1..n=gets.to_i).map{|a|x=(2..n).map{|b|a!=b&&a%b==0? ' ':?_}.join;x.index(' ')??_+x :"\e[41m_#{x}\e[0m"}

विस्तारित संस्करण


1
ऐसा लग रहा है कि यह एक भग्न होना चाहिए ...
बीटा डेके

से पहले त्रिगुट के भीतर स्थान निकालें ' '। यह शायद आपके सिंटैक्स हाइलाइटर को गड़बड़ कर देता है, लेकिन यह अभी भी ठीक से काम करता है। इसके अलावा,a%b<1
वैल्यू इंक

*''जुड़ने के समान ही काम करेगा, और a<bइसके बजाय आप जांच कर सकते हैं a!=bक्योंकि कोई भी कारक एक से अधिक नहीं है। वहाँ भी एक गणित पर एक ternary का उपयोग करने के बजाय कुछ गणित के परिणाम के साथ दो-चरित्र स्ट्रिंग में टुकड़ा करने से बचत हो सकती है।
हिस्टोक्रैट

5

जे - 28 चार

1('_ '{~0==+&|:1&=+|/~)@:+i.

विस्फोट से समझाया:

1(                    )@:+i.  NB. on vector 1..n, do
                   |/~        NB. take the table "column modulo row"
               1&=+           NB. add 1 to column 1
          =                   NB. identity matrix of size 10
            &|:               NB. transpose both tables (now table is row mod col)
           +                  NB. add them
  '_ '{~0=                    NB. space if cell=0 else underscore

यह किस तरह का दिखता है:

   1('_ '{~0==+&|:1&=+|/~)@:+i.25
_________________________
_________________________
_________________________
_ _______________________
_________________________
_  ______________________
_________________________
_ _ _____________________
__ ______________________
_ __ ____________________
_________________________
_   _ ___________________
_________________________
_ ____ __________________
__ _ ____________________
_ _ ___ _________________
_________________________
_  __ __ ________________
_________________________
_ _  ____ _______________
__ ___ __________________
_ ________ ______________
_________________________
_   _ _ ___ _____________
____ ____________________

4

पायथन 2, 76 71

r=range(1,input()+1)
for i in r:print''.join("_ "[i%j<1<j<i]for j in r)

यह ... ये कीवर्ड्स इस से किसी भी कम प्राप्त कर सकते हैं सुनिश्चित नहीं हैं: range, inputऔर printकाफी एक बहुत खर्च।


3
आप बदल सकते हैं i>j>1and i%j<1के साथi>j>1>i%j
seequ

@Sieg: अच्छा! यह वास्तव में मेरा पहली बार इन संगोष्ठी तुलनाओं का शोषण है।
फाल्को

मैंने यह सटीक कोड वर्ण-के-चरित्र को var नामों तक लिखा था, जिनमें शामिल हैं i%j<1<j<i:-P। तो शायद यह वास्तव में कोई छोटा नहीं मिलता है।
xnor

वास्तव में, मुझे लगता है कि (परीक्षण नहीं) आप कर सकते हैं i%j<1। इसका तात्पर्य है i>=j
देखिए

@ सीग: हां, लेकिन हमें जरूरत है i>j, i>=jविकर्ण पर रिक्तता से बचने की नहीं ।
फाल्को

3

एपीएल (28)

'_ '[(1+(1≠⊢)∧≠∧0=|⍨)/¨⍳2⍴⎕]

स्पष्टीकरण:

  • ⍳2⍴⎕: एक नंबर एन पढ़ें और एक एन-बाय-एन समन्वय मैट्रिक्स बनाएं
  • (... )/¨: निर्देशांक के प्रत्येक जोड़े के लिए, निम्नलिखित फ़ंक्शन लागू करें:
    • सेल में एक स्थान होना चाहिए अगर:
    • 0=|⍨: y modx = 0, और
    • : x, y और के बराबर नहीं है
    • 1≠⊢: एक्स नहीं है 1
    • 1+: 1परिणामी बिट मैट्रिक्स में जोड़ें क्योंकि एपीएल सरणियां 1 से शुरू होती हैं।
  • '_ '[... ]: प्रत्येक 1को एक अंडरस्कोर और 2स्पेस के साथ बदलें ।

स्पष्ट रूप से 28 यहां मैजिक गोल्फिंग नंबर है।

2

पर्ल,    69   61

अद्यतन संस्करण (धन्यवाद, डेनिस !)

$n=<>;for$i(1..$n){say"_".join"",map{$i%$_|$i==$_?_:$"}2..$n}

मूल संस्करण:

$n=<>;for$i(1..$n){say"_".join("",map{$i%$_||$i==$_?"_":" "}(2..$n))}

1
1. न तो joinहै और न ही 2..$nजरूरत कोष्ठक। 2. -nस्विच के साथ , आप $_इसके बजाय उपयोग कर सकते हैं $n। 3. _एक वैध नंगेपन है, इसलिए इसे उद्धरण की आवश्यकता नहीं है। 4. आप $"इसके बजाय उपयोग कर सकते हैं " "। 5. आप | इसके बजाय उपयोग कर सकते हैं ||
डेनिस

@ डेनिस - धन्यवाद! मैंने उनमें से कुछ को लागू किया। मैंने यह नहीं किया -nक्योंकि मैं इसे एक स्व-निहित कार्यक्रम रखना चाहता था और मुझे कहना नहीं था $^N=1_नंगे पैर के रूप में उपयोग किए जाने के मामले में काम किया, $i==_लेकिन मामले में काम नहीं किया $i%_क्योंकि पार्सर ने सोचा %_था कि एक हैश है।
टॉड लेहमन

1
1. आप इसे एक शेबंग के साथ स्व-निहित रख सकते हैं ( #!/bin/perl -nइसे आमतौर पर 1 बाइट के रूप में गिना जाता है), लेकिन यह स्पष्ट रूप से आपके ऊपर है। मुझे नहीं पता कि क्या $^N=1करता है ... 2. $i==_ठीक से काम नहीं करेगा; अगर यह परीक्षण करेगा $i == "_"। मेरा मतलब है के _बजाय "_", say _और , का उपयोग कर रहा है $i==$_?_:$"
डेनिस

@ डेनिस - ओह्ह्ह बकवास, तुम सही हो। मैंने जो संपादन किया है, वह मैट्रिक्स के माध्यम से एक विकर्ण रेखा प्रस्तुत करता है। मुझे नहीं पकड़ने के लिए उस पर शर्म आती है। फिक्स्ड। मैं देख रहा हूं कि आपका क्या मतलब है _= "_"अब। दुर्भाग्य से, यह बाद के मामले में काम करता है लेकिन मुझे एक त्रुटि देता है sayक्योंकि यह लगता है कि यह एक फ़ाइलहैंडल है।
टॉड लेहमन

2

सीजेएम, 27 बाइट्स

q~:I,{__I?'_*S+I*I<'_t}%zN*

इसे ऑनलाइन आज़माएं।

यह दृष्टिकोण मेरे अन्य उत्तर के रूप में उसी बाइट की गिनती को प्राप्त करता है, लेकिन मुझे लगा कि यह वैसे भी पोस्ट करने लायक था। हर पंक्ति में उचित गुणकों को चिह्नित करने के बजाय, यह वही करता है जो विनिर्देश कहता है।

यह काम किस प्रकार करता है

q~:I                         " Read an integer I from STDIN.                              ";
    ,{                }%     " For each J ∊ {1,...,I}:                                    ";
          '_*S+              " Push J - 1 underscores followed by a space.                ";
               I*I<          " Repeat the pattern to complete I characters.               ";
       _I?                   " For the first row, replace all spaces with underscores.    ";
      _            '_t       " Replace the Jth character by an underscore.                ";
                        zN*  " Transpose rows and columns; separate with linefeeds.       ";

उदाहरण चलाते हैं

$ cjam prime-lines.cjam <<< 10; echo
__________
__________
__________
_ ________
__________
_  _______
__________
_ _ ______
__ _______
_ __ _____
$ cjam prime-lines.cjam <<< 100 | md5sum # no trailing newline
83c7b974e1510f482322456a9dbb461f  -

1

सी, 143

सी जाहिर तौर पर इसके लिए भाषा का सही विकल्प नहीं है। लेकिन पूर्णता के लिए, सी में ऐसा करने का एक संभावित तरीका 1048575 के एन के मूल्यों के लिए काम करता है । मानक इनपुट से एन पढ़ता है ।

#include <stdio.h>
main(){int n,i=0,j;scanf("%d",&n);char x[1<<20];x[n+1]=0;
for(;++i<=n;){for(j=0;++j<=n;)x[j]=i%j|i==j|j==1?95:32;puts(x+1);}}

हालाँकि यह बहुत तेज़ है।

  • N = 1,000,000 के लिए रनटाइम (जो 1,000,000,000,000-तत्व ग्रिड का उत्पादन करता है) मेरे सिस्टम पर लगभग 55 मिनट है।

  • N = 1000 के लिए रनटाइम (जो एक 1,000,000-तत्व ग्रिड को जन्म देता है) 1/100 सेकंड से कम है।


4
1. कुछ संकलक (जैसे, जीसीसी) के लिए शामिल की आवश्यकता नहीं है, इसलिए आप इसे हटा सकते हैं। 2. ग्लोबल वैरिएबल 0 के लिए इनिशियलाइज़ करते हैं और डिफॉल्ट करते हैं int, जिससे आप उपयोग कर सकते हैं char x[1<<20];n,i,j;main...। 3. for(scanf("%d",&n);i++<n;)दो बाइट्स बचाता है scanf("%d",&n);for(;++i<=n;)
डेनिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.