একটি এএসসিআইআই চেকবোর্ড আঁকুন


25

সারাংশ

এএসসিআইআই শিল্প চ্যালেঞ্জগুলির সাম্প্রতিক জনপ্রিয়তা দ্বারা অনুপ্রাণিত, এই চ্যালেঞ্জটির উদ্দেশ্য একটি ASCII চেকবোর্ড আঁকাই, যার মতো দাবা খেলতে পারে।

একটি প্রোগ্রাম লিখুন যা nআর্গুমেন্ট হিসাবে stdin, হিসাবে বা ব্যবহারকারী ইনপুট হিসাবে ইতিবাচক পূর্ণসংখ্যার গ্রহণ করে এবং 1 টি বর্ণের পুরু দৈর্ঘ্যের বর্ডার সহ nx nবর্গক্ষেত্রের সাথে একটি চেকবোর্ড আউটপুট দেয় ।

প্রতিটি বর্গক্ষেত্র 2x2 অক্ষর হতে হবে। স্কোয়ারগুলিতে একটি চেকবোর্ডের সাধারণ পর্যায়ক্রমে সাদা-কালো (শীর্ষে বাম কোণে সাদা আগে) প্যাটার্নটি অনুসরণ করা উচিত। সাদা স্কোয়ারগুলি স্থান ( ) অক্ষরের বাইরে এবং কালো স্কোয়ারগুলি পাউন্ড ( #) অক্ষরের বাইরে তৈরি করা উচিত of

সীমানাটি একটি বর্গক্ষেত্রের লম্ব বা লম্ব বিন্দুতে -প্লাস ( +) দিয়ে ড্যাশগুলি ( ) দিয়ে তৈরি করা উচিত ।

ইনপুট

চেকবোর্ডে আঁকতে স্কোয়ারের সংখ্যা (স্কোয়ারের মাত্রা) উপস্থাপনে ধনাত্মক পূর্ণসংখ্যা, প্রতিটি বর্গক্ষেত্র 2x2 অক্ষর সহ।

উদাহরণ ফলাফল

n=2

+--+--+
|  |##|
|  |##|
+--+--+
|##|  |
|##|  |
+--+--+

n=3

+--+--+--+
|  |##|  |
|  |##|  |
+--+--+--+
|##|  |##|
|##|  |##|
+--+--+--+
|  |##|  |
|  |##|  |
+--+--+--+

n=4

+--+--+--+--+
|  |##|  |##|
|  |##|  |##|
+--+--+--+--+
|##|  |##|  |
|##|  |##|  |
+--+--+--+--+
|  |##|  |##|
|  |##|  |##|
+--+--+--+--+
|##|  |##|  |
|##|  |##|  |
+--+--+--+--+

... ইত্যাদি।


নোট

  • ট্রেলিং স্পেস এবং নতুন লাইন গ্রহণযোগ্য।
  • আপনি একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন লিখতে পারেন।
  • কোনও শীর্ষস্থানীয় স্থান নেই।
  • আপনার প্রোগ্রাম n = 15 এর জন্য সঠিক ফলাফল প্রদর্শন করা উচিত।
  • স্বীকৃত অজানা ভাষাগুলি এবং অনুরূপ ভাষার জন্য, ভাষার একটি লিঙ্ক সরবরাহ করুন।
  • n=0উত্পাদন করা উচিত +। (alচ্ছিক, তবে অত্যন্ত প্রস্তাবিত এবং উত্সাহিত))
  • বাইটের মধ্যে সংক্ষিপ্ততম কোড জিতবে, কারণ এটি কোড গল্ফ।

2
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম! বিশেষ করে আপনার প্রথম চ্যালেঞ্জের জন্য এখানে দুর্দান্ত কাজ। আমি আপনার আরও জিনিস দেখার প্রত্যাশায়
অ্যালেক্স এ।

আমার অনুমান "আপনার প্রোগ্রামের n = 15 এর জন্য সঠিক ফলাফল প্রদর্শন করা উচিত" " মানে "আপ পর্যন্ত এন = 15"?
জন ডিভোরাক

"আপনার প্রোগ্রামে এন = 10 এর জন্য সঠিক ফলাফল প্রদর্শন করা উচিত" " মানে যদি আপনার প্রোগ্রামটি সঠিকভাবে এন = 15 পর্যন্ত রেন্ডার করতে না পারে তবে এটি পোস্ট করা উচিত নয়। তবে এর অর্থ এই নয় যে আপনার শোষণ / অপব্যবহার করা উচিত এবং এমন একটি প্রোগ্রাম লিখুন যা কেবলমাত্র এন = 15 পর্যন্ত যেতে পারে।
ক্রেডাগন

আমি পরীক্ষিত কাজ উত্তর ভোট দিন, এমনকি যদি তারা যা উৎপাদন না +জন্য n=0
কেড্রাগন

দুঃখিত আমি কখনই বিজয়ীকে গ্রহণ করি নি। এখনই গ্রহণ করছে।
kdragon

উত্তর:


16

জে, 24 বাইট

একটি বেনামী ফাংশন:

2 2&$&.>@(' #'{~2|+/~@i.)

ব্যবহার:

   f =: 2 2&$&.>@(' #'{~2|+/~@i.)
   f 4
+--+--+--+--+
|  |##|  |##|
|  |##|  |##|
+--+--+--+--+
|##|  |##|  |
|##|  |##|  |
+--+--+--+--+
|  |##|  |##|
|  |##|  |##|
+--+--+--+--+
|##|  |##|  |
|##|  |##|  |
+--+--+--+--+

1
&.>একাধিক খাটো each। লক্ষ করা যায় না যে এটি BoxFormসেট করা থাকলেই এটি কাজ করে ASCII
এলোমেলো

10

পাইথন 2, 79

N=3*input()+1
for i in range(N):print('+||- #- #+||-# -# '*N)[3**i%7/2%3:3*N:3]

প্রতিটি সারির জন্য, নিদর্শনগুলির মধ্যে একটি নির্বাচন করে

+--+--+--+--+--+
|  |##|  |##|  |
|##|  |##|  |##|

এবং 3*n+1এটি থেকে অক্ষর মুদ্রণ । প্যাটার্নটি তার প্রথম 6 টি অক্ষর পুনরাবৃত্তি করে নির্বাচিত হয়, স্ট্রিং ইন্টারলিভিং ট্রিকের সাহায্যে নির্বাচিত, যা সঠিক দৈর্ঘ্যের স্নিপেট বের করতেও কাজ করে।

iগাণিতিক এক্সপ্রেশন দ্বারা সারি সূচক মডুলোর 6 এর মান ভিত্তিতে সঠিক প্যাটার্নটি নির্বাচিত হয়েছে যা 3**i%7/2%3পুনরাবৃত্তি প্যাটার্ন [0,1,1,0,2,2] দেয়। আমি এটিকে x**i%7সময়কালের সত্যটি ব্যবহার করে খুঁজে পেয়েছি 6, তারপরে xসঠিক প্যাটার্নটি পেতে বিভিন্ন মান এবং বিভিন্ন পোস্টপ্রসেসিংয়ের চেষ্টা করছি।



9

সিজেম, 43 42 বাইট

ri3*)_2m*{_3f%:!2b\3f/:+2%(e|"#|-+ "=}%/N*

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

প্রতিটি সমন্বয়কে একটি চরে ম্যাপ করা হয়, যেমন উপরের বাম কোণে (0, 0) -> "+"। বিশেষত, আমরা গণনা করি

[(y%3 == 0)*2 + (x%3 == 0)] or [(x//3 + y//3) % 2 - 1]

এবং "#|-+ "সেই অনুযায়ী স্ট্রিংয়ের মধ্যে সূচক ।


6

রেটিনা , 106 বাইট

1
$_0$_x
1(?=1*0)
+--
1(?=1*x)
s
(0s.*?0)s
$1o
(s\D*?)s
$1o
s
|  
o
|##
\D*?x
$0$0
0
+n
x
|n
(.*?n).*
$0$1

আনারি হিসাবে ইনপুট নেয় ( এই মেটা আলোচনার ভিত্তিতে )।

প্রতিটি লাইন তার নিজস্ব ফাইলে যেতে হবে এবং nফাইলগুলিতে নতুন লাইনে পরিবর্তন করা উচিত। এটি অযৌক্তিক তবে আপনি চিহ্নগুলি -sরেখে পতাকা হিসাবে একটি ফাইল হিসাবে কোড চালাতে পারবেন n। আপনি nযদি ইচ্ছা করেন তবে আপনি পঠনযোগ্যতার জন্য আউটপুটে নতুন লাইনে পরিবর্তন করতে পারেন। উদাহরণ:

> echo -n 111|retina -s checkerboard|tr n '\n'
+--+--+--+
|  |##|  |
|  |##|  |
+--+--+--+
|##|  |##|
|##|  |##|
+--+--+--+
|  |##|  |
|  |##|  |
+--+--+--+

আরও গল্ফিং এবং কিছু ব্যাখ্যা পরে আসে।


4

জাভাস্ক্রিপ্ট (ES6), 117

n=>Array(n*3+1).fill("+--".repeat(n)+"+").map((v,i)=>v.replace(/./g,(k,x)=>i%3?"|  |##|  "[x%6+(i%6>2)*3]:k)).join`
`

স্নিপেট:

<input type="range" min=2 max=15 step=1 value=1 id="i" oninput="o.textContent=f(this.value)"><pre id="o"></pre><script>function f(n){ return Array.apply(0,Array(n*3+1)).map(function(){return "+--".repeat(n)+"+"}).map(function(v,i){ return v.replace(/./g,function(k,x) { return i%3?"|  |##|  "[x%6+(i%6>2)*3]:k}) }).join("\n") };o.textContent=f(2)</script>

বেনামে ফাংশন। একটি পূর্ণ অ্যারের সঙ্গে শুরু হয় +--+--+--...লাইন, এবং উপযুক্ত লাইন, প্রতিস্থাপন +জন্য |এবং -জন্য বা# যথাযথ হিসাবে।

প্রতিস্থাপনের অক্ষরটি নির্ধারণ করে এমন এক্সপ্রেশনটি "| |##| "[x%6+(i%6>2)*3]সম্ভবত আরও গল্ফ করা যেতে পারে তবে আমি খুঁজে পেয়েছি যে দীর্ঘতর, অপ্রয়োজনীয় স্ট্রিং ব্যবহার করা জটিল গণনার চেয়ে বেশি অক্ষর সংরক্ষণ করে।


ভাল ES6 ব্যবহার! স্নিপেটে স্লাইডার থেকে প্রভাব একটি দুর্দান্ত সংযোজন। আপনি একটি ব্যাখ্যা এবং ungolfed সংস্করণ প্রদান করতে পারেন?
ক্রেডাগন


3

ES6, 106 বাইট সহ কফিস্ক্রিপ্ট

f=(n,y=z='+--'[r='repeat'](n)+'+\n')->y+=('|##|  '[r](n).substr(i%2*3,n*3)+'|\n')[r](2)+z for i in[1..n];y

জাভাস্ক্রিপ্ট (ES6), 111 বাইট

নিউলাইনগুলি উল্লেখযোগ্য এবং প্রতি 1 টি বাইট হিসাবে গণনা করা হয়।

সুস্পষ্ট রিটার্ন এটিকে কিছুটা দীর্ঘ করেছে:

f=n=>{for(i=0,y=z='+--'[r='repeat'](n)+`+
`;i<n;)y+=('|##|  '[r](n).substr(++i%2*3,n*3)+`|
`)[r](2)+z;return y}

ডেমো

লেখার সময় ফায়ারফক্স হ'ল ইএস 6 এর সাথে সামঞ্জস্যপূর্ণ একমাত্র প্রধান ব্রাউজার।

f=n=>{for(i=0,y=z='+--'[r='repeat'](n)+`+
`;i<n;)y+=('|##|  '[r](n).substr(++i%2*3,n*3)+`|
`)[r](2)+z;return y}

// Demonstration related things
document.getElementById('O').innerHTML = f(document.getElementById('n').value);

document.getElementById('n').addEventListener('change', function () {
  document.getElementById('O').innerHTML = f(this.value);
});
<p><input id=n type=number min=0 step=1 value=6></p>
<pre><output id=O></output></pre>


3

পাইথন 3, 114 108 100

def f(n):
 for i in range(3*n+1):print(("|##|  "*n+"|")[::i//3%2*2-1][:3*n+1]if i%3 else"+--"*n+"+")


পূর্ববর্তী সমাধান

108

def f(n):
 for i in range(3*n+1):
  a=("|##|  "*n+"|")[::i//3%2*2-1][:3*n+1];print(a if i%3 else"+--"*n+"+")

114

def f(n):a="+--"*n+"+\n";b="|  |##"*n+"|";print(a+a.join(([(b[:3*n+1]+"\n")*2,(b[::-1][:3*n+1]+"\n")*2]*n)[:n])+a)

১১৮ (জমা দেওয়া হয়নি)

def f(n):
 for i in range(3*n+1):print((("|##|  "*n)[:3*n+1]if i//3%2 else("|  |##"*n)[:3*n+1])if i%3 else"+--"*n+"+")

3

সিজেম, 46 বাইট

li3*)_2m*[{_3f/2f%:=\3f%:g+2b"+-|#+-| "=}/]/N*

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

ঠিক আছে, আমি আশা করছিলাম যে আমার কমপক্ষে একটি মূল সমাধান হবে (আমি সাধারণত নিজের নিজের উপর কাজ করার আগে অন্যান্য উত্তরগুলির দিকে তাকাই না)। দেখা যাচ্ছে যে @ Sp3000 ইতিমধ্যে খুব অনুরূপ কিছু করেছে, কেবল আরও ভাল। তবে যেহেতু আমি ইতিমধ্যে কাজটি করেছি, আমি ভেবেছিলাম এটি যেভাবেই পোস্ট করব।

ব্যাখ্যা:

li    Get input n.
3*)   Calculate 3*n+1, which is the total width/height.
_     Copy size. We'll need it at the end to insert the newlines.
2m*   Calculate cartesian power with 2. This enumerates all coordinate pairs.
[     Wrap characters in array for split operation at the end.
  {     Loop over all coordinate pairs.
    _     Copy coordinate pair.
    3f/   Divide coordinates by 3.
    2f%   Modulo 2. This characterizes even/odd squares.
    :=    Compare the two coordinates. This gives 0/1 for white/black squares.
    \3f%  Grab second copy of coordinates, and calculate modulo 3.
    :g    Sign. This gives 0 for grid lines, 1 for interior of squares.
    +     Concatenate the two results. We now have a 3 bit code.
    2b    Convert the 3 bits to a number in range 0..7.
    "+-|#+-| "
          Lookup table to convert 0..7 number to character.
    =     Lookup character.
  }/    End loop over coordinate pairs.
]     End wrapping characters.
/     Split character array into lines.
N*    And join them with newlines.

2

হ্যাকভিএম , 158 বাইট

অবশ্যই বিজয়ী নয়, তবে এইচভিএম-এ এটি করা একটি দুর্দান্ত চ্যালেঞ্জের মতো দেখাচ্ছে।

আকারটি প্রথম মেমরি কক্ষে রাখুন এবং নিম্নলিখিত কোডটি ব্যবহার করুন:

77*1+c0<0^84*1+?1-11<-1>99*85++0^cc77*1+c066*5+-g!0<0^45*2+?1-95*0^0^2-PPP064*-6-gd95*2-P25*P$1<2>555**1-P0<0^76*6-?1-12<-2>2<3*48*+0^PP555**1-P076*2+-gd25*P$

দ্রষ্টব্য: কাজ করার জন্য কোডটি এক লাইনে থাকা দরকার।

ব্যাখ্যা:

Call PLUSHDASHLINE
77*2+c

Read the cell and skip if done
0<0^84*1+?1-

  Flip row parity
  11<-1>

  Call NORMALLINE twice
  99*85++0^cc

  Call PLUSHDASHLINE
  77*1+c

Jump back to start of loop
066*5+-g!


DEFINE_PLUSDASHLINE
0<0^45*2+?1-95*0^0^2-PPP064*-6-gd95*2-P25*P$

DEFINE_NORMALLINE
1<2>555**1-P0<0^76*6-?1-12<-2>2<3*48*+0^PP555**1-P076*2+-gd25*P$

কোডটি 2 টি ক্রিয়াকলাপকে কল করে PLUSHDASHLINEএবং এটি NORMALLINEপ্যারিটির জন্য বিশ্বব্যাপী রাষ্ট্র বজায় রাখে (অর্থাত কোনও ঘরে কোনও ' 'বা একটি রাখবে কিনা '#')।

এর জন্য ব্যাখ্যা PLUSDASHLINE:

Repeat N times
0<0^45*2+?1-

  Print "+--"
  95*0^0^2-PPP

End Repeat
064*-6-g

Print "+"
d95*2-P

Print "\n"
25*P

Return
$

এর জন্য ব্যাখ্যা NORMALLINE:

Copy Parity into Cell 2
1<2>

Print '|'
555**1-P

Repeat N times
0<0^76*6-?1-

  Flip Cell 2 (i.e. Flip Column Parity)
  12<-2>

  Calculate ' ' or '#' based upon parity
  2<3*48*+0^

  Print it twice
  PP

  Print '|'
  555**1-P

End Repeat
076*2+-g

Print "\n"
d25*P

Return
$

কেউ আরও উন্নতি করার জন্য টিপস দিলে এটির প্রশংসা করবে :)


2

পাইথন 2, 98

n=input()
f=lambda a,b,s:s+s.join(([a*2,b*2]*n)[:n])+s+'\n'
print f(f(*' #|'),f(*'# |'),f(*'--+'))

সংক্ষিপ্ততম উপায় নয়, তবে একটি মজাদার পদ্ধতি। ফাংশনটি fদুটি স্ট্রিং a,bএবং একটি বিভাজক গ্রহণ করে sএবং এর মত যুক্তিগুলি ইন্টারলাইভ করে saasbbsaasbbsaas। বোর্ডের সারিগুলি এই স্বরূপে তাদের স্ব স্ব চরিত্রগুলি দিয়ে তৈরি করা হয়, তারপরে ফলাফলটি তৈরি করার জন্য তারা নিজেই এইভাবে আন্তঃবিস্তৃত হয়।


এটি এর জন্য অবৈধ আউটপুট উত্পাদন করে n=0। বেশিরভাগ সমাধান (যা গ্রহণ করা হবে) "+" উত্পাদন করে। এই দ্রবণটি "++ (নিউলাইন) ++" উত্পাদন করে, স্বাভাবিকের পিছনে থাকা 2 টি নতুন লাইন (যা অনুমোদিত) exc
ক্রেডাগন

@ ড্রাগনগুই সমস্যাটি বলে যে ইনপুটটি ইতিবাচক পূর্ণসংখ্যা।
xnor

তবে কমপক্ষে 0 এর জন্য একটি ফ্যালব্যাক হওয়া উচিত Neণাত্মক ফলব্যাকগুলি প্রয়োজন হয় না। ০ এর চেয়ে কম সংখ্যার জন্য কোনও নিয়ম থাকবে না। এই সমাধানটি ১ এর চেয়ে কম যে কোনও কিছুর জন্য "++ (নিউলাইন) ++" দিন বলে মনে হয়
কেড্রাগন

@ ড্রাগনগুই যখন আপনি ইনপুট প্রয়োজনীয়তা নির্দিষ্ট করেন, তার অর্থ ইনপুটটি সেই প্রয়োজনীয়তাগুলি পূরণ করার গ্যারান্টিযুক্ত হয় এবং যখন এগুলি হয় না তখন নির্বিচারে কাজ করতে পারে। আমি লক্ষ্য করেছি যে আপনি পোস্ট করার পরে "n = 0 টি উত্পন্ন করা উচিত" যোগ করার জন্য প্রশ্নটি সম্পাদনা করেছেন তবে উত্তরগুলি ইতিমধ্যে প্রবেশের পরে নিয়মগুলি পরিবর্তন করা দৃ strongly়ভাবে নিরুৎসাহিত
xnor

প্রশ্নটি সম্পাদনার আগে আমি সেই নিয়মটি সম্পর্কে (আগে অনেকগুলি প্রশ্ন পড়ুন) সম্পর্কে ভাবছিলাম, তবে যেহেতু এটি উত্তরের সর্বাধিক উত্তরকে প্রভাবিত করবে না, তাই আমি ভাবিনি যে এটি সমস্যা হবে। স্পষ্টতা প্রদান এবং এটি alচ্ছিক করার জন্য প্রশ্ন সম্পাদিত।
কেড্রাগন

2

রুবি: 83 টি অক্ষর

f=->n{puts d=?++'--+'*n,(0...n).map{|i|[?|+'%2s|'*n%(['','##',''][i%2,2]*n)]*2<<d}}

নমুনা রান:

irb(main):001:0> f=->n{puts d=?++'--+'*n,(0...n).map{|i|[?|+'%2s|'*n%(['','##',''][i%2,2]*n)]*2<<d}}
=> #<Proc:0x000000007c51a0@(irb):1 (lambda)>

irb(main):002:0> f[0]
+
=> nil

irb(main):003:0> f[1]
+--+
|  |
|  |
+--+
=> nil

irb(main):004:0> f[2]
+--+--+
|  |##|
|  |##|
+--+--+
|##|  |
|##|  |
+--+--+
=> nil

irb(main):005:0> f[3]
+--+--+--+
|  |##|  |
|  |##|  |
+--+--+--+
|##|  |##|
|##|  |##|
+--+--+--+
|  |##|  |
|  |##|  |
+--+--+--+
=> nil

2

রুবি, 87

->n{a=[b="+--",c="|  |##",c,b,d="|##|  ",d]
0.upto(n*3){|i|puts"".ljust(n*3+1,a[i%6])}}

এটি একটি বেনামে ফাংশন। এটিকে কল করুন (0 থেকে 5 পর্যন্ত সমস্ত সম্ভাবনা)

f=->n{a=[b="+--",c="|  |##",c,b,d="|##|  ",d]
0.upto(n*3){|i|puts"".ljust(n*3+1,a[i%6])}}

6.times{|j|f.call(j)}

এটি ljustখালি স্ট্রিংয়ে পদ্ধতিটি ব্যবহার করে । রুবি একটি প্যাডিং স্ট্রিং আত্মপক্ষ সমর্থন জন্য চিহ্নিত করা যাবে, তাই আমরা ব্যবহার ljustতিন সম্ভব প্যাডিং স্ট্রিং এক সঙ্গে b,c,dঅ্যারে প্রতি a, যেমন আদেশ bccbdd


1

জুলিয়া, 124 বাইট

n->(t="+--"^n*"+";a="|  ";b="|##";m=n÷2;c=n%2>0;p=println;p(t);for i=1:n p(((i%2<1?(b*a)^m*b^c:(a*b)^m*a^c)*"|\n")^2*t)end)

এটি একটি নামবিহীন ফাংশন তৈরি করে যা একটি পূর্ণসংখ্যা গ্রহণ করে এবং স্টাডআউটে প্রিন্ট করে।

অবহেলিত + ব্যাখ্যা:

function f(n)
    # Define the portions of the board
    t = "+--"^n * "+"
    a = "|  "
    b = "|##"

    # There will be n÷2 repeated a*b or b*a per line
    m = n ÷ 2

    # If n is odd, there will be an extra a or b
    c = n % 2 != 0

    # Print the top
    println(t)

    # Print each horizontal section of the board
    for i = 1:n
        # In even numbered sections, b precedes a
        j = (i % 2 == 0 ? (b*a)^m * b^c : (a*b)^m * a^c) * "|\n"
        println(j^2 * t)
    end
end

1

জাভাস্ক্রিপ্ট, ES6 149

n=>(r="+--".repeat(n)+"+",[...r].map((_,i)=>i%3?(x=i%6&&i%6<3?" ":"#",[...r].map((_,e)=>e%3?e%6&&e%6<3?x:"#"==x?" ":"#":"|").join('')):r).join('\n'))

কিছুটা দীর্ঘ হলেও লিখতে বেশ মজা

ফায়ার ফক্সে কাজ করে

1 - ওপেন কনসোল

2 - নিম্নলিখিত টাইপ করুন

console.log((n=>(r="+--".repeat(n)+"+",[...r].map((_,i)=>i%3?(x=i%6&&i%6<3?" ":"#",[...r].map((_,e)=>e%3?e%6&&e%6<3?x:"#"==x?" ":"#":"|").join('')):r).join('\n')))(15));

আউটপুট (n = 15):

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

আপনি কি অন্যান্য ES6 সমাধানের মতো স্নিপেট যুক্ত করতে পারবেন? এটি পরীক্ষা সহজতর করে তুলবে।
kdragon

আমি 5 মিনিটের পরিসরে আমার মন্তব্য সম্পাদনা করতে যাচ্ছিলাম, তবে আমার সংযোগটি ত্রুটিযুক্ত ছিল। আপনি কি অন্যান্য ES6 সমাধানের মতো স্নিপেট যুক্ত করতে পারবেন? এটি পরীক্ষা সহজতর করে তুলবে। একটি জাভাস্ক্রিপ্ট প্রো এবং ES6 নুব, এটি ফায়ারফক্স স্ক্র্যাচপ্যাডে কাজ করে না।
কেড্রাগন

@ ড্রাগনগুই সম্পন্ন, দেখুন এটি আপনার পক্ষে কাজ করে কিনা।
আফনসো ম্যাটোস

1
শেষে রাইট, আপনি কি এখনও তিন বাইট সংরক্ষণ দ্বারা বদলে পারেন join('\n')সঙ্গে join` `, যেখানে স্থান i -এর মানে হল লিখেছিলেন প্রকৃত নতুন লাইন অক্ষর।
চিরু

1

হাস্কেল, 99

এটি আংশিকভাবে Catgocat দ্বারা পূর্বের হাস্কেল উত্তর দ্বারা অনুপ্রাণিত ; আমি আমার নিজস্ব সংস্করণ লিখেছিলাম, তারপরে তাকিয়েছি, তারপরে অন্যটি লিখেছি। আমি একই বিধি দ্বারা খেলছি - ইনপুটটি একটি যুক্তি, তবে আউটপুটটি স্টাডআউট। (এটি যদি খাঁটি ফাংশন হতে পারে তবে characters টি অক্ষর বিয়োগ করুনputStr$ ))

f n=putStr$unlines$t$map t$y[a,b,b,a,c,c]where t=take(n*3+1)
a=y"+--"
b=y"|  |##"
c=drop 3b
y=cycle

আমরা ব্যবহার tকরে নির্মিত অসীম চেকবোর্ড থেকে 3 এন + 1 টি অক্ষরের অঞ্চল নিতে ব্যবহার করি cycleএবং এটিই। আমি অন্যান্য উত্তর থেকে প্রাথমিক ধারণাটি নিয়েছি তা হ'ল সীমান্ত এবং চেকার উভয় কোষের নিদর্শন স্থাপন করা একসঙ্গে স্ট্রিং হবে।

আমার প্রথম সংস্করণ (140 টি অক্ষর) প্রতিটি বিন্দুতে অক্ষর গণনা করার কৌশল ব্যবহার করে, যা এটির চেয়ে জটিল জটিল সমস্যার জন্য আরও ভাল হতে পারে।

f n=putStr$unlines$map(\y->map(g y)r)r where r=[0..n*3]
g y x=s(s '+'y '|')x$s '-'y$cycle" #"!!(x`div`3+y`div`3)
s c i d|i`mod`3==0=c|True=d

আপনার অনুপ্রেরণা এমন স্মার্ট জবাব নিয়েছে বলে আমি আনন্দিত :)
আফনসো ম্যাটোস

এটি দিয়ে ফাইলের সাথে লিখতে cat <<EOF > sol1.hsএবং গণনা করার সময় আমি 84 বাইট পাই du -b sol1.hs
কেড্রাগন

@ ড্রাগনগুই আমি ঠিক একই কাজটি করেছি এবং এখনও 99 পেয়েছি ag সম্মতি জানায় wc, এবং আমি অ-ছাপানো অক্ষরগুলি পরীক্ষা করেছি। এই 84-বাইট সংস্করণটি কি চালিত হয় ? যদি তা হয় তবে আমি এটি গ্রহণ করব :)
কেভিন রেড

1

হাস্কেল, 118

এটি আমার প্রথম হাস্কেল কোড গল্ফ উত্তর এবং এটি এখানে:

f n=mapM_(putStrLn.s)[0..3*n]where;d x=(++)$take(3*n)$cycle x;s x|x`mod`3<1=d"+--""+"|x`mod`6<3=d"|  |##""|"|1<2=d"|##|  ""|"

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

func num = do
    let -- Range
        rag = 3 * num
        -- `+--+`
        a = d "+--" "+"
        -- `|  |##`
        b = d "|  |##" "|"
        -- `|##|  `
        c = d "|##|  " "|"
        -- generate line
        d x y = take rag (cycle x) ++ y
        -- step
        step x
            | x `mod` 6 `elem` [1, 2] = b
            | x `mod` 3 == 0          = a
            | otherwise               = c

    mapM_ (putStrLn . step) [0..rag]

আউটপুট

*Main> :load test
[1 of 1] Compiling Main             ( test.hs, interpreted )
Ok, modules loaded: Main.
*Main> f 1
+
*Main> f 4
+--+--+--+--+
|  |##|  |##|
|  |##|  |##|
+--+--+--+--+
|##|  |##|  |
|##|  |##|  |
+--+--+--+--+
|  |##|  |##|
|  |##|  |##|
+--+--+--+--+
|##|  |##|  |
|##|  |##|  |
+--+--+--+--+
*Main> f 15
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
|##|  |##|  |##|  |##|  |##|  |##|  |##|  |##|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
|  |##|  |##|  |##|  |##|  |##|  |##|  |##|  |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

f 11 টি খালি বাক্স তৈরি করা উচিত, f 0কেবলমাত্র চিহ্ন চিহ্ন তৈরি করে।
কেড

@ ভিওজ- আমার খারাপ, তাই কোডটি আরও ছোট করে তোলে: পি
আফনসো ম্যাটোস

1

সি - 119 101

@ Sp3000 উত্তরের মতো গণনা এখন ব্যবহার করে Uses দম্পতি অপ্টিমাইজেশন।

i,j;f(n){for(i=j=0;j<=n*3;i++)putchar(i-n*3-1?" -|+#"[!(j%3)+2*!(i%3)?:(i/3+j/3)%2*4]:(j-=i=-1,10));}

আমি মনে করি ?:এটি একটি জিসিসি এক্সটেনশন ...

পুরানো উত্তর:

f(n){int i,j;char p[]=" -|+";for(i=j=0;j<=n*3;*p=" #"[(i++/3+j/3)%2])putchar(i-n*3-1?p[!(j%3)+2*!(i%3)]:(j-=i=-1,10));}

এটি 2 টি স্থানাঙ্ক বজায় রাখে এবং প্রতিটি জোড়ের জন্য কোন অক্ষরটি প্রিন্ট করতে হবে তা সততার সাথে গণনা করে। মুদ্রণের জন্য অক্ষরের তালিকা অ্যারেতে সংরক্ষণ করা হয় এবং এটি একা একটি "রঙিন" গ্রিড প্রিন্ট করে। অ্যারের প্রথম উপাদানটি কালো স্কোয়ারগুলি আঁকতে সংশোধিত হয়।

আমি এটি পরিবর্তন করতে পারি যাতে দুটি স্বতন্ত্র স্থানাঙ্কের পরিবর্তে এটির একটি মান গণনা বা (আরও ভাল) নীচে থেকে যায় তবে এখনই আমার মাথাটি জড়িয়ে রাখতে পারে না।

বোনাস - 3 টির পরিবর্তে এমন কোনও প্রোগ্রামের ফলাফলের সাথে যা বিভিন্ন কক্ষের আকারের সাথে বৈধ চেকবোর্ড আঁকে।


1

awk - 91

{
    for(k=i=3*$0+1;i--;print"")
        for(j=k;j--;)printf i%3?j%3?234~(i+j)%6?FS:"#":j%3?"-":"|":"+"
}

এটি 100 এর নিচে পাওয়ার জন্য বেশ লড়াই ছিল back


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