एक ती त्रिभुज बनाएँ


11

स्पष्टीकरण: मूल रूप से, आप बनाने की जरूरत है इस

यूलर के फंक्शनिएंट फंक्शन का नाम फि है।

चलो phi (8) की गणना करने की कोशिश करते हैं

सबसे पहले, सभी नंबरों को 8 और पीछे की ओर सूचीबद्ध करें, जिसमें 0 या उससे कम नहीं

8
7
6
5
4
3
2
1

अब पता लगाएं कि कौन से नंबर 8 के साथ एक कारक साझा नहीं करते हैं (1 गिनती नहीं करता है), और #उनके स्थान पर एक जगह रखें।

8
#
6
#
4
#
2
#

नंबर हटा दें।

#

#

#

#
                                                 -

अब ऐसा करें, लेकिन एक त्रिकोण में आउटपुट को एक साथ स्ट्रिंग करें

        9
       88
      777
     6666
    55555
   444444
  3333333
 22222222
111111111
---------
123456789

# गैर-कारक साझाकरण संख्याएँ

        9
       8#
      7##
     6#66
    5####
   4#4#4#
  3##3##3
 2#2#2#2#
#########

नंबर निकालें:

        #
       ##
      #
     ####
    # # #
   ## ## 
  # # # #
#########

यह इनपुट 9 (9 कॉलम के बाद से) के लिए आउटपुट होगा।

अग्रणी + अनुगामी newlines की अनुमति दी।


स्पष्टीकरण की जरूरत है।

4
यदि आपको स्पष्ट करने की आवश्यकता है, तो पहले सैंडबॉक्स का प्रयास करें।
R

मैं लाइनों की एक सूची के रूप में उत्पादन कर सकते हैं?
माल्टसेन

अग्रणी नईलाइन की अनुमति है?
लुइस मेंडो

जवाबों:


7

MATL , 17 15 बाइट्स

:Gq:!Zd1=RP35*c

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

यदि एक प्रमुख न्यूलाइन स्वीकार्य है: 13 बाइट्स :

:t!Zd1=RP35*c

व्याख्या

:     % Take input N. Generate row vector [1 2 ... N]
Gq:   % Row vector [1 2 ... N-1].
      % (In the 13-byte version this is replaced by function `t`, which duplicates
      % the array [1 2 ... N])
!     % Transpose into column vector
Zd    % GCD, element-wise with broadcast. Gives (N-1)×N matrix
1=    % True for entries that equal 1, corresponding to relatively prime pairs.
      % The rest of entries are set to false, i.e. 0.
R     % Upper triangular part: set values below diagonal to 0
P     % Flip matrix vertically
35*   % Multiply each entry by 35 (ASCII for '#')
c     % Convert to char. 0 will be displayed as a space. Implicitly display

char(0):) का अच्छा उपयोग
स्वेअर 12

@ यह बहुत उपयोगी होने के लिए बदल रहा है!
लुइस मेंडो



2

जावास्क्रिप्ट (ईएस 6), 112 बाइट्स

n=>[...s=` `.repeat(n)].map(_=>s.replace(/./g,_=>`# `[+g(n+1,i++)],n-=i=1),g=(i,j)=>i?i>j||g(j%i,i):j>1).join`\n`

जहां \nशाब्दिक न्यूलाइन चरित्र का प्रतिनिधित्व करता है। वैकल्पिक समाधान, 112 बाइट्स:

n=>(s=`# `.repeat(n)).replace(r=/../g,_=>s.replace(r,m=>m[+g(n+1,i++)],n-=i=1)+`
`,g=(i,j)=>i?i>j||g(j%i,i):j>1)

1

जावा, 162 158 बाइट्स

int g(int a,int b){return a<1?b:g(b%a,a);}
String d(int n){String r="";for(int i=0;i<n;i++){for(int j=1;j<=n;)r+=i+j<n|g(n-i,j++)>1?" ":"#";r+="\n";}return r;}

पूरा कार्यक्रम (अद्यतन नहीं)

import java.util.Scanner;

public class Q79082 {
    int gcd_ungolfed(int a,int b){
        if(a==0) return b;
        return gcd_ungolfed(b%a,a);
    }
    void draw_ungolfed(int n){
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                if(i+j<=n || gcd_ungolfed(n+1-i,j)!=1){
                    System.out.print(" ");
                }else{
                    System.out.print("#");
                }
            }
            System.out.println();
        }
    }
    int g(int a,int b){return a<1?b:g(b%a,a);}
    String d(int n){String r="";for(int i=0;i<n;i++){for(int j=1;j<=n;j++)r+=(i+j<n||g(n-i,j)>1)?" ":"#";r+="\n";}return r;}
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.close();
        new Q79082().draw_ungolfed(n);
        System.out.println(new Q79082().d(n));
    }
}

इनपुट आउटपुट:

9

        #
       ##
      #  
     ####
    # # #
   ## ## 
  # # # #
#########

        #
       ##
      #  
     ####
    # # #
   ## ## 
  # # # #
#########

शॉर्टकट बनाएं या एक एकल पाइप में, फिर कॉल करने के लिए i ++ और j ++ को g में रखें। 3 बाइट बचाएंगे। इसके अलावा, आपको डी में ट्राइसेन में पैरेंस की आवश्यकता नहीं है। 2 और बाइट्स
ब्लू

i ++ काम नहीं करेगा क्योंकि नेस्टेड है।
लीक नून

1

SQL (PostGreSQL9.4), 239 291 बाइट्स

एक तैयार किया गया कथन बनाता है जिसे निष्पादित किया जा सकता है। मुझे यकीन है कि मैं इसमें से काफी कुछ बाइट्स ले सकता हूं, लेकिन मुझे बाद में इसे चुनना होगा। क्या कोई क्रॉस 1 से n की सीमा पर शामिल होता है। पार्श्व में जीसीडी की गणना करता है। जहाँ GCD 1 है और श्रृंखला A, B के उत्पादन की श्रृंखला B से अधिक है, अन्यथा एक स्थान है। श्रृंखला बी द्वारा समूहीकृत स्ट्रिंग में परिणामों को अलग करें।

prepare p(int)as
select string_agg(coalesce(CASE WHEN b<=a AND x=1THEN'#'END,' '),'')from generate_series(1,$1)a,generate_series(1,$1)b,LATERAL(SELECT MAX(G)x FROM generate_series(1,LEAST(a,b))g WHERE a%g+b%g=0)g
group by b
order by b desc

निम्नलिखित तरीके से चलाएं

execute p(13)

string_agg
----------------

            #
           ##
          # #
         ## #
        # # #
       ######
      #   # #
     #### ###
    # # # # #
   ## ## ## #
  # # # # # #
#############

और साथ साफ किया

deallocate p


0

पायथन 2 (120 बाइट्स)

g=lambda m,n:m if n<1 else g(n,m%n)
r=range(input())
for i in r[:0:-1]:print''.join('# '[i>j+1 or g(i,j+1)>1]for j in r)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.