ক্রসড স্কয়ার তৈরি করা হচ্ছে


23

ক্রসড স্কয়ার তৈরি করা হচ্ছে

আপনি এক বা একাধিকের পূর্ণসংখ্যার ইনপুট নেবেন এবং কেন্দ্রের মধ্য দিয়ে একটি তির্যক ক্রস দিয়ে আপনার পছন্দের কোনও মুদ্রণযোগ্য চরিত্রের তৈরি একটি বর্গক্ষেত্র আউটপুট আনতে হবে।

সাধারণ ধারণাটি আউটপুটটি ফাঁকা বর্গক্ষেত্র হওয়ার জন্য যা এর মধ্য দিয়ে একটি তির্যক ক্রস থাকে:

Input: 7
Output:
*******
*#   #*
* # # *
*  #  *
* # # *
*#   #*
*******

উপরের উদাহরণে '*' বাহ্যিক বাক্সকে উপস্থাপন করে এবং '#' গুলি তির্যক ক্রসকে উপস্থাপন করে।

নোট করুন যে উপরের উদাহরণটিতে দুটি পৃথক অক্ষর ব্যবহার করা হয়েছে যাতে আউটপুটটি কেমন দেখাচ্ছে তা আপনার কম্পিউটারে কেবল একটি অক্ষর ব্যবহার করা উচিত।

ইনপুট

1 বা ততোধিক সংখ্যার পূর্ণসংখ্যা, এটি বিজোড় হওয়ার গ্যারান্টিযুক্ত।

আউটপুট

মাঝখানে ক্রস দিয়ে আপনার পছন্দসই একটি চরিত্র দিয়ে তৈরি একটি বর্গক্ষেত্র।

  • ক্রসটি অবশ্যই তির্যক হতে হবে
  • বর্গটি ফাংশনটির মাধ্যমে আউটপুট হতে পারে বা আউটপুট লিখিত হতে পারে
  • চলন্ত নিউলাইনগুলি ঠিক আছে
  • আপনি যদি চান তবে গ্রাফিক, ডায়াগ্রাম বা চিত্র হিসাবে আউটপুট করতে পারেন

উদাহরণ

Input: 1
Output:
*

Input: 3
Output:
***
***
***

Input: 5
Output:
*****
** **
* * *
** **
*****

Input: 7
Output:
*******
**   **
* * * *
*  *  *
* * * *
**   **
*******

চশমা

  • ফাংশন বা সম্পূর্ণ প্রোগ্রাম অনুমোদিত
  • আপনি আপনার পছন্দসই পদ্ধতিতে ইনপুট পেতে পারেন
  • স্ট্যান্ডার্ড লুফোলগুলি অনুমোদিত নয়
  • প্রোগ্রাম কোন অতিরিক্ত বিবৃতি অর্থাত ছাড়া কাজ করতে হবে usingএ গুলি C#, তারা এন্ট্রিতে অন্তর্ভুক্ত করতে হবে
  • আপনি একটি ফাংশন থেকে আউটপুট বা ফলাফল মুদ্রণ করতে পারেন

এটি কোড গল্ফ তাই সংক্ষিপ্ততম সমাধানটি জয়লাভ করে।


1
আমরা কি এই আউটপুটগুলির সাথে সূচক করতে পারি 0,1,2,3,...?
flawr

@ ফ্লোয়ার আমি আপনার অর্থের অর্থ 100% নিশ্চিত নই
TheLethalCoder

@ দ্য লেথলকোডার তিনি জিজ্ঞাসা করেছেন যে তিনি ইনপুট নিতে পারেন nএবং একটি বর্গাকার আকার মুদ্রণ করতে পারেন 2n+1
মার্টিন এন্ডার

@ মার্টিনএন্ডার ওহ তাই কি আমার উদাহরণগুলিতে ইনপুট 1 দেয় *তবে তার জন্য এটি 0 ইনপুট হবে?
TheLethalCoder

1
@TheLethalCoder হ্যাঁ, এবং ইনপুট এর 1জন্য আপনার উদাহরণ দেয় 3
মার্টিন এন্ডার

উত্তর:


9

এমএটিএল , 20 19 17 বাইট

2-:XdtP!+~TTYa1YG

আপনি পরীক্ষামূলকভাবে এটি চেষ্টা করতে পারেন এমএটিএল অনলাইনে । যদি পৃষ্ঠাটি কাজ না করে তবে আপনাকে রিফ্রেশ করতে হবে।

নমুনা রান:

এখানে চিত্র বর্ণনা লিখুন

এএসসিআইআই সংস্করণ: 19 বাইট

2-:XdtP!+~TTYa~42*c

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


তবে কমপক্ষে নিশ্চিত হয়ে নিন যে লাইনগুলি সমান্তরাল এবং আয়তক্ষেত্রাকার। : ডি
flawr

@ ফ্লোয়ার এইচএম? আপনি কি বোঝাতে চেয়েছেন?
লুইস মেন্ডো

কমপক্ষে মাঝখানে দেখে মনে হচ্ছে স্কোয়ারগুলির দিকগুলি স্লিট্টেড তবে এটি কেবল একটি বিভ্রম। অথবা এটা? (স্থানের সময়কে
কমানোর সাথে সাথে

@ ফ্লোয়ার বা সম্ভবত চক্ষু চিকিত্সকের কাছে যান :
লুইস মেন্ডো

এমএটিএল অনলাইনে 19.0.0 সংস্করণে কাজ করে না।
হুম

16

ভিবিএ এক্সেল, 168 বাইট

নির্দেশ:

আমি ভিবিএর সহায়তায় এক্সেলকে খুঁজে পেয়েছি এই চ্যালেঞ্জের জন্য একটি কার্যকর এবং পর্যাপ্ত সরঞ্জাম। এক্সেলের কার্যপত্রকটি নীচের মতো সেট করুন

এখানে চিত্র বর্ণনা লিখুন

হ্যাঁ, আমরা ওয়ার্কশিটে সেলগুলি পিক্সেল হিসাবে ব্যবহার করে পুরানো সময়ের মতো ছোট, ক্লাসিক বর্গাকার আকারের পিক্সেল ব্যবহার করি। হা হা ...

এখানে আমি সেল এ 1টিকে ইনপুট হিসাবে ব্যবহার করি এবং আমি এর ফন্টের রঙটি লাল রঙে পরিবর্তন করি। লাল কেন? কারণ লাল ত্রি-বর্ণ বর্ণযুক্ত তাই এটি গল্ফের জন্য ফিট করে। তাত্ক্ষণিক উইন্ডোতে নিম্নলিখিত কোডটি লিখুন এবং চালান:

N=[A1]:Range("A1",Cells(N,N)).Interior.Color=vbRed:Range("B2",Cells(N-1,N-1)).Clear:For i=1To N:Cells(i,i).Interior.Color=vbRed:Cells(i,N+1-i).Interior.Color=vbRed:Next

কোডটি অবহিত করা:

Sub A()
    N = [A1]
    Range("A1", Cells(N, N)).Interior.Color = vbRed
    Range("B2", Cells(N - 1, N - 1)).Clear

    For i = 1 To N
        Cells(i, i).Interior.Color = vbRed
        Cells(i, N + 1 - i).Interior.Color = vbRed
    Next
End Sub

ধাপে ধাপে ব্যাখ্যা:

N = [A1]: Range("A1", Cells(N, N)).Interior.Color = vbRed

এখানে চিত্র বর্ণনা লিখুন

Range("B2", Cells(N - 1, N - 1)).Clear

এখানে চিত্র বর্ণনা লিখুন

পরিসীমা কক্ষগুলির তির্যক মাধ্যমে লুপিং: Cells(i, i).Interior.Color = vbRed

এখানে চিত্র বর্ণনা লিখুন

চূড়ান্ত পদক্ষেপ এবং আউটপুট: Cells(i, N + 1 - i).Interior.Color = vbRed

এখানে চিত্র বর্ণনা লিখুন


Cells.RowHeight=48:set r=[A1]:r.Resize(r,r).Interior.Color=0:[B2].Resize(r-2,r-2).Clear:For i=1To[A1]:set r=Union(r,Cells(i,i),Cells(i,r-i+1)):Next:r.Interior.Color=0
টেলর স্কট


7

পাইথন 2, 65 বাইট

i=n=2**input()/2
while i:print bin((n>i>1or~-n)|n|i|n/i)[2:];i/=2

বাইনারি সংখ্যাগুলি আউটপুট দেওয়ার জোনাথন অ্যালানের ধারণা ব্যবহার করে :

11111
11011
10101
11011
11111

সারিগুলি বিট গাণিতিক দিয়ে তৈরি হয় এবং বাইনারি প্রদর্শিত হয়। প্রতিটি অংশ এটি বা বাকি অংশে। অংশটি 2 n(স্থির) এবং i(পড়া) মাধ্যমে পাওয়ার দ্বারা উত্পাদিত হয়

  1. বাম পাশে 1
  2. ডান পাশ n
  3. ডায়াগোনাল iএবংn/i
  4. উপরে এবং নীচে n-1কখন i==1বা এর দ্বারা i==n

আসলে, (1) এবং (4) 1কখন 1<i<nএবং n-1অন্যথায় উত্পাদন করে একত্রিত হয় ।


7

পাইথন, 114 110 96 90 বাইট

সম্পূর্ণ পরিবর্তিত:

lambda n:[bin(sum(2**p for p in[range(n),{0,n-1,r,n-1-r}][0<r<n-1]))[2:]for r in range(n)]

স্ট্রিং, অক্ষর 1এবং ব্যবহার করে অক্ষরের একটি তালিকা ফেরত দেয় 0
-6 বাইটস TheBikingViking ধন্যবাদ

এটি আদর্শে পরীক্ষা করুন


পূর্ববর্তী পাইথন 2 @ 110

def f(n):g=range(n);n-=1;print'\n'.join(''.join((c in(r,n-r,0,n)or r in(0,n))and'#'or' 'for c in g)for r in g)

এটি আদর্শের উপর পরীক্ষা করুন


একটি ল্যামডা রূপান্তর এবং-অথবা অভিব্যক্তি পূনর্গঠনকারী 6 বাইট সংরক্ষণ করুন: lambda n:[bin(sum(2**p for p in[range(n),{0,n-1,r,n-1-r}][0<r<n-1]))[2:]for r in range(n)]
দ্য বাইকিংভিকিং

@ দ্য বাইকিংভিকিং আহ, আপনি ঠিক বলেছেন - ধারণাটি বাইরে রেখে ঘুমানোর আগে আমার সত্যিই কিছুটা পলক (আমার মূল অভিপ্রায়) নেমে যাওয়া উচিত ছিল: পি।
জোনাথন অ্যালান

7

জাভা 7, 131 130 128 125 124 122 বাইট

String c(int n){String r="";for(int i=n,j;n-->0;r+="\n")for(j=0;j<n;r+=i*j<1|n-i<2|n-j<2|i==j|i==n-++j?"*":" ");return r;}

3 বাইট সংরক্ষিত @ লিক্যুনকে ধন্যবাদ ; প্রদত্ত প্রস্থ চ্যালেঞ্জ সহ # টি ফাঁকা বর্গক্ষেত্র আঁকার জন্য আমার উত্তরে @ অলিভারগ্রাগোয়ারকে
1 বাইট সংরক্ষিত ধন্যবাদ ; @ ক্লিফরোটের জন্য 2 বাইট সংরক্ষণ করা হয়েছে

অবরুদ্ধ এবং পরীক্ষার কোড:

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

class M{
  static String c(int n){
    String r = "";
    for(int i = n, j; n-- > 0; r += "\n"){
      for(j = 0; j < n;
            r += i < 1      // Responsible for the first horizontal line
               | j < 1      // Responsible for the first vertical line
               | n-i < 2    // Responsible for the last horizontal line
               | n-j < 2    // Responsible for the last vertical line
               | i == j     // Responsible for the top-left to bottom-right diagonal line
               | i == n-++j // Responsible for the top-right to bottom-left diagonal line (and increasing j)
             ? "*"
             : " ");
    }
    return r;
  }

  public static void main(String[] a){
    System.out.println(c(1));
    System.out.println(c(3));
    System.out.println(c(5));
    System.out.println(c(7));
  }
}

আউটপুট:

*

***
***
***

*****
** **
* * *
** **
*****

*******
**   **
* * * *
*  *  *
* * * *
**   **
*******

1
String c(int n){String r="";for(int i=-1,j;++i<n;r+="\n")for(j=0;j<n;r+=i<1|j<1|n-i<2|n-j<2|i==j|i==n-++j?"*":" ")return r;}4 টি বাইট সংরক্ষণ করা হয়েছে
লিকি নুন

@ লিক্যুন 3 আসলে আপনার এখনও ;লুপটির অভ্যন্তরের পিছনের প্রয়োজন হবে ।
কেভিন ক্রুইজসেন

1
প্রথমত, আমি বিশ্বাস করি এটির i-->0পরিবর্তে হওয়া উচিত n-->0এবং আপনি 2 বাইটের i*j<1পরিবর্তেও ব্যবহার করতে পারেনi<1|j<1
ক্লিফ্রুট

@ ক্লিফরুট অবশ্যই আপনাকে কিছু খুঁজে বের করতে হবে। হেই, জে কে, ধন্যবাদ! ;) আমার মনে আছে আমি অন্য উত্তরে এর আগেও এরকম কিছু করেছি, তাই খুব খারাপ আমি এখানে এটি করতে ভুলে গিয়েছিলাম ..: এস
কেভিন ক্রুইজসেন

6

মতলব, 68 66 64 58 বাইট

গ্রাফিকাল আউটপুট এছাড়াও অনুমোদিত:

k=input('');[x,y]=ndgrid(abs(-k:k));spy(~(max(x,y)<k&x-y))

কোন ফলাফল যেমন

এখানে চিত্র বর্ণনা লিখুন

কেবলমাত্র আসকি সংস্করণগুলি হ'ল:

এটি সূচক ব্যবহার করছে is 0,1,2,3,...

k=input('');[x,y]=ndgrid(abs(-k:k));[(max(x,y)==k|~(x-y))*42,'']

বিকল্পভাবে সূচকের সাথে 1,3,7,...:

n=input('');k=1:n;m=eye(n);m([k,end-k+1])=1;[(m|flip(m'))*42,'']

দুর্দান্ত, কেবল গ্রাফিকাল আউটপুটটি আরও ভাল ইমো দেখাচ্ছে না, এটি দুর্দান্ত যে এটি বাইটের ক্ষেত্রেও খাটো। সাধারণত সরল ASCII এর পরিবর্তে আরও কিছু গ্রাফিকাল তৈরি করা কেবলমাত্র বাইট-কাউন্ট বাড়িয়ে তোলে (সাধারণত প্রচুর পরিমাণে)।
কেভিন ক্রুইজসেন

6

সি #, 112 101 বাইট

এই বেনামে ল্যাম্বদা স্টেটমেন্ট-না-প্রকাশের জিনিসগুলি সি # তে অনুমোদিত বলে আমাকে মনে করিয়ে দেওয়ার জন্য TheLethalCoder কে ধন্যবাদ।

n=>{var r="";for(int y=n--,x;y-->0;r+="*\n")for(x=0;x<n;r+=y%n*x<1|y==x|y==n-x++?"*":" ");return r;};

কে বলেছে সি # মজাদার গল্ফ করার ভাষা নয়?



5

লোগো, 155 বাইট

গ্রাফিকাল সমাধান, একটি ফাংশন হিসাবে বাস্তবায়িত

বর্ণমালা ত্রিভুজের জন্য আমি আমার উত্তরটি পুনরায় তৈরি করেছি এবং কিছুটা কোণ পরিবর্তন করেছি। আগের মতো, rঅক্ষরের একটি লাইন আঁকুন। এবার, bফাংশনটি একটি সোজা প্রান্ত এবং একটি তির্যক অঙ্কন করে, ঘোরানো এবং চারবার পুনরাবৃত্তি করে একটি বাক্স আঁকবে। এর ফলে দ্বিগুণ দুটি বার আঁকতে হবে (একে অপরের উপরে), তবে এটি আলাদাভাবে পরিচালনা করার চেয়ে কম কোড ছিল। এই উত্তরটি সঠিকভাবে এমনকি সংখ্যাকে পরিচালনা করে। 1এটিকে সামনে থেকে আটকাতে আমাকে একটি ইনপুটটির জন্য বিশেষ হ্যান্ডলিং যুক্ত করতে হয়েছিল।

আমি এটি একটি ফাংশন হিসাবে প্রয়োগ করেছি, b যা আকারকে আর্গুমেন্ট হিসাবে গ্রহণ করে:

pu
to r:n:b:l repeat:n[rt:b label "A lt:b if repcount>1[fd:l]] end
to b:s
repeat 4[rt 90
r:s 90-heading 20 rt 135
r:s 90-heading 20*sqrt 2 rt 45]
end

উপর এটি চেষ্টা করে দেখুন Calormen.com লোগো অনুবাদক । এটি কল করতে, একটি লাইন যুক্ত করুন এবং bনিম্নলিখিত ফর্ম্যাটে কল করুন :

b 7

আকার 7 এর নমুনা

... অথবা স্যাম্পলার প্ল্যাটারটি চেষ্টা করুন, যা 5, 7, 9 এবং 11 আকারে চারটি নমুনা আঁকছে, এর মধ্যে 90 ডিগ্রি ঘোরছে:

repeat 4[
  b repcount*2+3
  rt 90
]

একাধিক আকারের নমুনা


4

আর, 102 বাইট

    n=scan();for(i in 1:n){for(j in 1:n){z=" ";if(i%in%c(1,n,n-j+1)|j%in%c(1,i,n))z="*";cat(z)};cat("\n")}

নোট করুন যে i == 1 | j == 1 | ... এর চেয়ে%% ব্যবহার করে শর্তটি প্রকাশ করা আরও দক্ষ ...


ইনপুটটি একের অধিক হওয়ার নিশ্চয়তা দিলে একটি চরিত্রের গল্ফ পাওয়া সম্ভব: n=scan();for(i in n:1){for(j in n:2){z=" ";if(i%in%c(1,n,n-j+1)|j%in%c(i,n))z="*";cat(z)};cat("*\n")}
জেডিএল


4

হাস্কেল, 102 100 96 91 87 বাইট

c s=unlines.f$f.(#)where f=(<$>[1..s]);x#y|elem y[1,s,x]||elem x[1,s,s-y+1]='*'|1>0=' '
  • Flawr ধন্যবাদ 2 বাইট সংরক্ষণ করা
  • তালিকার বোধগম্যতা ব্যবহার করে আরও 4 টি বাইট সংরক্ষণ করা হয়েছে।
  • 5 বাইট সংরক্ষণের সমন্বিত Flawr এর উন্নতির সাথে সম্মিলন করে হয়েছেany
  • 4 বাইট প্রতিস্থাপন দ্বারা সংরক্ষিত anyসঙ্গেelem

অবরুদ্ধ সংস্করণ:

cross :: Int -> String
cross s = unlines $ map line [1..s]
    where line y = map (pos y) [1..s]
          pos y x | x == y = '*'
                  | x == s - y + 1 = '*'
                  | y `elem` [1, s] = '*'
                  | x `elem` [1, s] = '*'
                  | otherwise = ' '

আমি নিশ্চিত যে এটি এখনও উন্নত করা যেতে পারে, তবে এটিই আপাতত নিয়ে এসেছি।

পুরনো সংস্করণ:

c s=unlines.f$f.(#)where f=(<$>[1..s]);x#y|any(==y)[1,s,x]||any(==x)[1,s,s-y+1]='*'|1>0=' '

2
আপনি [1..s]দুবার ব্যবহার করছেন , আমি মনে করি আপনি এটি সংজ্ঞায়িত করতে পারেন where
flawr

এটির ফলে 102 টি বাইটও পাওয়া যাবে, যেহেতু মূল শব্দটির আগে আমাদের একটি অতিরিক্ত স্থান যুক্ত করতে হবে। c s=unlines$(\m->(m#)<$>z)<$>z where z=[1..s];m#n|or((==)<$>[n,m]<*>[1,s])||n==m||n==s-m+1='*'|1>0=' '
sudee

1
আহ ঠিক আছে, কিন্তু আপনি <$>[1..s]একটি ফাংশন প্যাক করতে পারেন , তাই না? লাইকc s=unlines$f(\m->f(m#))where m#n|or((==)<$>[n,m]<*>[1,s])||n==m||n==s-m+1='*'|1>0=' ';f=(<$>[1..s])
flawr

ভাল পয়েন্ট, যে সত্যিই কাজ করে। :)
sudee

1
পিএস:c s=unlines$f$f.(#)where f=(<$>[1..s]);m#n|or((==)<$>[n,m]<*>[1,s])||n==m||n==s-m+1='*'|1>0=' '

3

জাভা, 130 বাইট

s->{for(int i=0;i<s;i++)for(int j=0;j<s;j++)System.out.print((s-1-i==j||i==j||i==0||j==0||i==s-1||j==s-1)?j==s-1?"*\n":"*":" ");};

পরীক্ষা প্রোগ্রাম

Consumer<Integer> consumer = s -> {
        for (int i = 0; i < s; i++) {
            for (int j = 0; j < s; j++) {
                System.out.print((s - 1 - i == j || i == j || i == 0 || j == 0 || i == s - 1 || j == s - 1) ? j == s - 1 ? "*\n" : "*" : " ");
            }
        }
    };

    consumer.accept(20);

+1 টি! আমি উল্লেখ করব যে এটি জাভা 8, বিটিডাব্লু। এছাড়াও, আপনি এর int আগে jএবং এর int i=0,j;পরিবর্তে ব্যবহার করে কিছুটা গল্ফ করতে পারেন । আপনি সমস্ত ||দিয়ে প্রতিস্থাপন করতে পারেন এবং |ত্রিনিয়ারী-চেকের প্রথম বন্ধনী মুছে ফেলতে পারেন। এছাড়াও, আপনি s-1চারবার ব্যবহার করুন , সুতরাং আমি এটি একটি পরিবর্তনশীল মধ্যে রাখব। এছাড়াও, আপনি এতে পরিবর্তন করতে ==0পারেন <1। সুতরাং সামগ্রিকভাবে এটি হয়ে যায় s->{for(int i=0,j,x=s-1;i<s;i++)for(j=0;j<s;j++)System.out.print(x-i==j|i==j|i<1|j<1|i==x|j==x?j==x?"*\n":"*":" ");}( 116 বাইট ) আমার জাভা 7 টির চেয়ে বেশ খানিকটা ছোট , তাই দুর্দান্ত পদ্ধতির!
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুজসেন আমি সর্বদা একটি সংক্ষিপ্ত উত্তর দিয়ে শেষ করি তবে এলএমএওয়ের চেয়ে উন্নতির আরও জায়গা রয়েছে। ভাল আমার বন্ধু golfed।
শান ওয়াইল্ড

হে হে। এক্সডি 116 বাইট সংস্করণ বিটিডব্লু ব্যবহার করতে দ্বিধা বোধ করবেন। এটি আপনার কোড, সবেমাত্র আরও কিছু গল্ফ করেছে। ;) আমার জাভা 7 টি উত্তর (যা দুর্ভাগ্যক্রমে দীর্ঘতর) কিছুটা ভিন্ন পদ্ধতির ব্যবহার করে। আমি যদি এটি 116 বাইট সংস্করণে সম্পাদনা করতে পারি তবে আমি মূলত আপনার উত্তরটি চুরি করব, যা আমি চাই না।
কেভিন ক্রুইজসেন

কেবল আপনার গল্ফগুলি অনুলিপি করা এবং আটকানোর কোনও কারণ নেই, আমি সাধারণত একটি দ্রুত উপহাস পোস্ট করি এবং পরে গল্ফ করা যেতে পারে এমন কোনও কিছুই আমি মিস করেছি কিনা তা দেখতে এটির পরে ফিরে আসি। তবে আপনি এটি আমার জন্য পুনরায় চালু করেছেন :( হাহা জে কে
শান ওয়াইল্ড

ওহ দুঃখিত. আমি প্রদত্ত বেশিরভাগ টিপস জাভাতে গল্ফ করার টিপসে আসলে উপস্থিত রয়েছে । আমার ধারণা আমি মাত্র 2 কুইক 4 ইউ। ;)
কেভিন ক্রুইজসেন

3

সি, 140 121 114 বাইট

19 বাইট কুইন্টিনকে ধন্যবাদ

ডাবল-নেস্টড লুপ থেকে একটি লুপে স্যুইচ করে 7 বাইট সংরক্ষণ করা হয়েছে।

main(a){scanf("%d",&a);for(int i=0;i<a*a;i++,i%a||puts(""))putchar(i/a&&i/a^a-1&&i%a&&-~i%a&&i%-~a&&i%~-a?32:42);}

গল্ফিং পরামর্শ স্বাগত জানাই।


আমি কখনই সি তে প্রোগ্রাম করি না, তবে জাভা-র মতো প্রথম ফর্ম-লুপে ইন্ট স্থাপন করা সম্ভব নয়? অর্থাত int i,j;for(i=0;করতেfor(int i=0,j;
কেভিন Cruijssen

1
সর্বশেষ সময় আমি সি ব্যবহার করেছি আপনি এমনকি int i,j;পরে লাগাতে পারে না scanf!
নীল

n+~i-jইত্যাদি চেষ্টা করুন
নীল

#includeপুরোপুরি সরিয়ে জিসিসি ঠিক আছে fine
কুইন্টিন

@ নীল আপনি কি বলতে চাইছেন যে আপনি তার পরে এটি রাখতে পারেন নি?
লিকি নুন

3

পাওয়ারশেল (133)

filter s($x){1..$x|%{$o="";$r=$_;1..$x|%{if($_-eq1-or$r-eq1-or$_-eq$x-or$r-eq$x-or$r-eq$_-or$r-1-eq$x-$_){$o+="*"}else{$o+="_"}};$o}}

ক্লানকি, তবে এটি যথেষ্ট ভাল কাজ করে।

s(11)
***********
**_______**
*_*_____*_*
*__*___*__*
*___*_*___*
*____*____*
*___*_*___*
*__*___*__*
*_*_____*_*
**_______**
***********

গল্ফিংয়ের পরামর্শগুলি অবশ্যই স্বাগত জানায়, পাওয়ারশেল করায় অনেক দীর্ঘ হয়েছে।


3

সিলোস , 212 বাইট

readIO 
a = i
lbla
a - 1
t = a
t + 1
t % i
t * a
b = i
lblb
b - 1
u = b
u + 1
u % i
u * b
u * t
v = a
v - b
u * v
v = a
v + b
v + 1
v % i
u * v
u |
if u c
print #
GOTO d
lblc
print .
lbld
if b b
printLine 
if a a

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


:) এই ভাষায় আরও মনোযোগ আনার জন্য ধন্যবাদ
রোহান ঝুনঝুনওয়ালা

1
@ রোহানঝুনঝুনওয়ালা আমি এতে প্রোগ্রামিং উপভোগ করেছি, এমন উজ্জ্বল ভাষা তৈরি করার জন্য আপনাকে ধন্যবাদ।
লিকি নুন

3

জিএনইউ সেড, 117 114 + 1 (আর পতাকা) = 115 বাইট

p;/^0$/Q;/^000$/{p;q}
h;s/./ /3g;s/  $/00/
:f;/ 00 /!{G;h;s/\n.*//p;t;:}
s/^(0 *)0  ?( *)0/\1 0\20 /
tf;s/00/0/p;g

যেহেতু sed সংখ্যার জন্য কোন নেটিভ সমর্থন আছে, ইনপুট এই উপর ভিত্তি করে ইউনারী দেওয়া হয় ঐক্যমত্য । বর্গক্ষেত্রের দ্বিতীয়ার্ধটি প্রথমার্ধ যা হোল্ড স্পেসে বিপরীত ক্রমে সংরক্ষণ করা হয়েছিল।

চালান:

sed -rf crossed_square.sed <<< "00000"

আউটপুট:

00000
00 00
0 0 0
00 00
00000

3

পাইথন, 89 বাইট

এটাই ছিল থ্রোব্যাক! আমি পাইথনের টার্টল মডিউল ব্যবহার করেছি।

from turtle import*
n=input()
for i in[(n,n),(n,0),(0,n),(0,0),(n,0),(0,n),(n,n)]:goto(i)

এন = 200: এর ফলাফল এখানে রয়েছে:

এখানে চিত্র বর্ণনা লিখুন


1
সৃজনশীলতার জন্য +1
এমবিএক্স

2

স্কালা, 141 137 বাইট

val s=args(0).toInt-1;val t=0 to s;print(t.map{x=>t.map{y=>if(x==0||x==s||y==0||y==s||x==y||x==s-y)"*" else " "}.mkString+"\n"}.mkString)

চালান:

$ scala cross.scala 10

প্রযুক্তিগতভাবে আমি মুদ্রণ সামগ্রীগুলি সরিয়ে এমন কিছুতে যেতে পারি

def c(n:Int)={val (s,t)=(n-1,0 to n-1);t.map{x=>t.map{y=>if(x==0||x==s||y==0||y==s||x==y||x==s-y)"*" else " "}.mkString+"\n"}.mkString}

এটি আপনাকে ফাংশন সিনট্যাক্স স্টাফ গণনা করে কিনা তার উপর নির্ভর করে এটি 135 বা 121 বাইট তৈরি করে।

পঠনযোগ্য সংস্করণ:

def cross(n: Int) = {
   // Declares both s and t as variables with tuple expansion
   // s is the zero-based size and t is a range from 0 to s
   val (s,t) = (n-1, 0 to n-1)

   // Maps all rows by mapping the columns to a star or a space
   t.map { x =>
      t.map { y =>
        if (x == 0 || x == s || y == 0 || y == s || x == y || x == s-y) "*" 
        else " "
      }.mkString+"\n" // Concatenate the stars and spaces and add a newline
   }.mkString         // Concatenate the created strings
 }


2

পাইথন 2, 83 বাইট

i=n=input()
while i:l=['* '[1<i<n]]*n;i-=1;l[0]=l[~0]=l[i]=l[~i]='*';print`l`[2::5]

*প্রথম, শেষ, আমি এবং আমি শেষ স্থানে রাখার জন্য সারির অক্ষরের একটি তালিকা সংশোধন করে । প্রথম এবং শেষ সারিটি সমস্ত হিসাবে শুরু হয় *এবং বাকিটি সমস্ত স্থান হিসাবে শুরু হয় । সন্ধ্যার জন্যও কাজ করে। একটি lambdaঅভিব্যক্তি সম্ভবত পরিবর্তনের চেয়ে কম, তবে আমি এই পদ্ধতিটি পছন্দ করি।



2

গণিত, 81 বাইট

""<>#&/@Table[If[i^2==j^2||i^2==#^2||j^2==#^2,"*"," "],{i,-#,#},{j,-#,#}]&[(#-1)/2]&

কেন্দ্রে উত্স সহ একটি সমন্বিত সিস্টেম তৈরি করে এবং *sগুলি কোথায় যাবে সেগুলি গণনা করে । প্রতি সারিতে একটি স্ট্রিংয়ের অ্যারে আউটপুট করে।


2

জাভাস্ক্রিপ্ট ( 289 270 বাইট)

function s(a){b=[];for(i=0;i<a;i++)if(b.push([]),0==i||i==a-1)for(j=0;j<a;j++)b[i].push("*");else for(j=0;j<a;j++)0==j||j==a-1?b[i].push("*"):j==i||a-1-j==i?b[i].push("*"):b[i].push(" ");c="";for(i=0;i<b.length;i++){for(j=0;j<b[i].length;j++)c+=b[i][j];c+="\n"}return c}

Ungolfed:

function square(size){
str=[];

for(i=0;i<size;i++){
    str.push([]);
    if(i==0||i==size-1){
        for(j=0;j<size;j++){
            str[i].push("*");
        }
    }else{
        for(j=0;j<size;j++){
            if(j==0||j==size-1){
                str[i].push("*");
            }else if(j==i||size-1-j==i){
                str[i].push("*");
            }else{
                str[i].push(" ");
            }
        }
    }
}

out="";
for(i=0;i<str.length;i++){
    for(j=0;j<str[i].length;j++){
        out+=str[i][j];
    }
    out+="\n";
}
return out;
}

সম্পাদনা: ফিলিপ ফ্লেঙ্কারকে ধন্যবাদ 19 বাইট সংরক্ষিত


যেহেতু পেছনের নিউলাইনগুলি ঠিক আছে, তাই আমার মনে হয় আপনার চেকের দরকার নেইsize==1
ফিলিপ ফ্লেঙ্কার

1
পুনঃটুইট করুন
পল স্মিটজ

1

পার্ল, 83 +1 = 84 বাইট

-nপতাকা নিয়ে দৌড়াও।

$\="*
*";print$c="*"x($_+1);for$b(1..$_){@a=($")x$_;@a[$b-1,-$b]=(a,a);print@a}say$c

আক্ষরিক নিউলাইনটি 1 বাইট \nবা তার বেশি সঞ্চয় করে$/

রিডেবল:

$\="*\n*";
print$c="*"x($_+1);
for$b(1..$_){
    @a=($")x$_;
    @a[$b-1,-$b]=(a,a);
    print@a
}
say$c

কোড শীর্ষ লাইনটি মুদ্রণ করে এবং এটি সংরক্ষণ করে $c, তারপরে যথাযথ স্লটগুলির সাথে প্রতিস্থাপিত করে একটি গোছা মুদ্রণ করবেa এস দ্বারা হয়েছে, তারপরে আবার শীর্ষ লাইনটি মুদ্রণ করবে।

$\ভেরিয়েবলের অ্যাসাইনমেন্টটি ইন্টারপ্রেটারকে প্রত্যেকের পরে বিষয়বস্তু (একটি নক্ষত্র, একটি নতুন লাইন এবং অন্য একটি নক্ষত্র) মুদ্রণ করতে বলেprint , তবে এটি একটি এর পরে ঘটে না say


1

স্মাইলব্যাসিক, 46 বাইট

INPUT I
GBOX I,I,1,1GLINE 1,I,I,1GLINE 1,1,I,I

(না, এসবি 1 সূচকযুক্ত গ্রাফিক্স ব্যবহার করে না ...)


1

কাঠকয়লা, 8 বাইট

GH+↘↑↙N*

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা: PolygonHollowকমান্ডের প্যারামিটার হিসাবে ব্যবহৃত হলে , +একটি বাক্স আঁকুন এবং তীরগুলি তখন ত্রিভুজ তৈরি করে। কিছু অন্যান্য শর্টকাট অক্ষর কিন্তু তারা দরকারী যেমন হতে পুনরায় সংজ্ঞায়িত করা প্রয়োজন হবে Yসমতূল্য ↖↗↓কিন্তু যদি এটি eqivalent ছিল ↗↓↖তারপর Y+যথেষ্ট হবে।


1

বিক্রয় ( 135 বাইট ):

 C(){ j=$(($1-1));for i in $(seq 0 $j);do dc<<<2o10i`echo $((1|2**$i|2**($j-$i)|2**$j|(($i==0||$i==$j))*(2**$j-1)))`p;done|tr 01 ' X';}

পরীক্ষা:

 C 1
 X

 C 3
 XXX
 XXX
 XXX

 C 5
 XXXXX
 XX XX
 X X X
 XX XX
 XXXXX

 C 7
 XXXXXXX
 XX   XX
 X X X X
 X  X  X
 X X X X
 XX   XX
 XXXXXXX

 C 9
 XXXXXXXXX
 XX     XX
 X X   X X
 X  X X  X
 X   X   X
 X  X X  X
 X X   X X
 XX     XX
 XXXXXXXXX

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