একটি আধা-জিগজ্যাগ তৈরি করুন


29

Nইনপুট হিসাবে আপনাকে ইতিবাচক পূর্ণসংখ্যা দেওয়া হবে । আপনার কাজটি Nপ্রতিটি দৈর্ঘ্যের একদিকে অর্ধ-জিগজ্যাগ তৈরি করা N। যেহেতু কার্যটি স্পষ্টভাবে বর্ণনা করা তুলনামূলকভাবে শক্ত তাই এখানে কয়েকটি উদাহরণ রয়েছে:

  • N = 1:

    হে
    
  • N = 2:

    হে
     OO যেমন পণ্য
    
  • N = 3:

    OO যেমন পণ্য
     OO যেমন পণ্য
      বাংলাদেশী গ্রামের
    
  • N = 4:

    OOOOO
     OO যেমন পণ্য
      OO যেমন পণ্য
       উহ
    
  • N = 5:

    OOOOOO
     বাংলাদেশী গ্রামের
      বাংলাদেশী গ্রামের
       বাংলাদেশী গ্রামের
        OOOOOO
    
  • N = 6:

    OOOOOOO
     বাংলাদেশী গ্রামের
      বাংলাদেশী গ্রামের
       বাংলাদেশী গ্রামের
        বাংলাদেশী গ্রামের
         OOOOOOOOOOOO
    
  • N = 7:

    OOOOOOOOO
     উহ
      উহ
       উহ
        উহ
         উহ
          OOOOOOOOOOOOOO
    
  • সঙ্গে একটি বৃহত্তর পরীক্ষার কেস N = 9

আপনি দেখতে পাচ্ছেন, একটি আধা-জিগজ্যাগটি বিকল্প তির্যক এবং অনুভূমিক রেখা দ্বারা তৈরি করা হয় এবং এটি সর্বদা উপরের-বাম থেকে নীচে ডান ত্রিভুজ রেখা দিয়ে শুরু হয়। মনে রাখবেন যে অনুভূমিক রেখার অক্ষরগুলি একটি স্পেস দ্বারা পৃথক করা হয়েছে।

বিধি

  • আপনি এর পরিবর্তে কোনও অ-শ্বেতস্পেস অক্ষর চয়ন করতে পারেন O, এটি এমনকি বেমানানও হতে পারে।

  • আপনি ফলাফলটিকে স্ট্রিং হিসাবে বা স্ট্রিংগুলির তালিকা হিসাবে, প্রতিটি এক লাইনের প্রতিনিধিত্ব করে ফলাফল আউটপুট / ফেরত দিতে পারেন ।

  • আপনার পিছনে বা শীর্ষস্থানীয় নতুন লাইন থাকতে পারে।

  • ডিফল্ট লুফোলস প্রয়োগ হয়।

  • আপনি ইনপুট নিতে পারেন এবং যে কোনও মানক আউটপুট সরবরাহ করতে পারেন ।

  • যদি সম্ভব হয় তবে আপনার জমা দেওয়ার জন্য একটি পরীক্ষার লিঙ্ক যুক্ত করুন। গল্ফিংয়ের প্রচেষ্টা দেখায় এবং এর একটি ব্যাখ্যা আছে এমন কোনও উত্তরকে আমি উত্সাহিত করব।

  • এটি , তাই প্রতিটি ভাষার বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী!



অনুভূমিক যে আমাদের ও এর মাঝে ফাঁকা স্থান রাখতে হবে?
হাটসুপয়েন্টারকুন

1
@ হাটসুপয়েন্টারকুন নোট করুন যে অনুভূমিক লাইনের অক্ষরগুলি একটি স্থান দ্বারা পৃথক করা হয়েছে। - হ্যাঁ, আপনাকে স্পেস রাখতে হবে।
মিঃ এক্সকোডার

1
অই হ্যাঁ. আমার পড়া শিখানো উচিত। ধন্যবাদ
হাটসুপয়েন্টারকুন

1
@ জোহনহ্যামিলটন উত্তরগুলি ইনপুট হিসাবে প্রদত্ত যে কোনও সংখ্যার জন্য তাত্ত্বিকভাবে কাজ করা উচিত । কোনও পর্দা কী ধরে রাখতে পারে তা নিয়ে তাদের অবশ্যই চিন্তা করা উচিত নয়।
মিঃ এক্সকোডার

উত্তর:


10

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

FN«↶§7117ι×⁺#× ﹪ι²⁻Iθ¹»#

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

-5 ধন্যবাদ নীলকে

এবং AST:

Program
├F: For
│├N: Input number
│└Program
│ ├↶: Pivot Left
│ │└§: At index
│ │ ├'7117': String '7117'
│ │ └ι: Identifier ι
│ └Print
│  └×: Product
│   ├⁺: Sum
│   │├'#': String '#'
│   │└×: Product
│   │ ├' ': String ' '
│   │ └﹪: Modulo
│   │  ├ι: Identifier ι
│   │  └2: Number 2
│   └⁻: Difference
│    ├I: Cast
│    │└θ: Identifier θ
│    └1: Number 1
└Print
 └'#': String '#'


@ মিঃ এক্সকোডার এটিকে প্রকৃতপক্ষে উদাসীন মনে হচ্ছে ... কীভাবে এটি গল্ফ করবেন তা নিশ্চিত নয়।
এরিক দি আউটগল্ফার

ওপি বলেছিল যে চরিত্রটি যে কোনও হতে পারে এবং সামঞ্জস্যপূর্ণ হওয়ার প্রয়োজন নেই, তাই আমি FN§⟦↘→↗→⟧ι⁻Iθ¹→কেবল (15 বাইটের) লাইন ধরে কিছু জন্য যাচ্ছিলাম , তবে দিকনির্দেশের তালিকাগুলি চারকোলে সঠিকভাবে কাজ করছে বলে মনে হয় না। একটি করুণা।
চার্লি

@ কার্লোস আলেজোও সে চেষ্টা করেছেন কিন্তু দুর্ভাগ্যক্রমে এটি কার্যকর হয়নি।
এরিক দি আউটগল্ফার

1
@ কার্লোস আলেজো FN✳§⟦↘→↗→⟧ι⁻θ¹Oডেনিসকে টেনে নেওয়ার পরে কাজ করবে, নির্দেশে ফেলে দেওয়া হচ্ছে
এএসসিআইআই-কেবল

7

পাইথন 2 , 157 153 বাইট

n=input()
o,s=q='O '
def p(k,t=q*n+s*(4*n-6)):print(t*n)[k*~-n:][:n*3/2*~-n+1]
p(2)
for i in range(n-2):p(0,i*s+s+o+s*(4*n-7-2*i)+o+s*(2*n+i-2))
n>1>p(5)

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

  • n*3/2*~-n+1 প্রতিটি লাইনের প্রস্থ: n3n / 2⌋ · (n − 1) + 1 টি অক্ষর।
  • স্ট্রিং q*n+s*(4*n-6)শীর্ষ এবং নীচের সারিগুলি উপস্থাপন করে। যদি আমরা এটির পুনরাবৃত্তি করি এবং স্লাইস করে [2*(n-1):]আমরা শীর্ষ সারিটি পাই; যদি আমরা টুকরো টুকরো [5*(n-1):]করি তবে নীচের সারিটি পাই। সুতরাং সংজ্ঞা pএবং কল p(2)এবং p(5)। তবে যেহেতু আমাদের অন্য সমস্ত লাইনের জন্য পুনরাবৃত্তি এবং লাইন-দৈর্ঘ্য স্লাইসিং প্রয়োজন, তাই আমরা লুপটিতে পুনরায় ব্যবহার করি p
  • i*s+s+o+…এটি মধ্য সারিগুলির জন্য কেবল বিরক্তিকর ভাব expression
  • n>1>p(5)শর্ট সার্কিট হবে যদি n≯1, p(5)মূল্যায়ন না করার কারণ হয়। সুতরাং, এটি সংক্ষিপ্ত if n>1:p(5)

বাহ, দুর্দান্ত সমাধান, এত চালাক। আপনি আমার
উপার্জনটি

বাহ, কখনই জানত না পাইথনের মতো তুলনাগুলিতে সংক্ষিপ্ত সার্কিট ছিল, +1।
জাকারি 19

6

গণিত, 126 125 121 112 104 89 86 বাইট

(m=" "&~Array~{#,#^2-#+1};Do[m[[1[i,#,-i][[j~Mod~4]],j#-#+i+1-j]]="X",{j,#},{i,#}];m)&
  • #বেনামে ফাংশনের জন্য ইনপুট নম্বর (চূড়ান্ত দ্বারা শেষ &)।
  • m=" "&~Array~{#,#^2-#+1};#,#^2-#+1ধ্রুবক বেনামে ফাংশন "আউটপুট একটি স্পেস" এর আউটপুট দিয়ে প্রদত্ত মাত্রাগুলির একটি অ্যারে পূরণ করে সঠিক আকারের স্পেস অক্ষরের একটি ম্যাট্রিক্স তৈরি করে " "&
  • Do[foo,{j,#},{i,#}]নেস্টেড Do লুপ, একজোড়া যেখানে jথেকে রেঞ্জ 1থেকে #এবং যে এর ভিতর iথেকে রেঞ্জ 1থেকে #
  • m[[1[i,#,-i][[j~Mod~4]],j#-#+i+1-j]]="X"সেট চরিত্র করা ম্যাট্রিক্স সংশ্লিষ্ট অংশ Xউপর ভিত্তি করে jএবং i। এর -iথেকে বাইটগুলি সংরক্ষণ করতে নেতিবাচক সূচক ব্যবহার করা হয় #-i+1। (আমি এই কোডের মূল সংস্করণ Mod[j,4]হিসাবে লিখতে ভুলে গেছি j~Mod~4।) জেনি_ম্যাথি উল্লেখ করেছিলেন যে আমরা Switch9 বাইট সংরক্ষণ করতে সরাসরি তালিকার তালিকার জন্য মডিউলার অবশিষ্টাংশ ব্যবহার করতে পারি (ব্যবহার না করে ), এবং জাংহওয়ান মিন উল্লেখ করেছিলেন যে আমরা করিনি ' টি ব্যবহার করার দরকার নেই ReplacePartযেহেতু আমরা কোনও অ্যারের একটি অংশ সেট করতে পারি এবং এটি বাইটগুলি বাঁচাতে 1[i,#,-i][[j~Mod~4]]অদ্ভুত আচরণ এবং সাধারণতার ব্যবহার [[foo]]করে{1,i,#,-i}[[j~Mod~4+1]]
  • যেহেতু মেটা প্রতিষ্ঠিত করেছে যে অক্ষরের একটি তালিকা একটি স্ট্রিং (যেমন জংহওয়ান মিন দেখিয়েছে ) অক্ষরগুলির ম্যাট্রিক্সের সারিগুলিতে আমাদের কোনও ক্রিয়াকলাপ মানচিত্রের প্রয়োজন নেই কারণ এটি ইতিমধ্যে "স্ট্রিং" এর একটি তালিকা।

আপনি ওল্ফ্রাম ক্লাউড স্যান্ডবক্সে নীচের মত কোডটি পেস্ট করে এবং শিফট + এন্টার বা নামপ্যাড এন্টার টিপুন:

(m=" "&~Array~{#,#^2-#+1};Do[m[[1[i,#,-i][[j~Mod~4]],j#-#+i+1-j]]="X",{j,#},{i,#}];m)&@9//MatrixForm

1
খুব সুন্দর! আপনি স্ট্রিংজইনকে "" <> # এর সাথে প্রতিস্থাপন করতে পারেন এবং 4 বাইট সংরক্ষণ করতে
J42161217

@ জেনি_ম্যাথি টিপটির জন্য ধন্যবাদ! এটি বেশ কার্যকর বলে মনে হচ্ছে।
মার্ক এস

2
আপনি সুইচ [...] কে {1, i, #, - i} [[j ~ Mod ~ 4 + 1]] এর সাথে প্রতিস্থাপন করতে পারেন এবং 9 টি বাইট সংরক্ষণ করতে পারেন!
J42161217

1
আপনার ReplacePartএখানে আসলে দরকার নেই। m=ReplacePart[...]হতে পারে m[[{1,i,#,-i}[[j~Mod~4+1]],j#-#+i+1-j]]="X"- আপনি Setএকটি Partতালিকার। এটি 15 বাইট থেকে মুক্তি পায়।
জংহওয়ান মিন

1
{1,i,#,-i}[[j~Mod~4+1]]হতে পারে 1[i,#,-i][[j~Mod~4]]। এই কৌশলটি কাজ করে কারণ একটি এক্সপ্রেশনকে [[0]]ফেরত দেয় Head
জংহওয়ান মিন

4

সি ++, 321 234 বাইট

-87 বাইট জ্যাকারি ধন্যবাদ

#include<vector>
#include<string>
auto z(int n){std::vector<std::string>l;l.resize(n,std::string(n*n+n/2*(n-1),32));l[0][0]=79;int i=0,j,o=0;for(;i<n;++i)for(j=1;j<n;++j)l[i%4?i%4-1?i%4-2?0:n-j-1:n-1:j][i*n+j-i+(o+=i%2)]=79;return l;}

স্ট্রিংগুলির একটি ভেক্টর প্রদান করে


আমি এটি 318 বাইটে নামলাম
জাকারি

সংশোধন, আমি এটি 239 বাইটে নামিয়েছি
Zacharý

স্প্যামের জন্য দুঃখিত, 234 বাইট: repl.it/JpJ2/3
জাকারি

1
আপনাকে স্বাগত জানানো ছাড়া আমি আর কী বলতে পারি!
জাকারি

@ জ্যাচারý আপনাকে অনেক ধন্যবাদ স্যার
হাটসুপয়েন্টারকুন

4

গণিত, 179 বাইট

Rotate[(c=Column)@(t=Table)[{c@(a=Array)[" "~t~#<>(v="o")&,z,0],c@t[t[" ",z-1]<>v,z-1],c@a[t[" ",z-2-#]<>v&,z-1,0],c@t[v,z-Boole[!#~Mod~4<1]-1]}[[i~Mod~4+1]],{i,0,(z=#)-1}],Pi/2]&

@ জংহওয়ানমিনের জন্য সম্পাদনা করুন


আমি এটি যে সংক্ষিপ্ত, ভাল সম্পন্ন হবে আশা করিনি!
মিঃ এক্সকোডার

শুধু একটি প্রশ্ন: Mod[z,4]==0সঙ্গে প্রতিস্থাপন করা যাবে Mod[z,4]<1?
মিঃ এক্সকোডার

হ্যাঁ, আমি কিছু জিনিস গল্ফ করতে পারি ...
J42161217

3
আমি আসলে ম্যাথমেটিকাকে জানি না, তবে আপনি কি -1 বাইটের Mod[#,4]সাথে প্রতিস্থাপন করতে পারবেন #~Mod~4?
মিঃ এক্সকোডার 16

1
উফ ... দুর্ঘটনাক্রমে হ্রাস পেয়েছে। আপনি কি উত্তরটি সম্পাদনা করতে পারবেন যাতে আমি সেই উলটাপাল্টাটি ফ্লপ করতে পারি?
JangHwan মিন

4

05 এ বি 1 ই , 21 20 19 বাইট

কোড

নতুন ক্যানভাস মোড ব্যবহার করে:

Fx<)Nè'ONÉúR3212NèΛ

05AB1E এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা:

F                      # For N in range(0, input)
 x<)                   #   Push the array [input, 2 × input - 1]
    Nè                 #   Retrieve the Nth element
      'ONÉúR           #   Push "O" if N is odd, else "O "
            3212Nè     #   Retrieve the Nth element of 3212
                  Λ    #   Write to canvas

ইনপুট 6 এর জন্য, এটি ক্যানভাসের জন্য নিম্নলিখিত যুক্তিগুলি (একই ক্রমে) দেয়:

[<num>, <fill>, <patt>]
[6,     'O',     3]
[11,    'O ',    2]
[6,     'O',     1]
[11,    'O ',    2]
[6,     'O',     3]
[11,    'O ',    2]

ক্যানভাস কী করে তা ব্যাখ্যা করতে, আমরা উপরের তালিকা থেকে প্রথম আর্গুমেন্টের সেটটি বেছে নিই।

6 নম্বর স্ট্রিংয়ের দৈর্ঘ্য নির্ধারণ করে যা ক্যানভাসে লেখা হবে। ফিলারটি ক্যানভাসে লেখার জন্য ব্যবহৃত হয়, যা এই ক্ষেত্রে O। এটি চক্রাকারে ফিলার স্ট্রিংয়ের মধ্য দিয়ে চলে। স্ট্রিংয়ের দিকটি চূড়ান্ত যুক্তি, দিক দিয়ে নির্ধারিত হয়। দিকনির্দেশগুলি হ'ল:

7  0  1
 \ | /
6- X -2
 / | \
5  4  3

এর অর্থ এই যে 3 টি দক্ষিণ-পূর্ব দিকে দিক নির্ধারণ করে যা অনলাইনেও চেষ্টা করা যেতে পারে ।


এছাড়াও নোট করুন যে ক্যানভাস মোডটি বিকাশে রয়েছে এবং খুব অস্থিতিশীল
আদনান

: O 05AB1E কাঠকয়ালে রূপান্তর করছে (এটিও চারকোল ও_কে মারছে)
ASCII- কেবল

@ এএসসিআইআই হ্যাঁ, আমি সমস্ত এএসসিআইআই ভিত্তিক ভাষার (চারকোল, এসওজিএল, ভি, ইত্যাদি) উত্থান দেখেছি এবং 05 এ বি 1 ই পটভূমিতে ডুবে দেখলাম, সুতরাং আমাকে এ সম্পর্কে কিছু করতে হয়েছিল: পি
আদনান

আপনি কাঠকয়লা কপি? : পি 05ab1e এমনকি একটি ক্যানভাস এবং দিকনির্দেশক মুদ্রণ রয়েছে (যদিও কাঠকয়লা কেবল পাইথনের মাধ্যমে দৈর্ঘ্যের সাহায্যে এই স্টাইল মুদ্রণের সমর্থন করে)
ASCII- কেবল

2

এসওজিএল ভি0.12 , 36 বাইট

╝.H∫2\?.╝}F2%?№@.┌Ο};1w⁄Hh1ž}.4%1>?№

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

প্রতিটি ধারণা ইনপুট পরিসরের জন্য মূল ধারণাটি হ'ল হয় একটি তির্যক বা অনুভূমিক বিন্দুযুক্ত অংশ যুক্ত করা, যার ক্ষেত্রে এটি সহজে যোগ করার জন্য অ্যারেটিকে ঘুরিয়ে দেবে। ব্যাখ্যা:

╝                                     get a diagonal from the bottom-left corner with the length of the input - the starting canvas
 .H∫                        }         for each number in the range [1,inp-1] do, pushing counter
    2\?  }                              if it divides by 2, then
       .╝                                 create another diagonal of the input
          F2%                           push counter % 2
             ?     }                    if that [is not 0]
              №                           reverse the current canvas upside down
               @.┌Ο                       get an alternation of spaces and dashes with the dash amount of the input length
                    ;                   get the canvas on top of the stack
                     1w⁄                get its 1st element length
                        H               decrease it
                         h              swap the bottom 2 items - the canvas is now at the bottom and the current addition ontop
                          1             push 1
                           ž            at 1-indexed coordinates [canvasWidth-1, 1] in the canvas insert the current part made by the Ifs
                             .4%1>?   if input%4 > 1
                                   №    reverse the array vertically

যদি 1 এর ইনপুটটির অনুমতি না দেওয়া হয় তবে তাও ο.∫2%?.╝}F2\?№@.┌Ο};1w⁄Hh1ž}.4%1>?№কাজ করবে। চারপাশে ভেসে আসা এলোমেলো সংখ্যাগুলিও যদি .∫2%?.╝}F2\?№@.┌Ο};1w⁄Hh1ž}.4%1>?№কাজ করার অনুমতি দেয় তবে। আমি যদি অলস না হয়ে এবং প্রয়োগ না করে , -4 বাইট দ্বারা }F2%?প্রতিস্থাপন করা যেতে পারে


2

গণিত, 106 87 বাইট

SparseArray[j=i=1;k=#-1;Array[{j+=Im@i;k∣#&&(i*=I);j,#+1}->"o"&,l=k#+1,0],{#,l}," "]&

এর একটি SparseArrayবস্তু ফেরত দেয় String। আউটপুট কল্পনা করতে, আপনি সংযোজন করতে পারেন Grid@। কেসের জন্য ত্রুটি ছুড়ে ফেলে 1তবে তা উপেক্ষা করা নিরাপদ।

ব্যাখ্যা

j=i=1

সেট করুন iএবং j1 এ।

k=#-1

kইনপুট সেট করুন - 1।

l=k#+1

সেট lকরুনk*input + 1

Array[ ..., l= ...,0]

প্রতিটি সময় দ্বারা বাড়ানো lথেকে শুরু করে 0, বার করা 1...


j+=Im@i

এর কাল্পনিক উপাদান যোগ iকরার জন্য j...

k∣#&&(i*=I)

তাহলে বর্তমান পুনরাবৃত্তির বিভাজ্য হয় k, সংখ্যাবৃদ্ধি iকাল্পনিক এককের ...

{... j,#+1}->"o"

এমন একটি Ruleবস্তু তৈরি করুন যা স্থানে অবস্থানে উপাদান পরিবর্তন {j, current iteration + 1}করে"o"


SparseArray[ ...,{#,l}," "]

ফাঁকা হিসাবে ব্যবহার করে মাত্রা সহ SparseArrayউত্পন্ন Ruleবস্তুগুলি ব্যবহার করে একটি বস্তু তৈরি করুন ।{input, l}" "

ওল্ফ্রাম স্যান্ডবক্সে এটি ব্যবহার করে দেখুন!


1
কেস n = 3
J42161217

1
n = 2, 4,5,6 এও সঠিকতার সমস্যা আছে, তবে আমি মনে করি এটি 7 বা তদূর্ধের জন্য কাজ করে। আমি কৌতূহলী: SparseArrayঅ্যারে হিসাবে গণনা করা হয় কিনা এর নজির আছে ? এটি ব্যবহার করে Gridবা ভিজ্যুয়ালাইজ করা যেতে পারে MatrixFormতবে আমি এটিকে এখানে "স্ট্রিংগুলির একটি তালিকা" হিসাবে গণ্য করব না। যদি 2D বর্ণের অ্যারেগুলি যথেষ্ট হয়, তবে এটি আমার সমাধান থেকে 8 বাইট কেটে দেয় (উদাহরণস্বরূপ জেনি_ম্যাথির সাহায্যের আগে 12)।
মার্ক এস।

1
@চিহ্ন. এছাড়াও, মেটা সম্মতিতে স্ট্রিংয়ের একটি অ্যারে ঠিক আছে । যদি কিছু অস্পষ্ট থাকে তবে দয়া করে ওপিকে জিজ্ঞাসা করুন (যেহেতু তিনি নিয়ম তৈরি করেন, আমাদের নয়)। এই সাইটে "স্পার্সআরে" এর একটি সহজ অনুসন্ধানটি প্রচুর SparseArrayপ্রতিক্রিয়া দেয় , তাই আমি অনুমান করি এটি ঠিক আছে।
JangHwan মিন

1
@চিহ্ন. এছাড়াও, এই পৃষ্ঠায় গল্ফিং ম্যাথমেটিকায় অনেক কৌশল রয়েছে ricks
JangHwan মিন

1
@ জাংহওয়ানমিন আপনার উত্তর হিসাবে আমি আমার উত্তর সম্পাদনা করেছি
J42161217

2

পাইথন 3 , 228 226 224 215 197 195 বাইট

-11 বাইটস @ মিঃ কে ধন্যবাদ Xcoder

-২ বাইটস @ মিঃকে ধন্যবাদ Xcoder

def f(n,s=range):
 x=y=t=c=0;z=[]
 for i in s(n*n-n+2):c+=i%(n-(2<=n))<1;z+=[[x,y]];t=max(t,x);x+=2-c%2;y+=[-1,1][c%4<3]*(c%2)
 return'\n'.join(''.join(' O'[[k,j]in z]for k in s(t))for j in s(n))

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

ব্যাখ্যা এবং কম-গল্ফ কোড:

def f(n):
 x=y=t=c=0;z=[]                       #initialize everything
 for i in range(n*n-n+2):             #loop n*n-n+2 times which is the numberr of 'o's expected
    c+=i%[~-n,n]<n-1                  #if one cycle has been completed, increase c by 1, if n>1.                                            
    z+=[[x,y]]                        #add [x,y] to z(record the positions of 'o')
    t=max(t,x)                        #trap maximum value of x-coordinate(to be used later while calculatng whole string)
    r=[[2,0],[1,1],[2,0],[1,-1]][c%4] #r gives direction for x and y to move, adjust it as per c i.e. cycles
    x+=r[0];y+=r[1]                   #yield newer values of x and y 
 return '\n'.join(''.join(' o'[[k,j]in z]for k in range(t))for j in range(n)) #place space or 'o' accordingly as per the recorded posititons in z

1
খুব সুন্দর কাজ। অভিনন্দন!
মিঃ এক্সকডার

@ মিঃ এক্সকোডার আপনাকে ধন্যবাদ। আমার অবশ্যই বলতে হবে এটি একটি কঠিন ছিল, বিশেষত সঠিক ব্যাপ্তি সনাক্ত করতে সমস্যা হয়েছিল।
অফিসিয়ালাইম


1
215 বাইট , if 2>n:return'o'বেশ অনর্থক। আমি c+=i%[~-n,n][2>n]<1পরিবর্তে একটি কাজ প্রায় তৈরি c+=i%~-n<1
মিঃ এক্সকোডার

1
খুব দেরীতে উন্নতির জন্য দুঃখিত, 195 বাইটস
মিঃ এক্সকডার

1

হাস্কেল , 197 বাইট

a n c=take(2*n)$cycle$c:" "
r i n x y=take(div(3*n)2*(n-1)+1)$(' '<$[1..i])++(cycle$"O "++(a(2*n-i-3)y)++"O "++(a(n+i-2)x))
z n=take n$(r 0 n 'O' ' '):[r i n ' ' ' '|i<-[1..n-2]]++[r(n-1)n ' ' 'O']

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

@ লিনকে ধন্যবাদ: জিগজ্যাগের Oঅনুভূমিক অংশগুলিতে s এর মধ্যে ফাঁকা স্থান স্থির করে , তবে এটি প্রচুর বাইট অর্জন করেছিল!

কিছু ব্যাখ্যা:

  • rআউটপুট একটি সারিতে: এটি হয়েছে 0 y y y y y 0 x x x 0 y ...ফরম্যাট, সংখ্যা xএবং yসারি এবং প্রারম্ভিক উপর নির্ভর করেn
  • উপরের সারির জন্য, x='0'এবংy=' '
  • মাঝারি সারিগুলির জন্য, x=' 'এবংy=' '
  • নীচের সারি জন্য, x=' 'এবংy='0'
  • take(div(3*n)2*(n-1)+1) সঠিক জায়গায় অসীম সারি কেটে দেয়
  • প্রতিটি আউটপুটে একটি শীর্ষ সারি এবং একটি নীচের সারি থাকে যখন ব্যতীত n=1: take nএই কেসটি পরিচালনা করে।

দারুণভাবে গল্ফ! আমার মনে হয় আপনি কয়েকটি জায়গা ছেড়ে দিতে পারেন। এবং replicate n xপ্রতিস্থাপন করা যেতে পারে x<$[1..n]। এছাড়াও, আপনার উত্তরটি Oজিগজ্যাগের অনুভূমিক অংশে এর মধ্যে ফাঁকা স্থানের অভাব রয়েছে ।
লিন

@ লিন ধন্যবাদ! অনুভূমিক বিভাগগুলিতে ফাঁকা স্থানের সাথে, আমার পদ্ধতিটি জটিল হয়ে ওঠে, তবে আমি যাইহোক কোডটি ঠিক করতে চেয়েছিলাম ...
jferard

অপারেটরগুলি ব্যবহার করে এবং অপ্রয়োজনীয় স্থানগুলি সরিয়ে আপনি কিছুটা সাশ্রয় করতে পারেন, এখানে দেখুন
ბიმო

1

পাইথন 2 , 155 151 146 137 বাইট

m=input()
n=m-1
r=range(n+2)
for L in zip(*[' '*i+'O'+n*' 'for i in(r+[n,m]*~-n+r[-2::-1]+([m,0]*n)[:-1])*m][:1+3*m/2*n]):print''.join(L)

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


@ মিঃ এক্সকোডার আঃ আমি এখন দেখি.
টিফিল্ড

@ মিঃ এক্সকোডার এখনই স্থির।
টিফিল্ড

গল্ফিং পার্টিতে আমি এক বছর দেরিতে আছি, তবে `L`[2::5]একটি বাইট ওভার সাশ্রয় করেছি''.join(L)
মিঃ এক্সকডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.