একটি ফাই ত্রিভুজ আঁকুন


11

ব্যাখ্যা: মূলত, আপনি করতে হবে এই

ইউলারের টোটেন্ট ফাংশনটির নাম ফাই আছে।

আসুন phi গণনা করার চেষ্টা করি (8)

প্রথমে, 8 বা নীচে অন্তর্ভুক্ত নয়, সমস্ত সংখ্যার তালিকা করুন

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 কলামের জন্য আউটপুট) হবে)

শীর্ষস্থানীয় + পিছনে থাকা নতুন লাইনের অনুমতি রয়েছে।


স্পষ্টকরণ দরকার।

4
আপনার যদি স্পষ্ট করার দরকার হয় তবে প্রথমে স্যান্ডবক্স ব্যবহার করে দেখুন।
Rɪᴋᴇʀ

আমি কি লাইনগুলির তালিকা হিসাবে আউটপুট দিতে পারি?
মালটিসেন

শীর্ষস্থানীয় নিউলাইন অনুমোদিত?
লুইস মেন্ডো

উত্তর:


7

এমএটিএল , 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):)
স্যুভার

@ স্যুভার এটি খুব কার্যকর হতে দেখা যাচ্ছে!
লুইস মেন্ডো



2

জাভাস্ক্রিপ্ট (ES6), 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 ++ রাখুন। 3 টি বাইট সাশ্রয় করবে। এছাড়াও, ডি তে ট্রাইনারিতে আপনার পেরেনগুলির দরকার নেই। আরও 2 টি বাইট
নীল

আমি ++ কাজ করব না কারণ নেস্টেড।
ফাঁস নুন

1

এসকিউএল (পোস্টগ্রিএসকিউএল 9.4), 239 291 বাইট

কার্যকর করা যেতে পারে এমন একটি প্রস্তুত বিবৃতি তৈরি করে। আমি নিশ্চিত যে আমি সম্ভবত এটি থেকে বেশ কয়েকটি বাইট নিতে পারি, তবে আমাকে এটি পরে নিতে হবে। 1 থেকে n এর পরিসরে একটি ক্রস যোগ দেয়? পার্শ্ববর্তী যোগদানের ক্ষেত্রে GCD গণনা করে। যেখানে জিসিডি 1 এবং সিরিজ এ সিরিজ বি আউটপুট একটি '#' অন্যথায় কোনও স্থানের চেয়ে বড়। বি সিরিজ বিভক্তভাবে স্ট্রিংয়ে ফলাফলগুলিকে একত্রিত করুন 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)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.