এএসসিআইআই সংযুক্ত হেক্সাগন


21

সংক্ষিপ্ত বিবরণ

বেশ কয়েকটি হেক্সাগন দেওয়া, এটিকে একটি 50 বাই 50 এএসসিআইআই শিল্প চিত্রের সীমার মধ্যে একটি সংযুক্ত আকারে সাজান। আপনি যে আকৃতিটি চয়ন করেন তা নির্বিচারে হতে পারে - যা আপনি গল্ফিংয়ের জন্য সর্বাধিক অনুকূল হিসাবে মনে করেন - যতক্ষণ না এটি সংযুক্ত থাকে। এটির গর্ত থাকতে পারে তবে তারা একের বেশি ষড়ভুজ হয়ে থাকে (অন্যথায় ষড়জাগুলির সংখ্যা অস্পষ্ট হবে)।


বিন্যাস

সমস্ত ষড়ভুজ অবশ্যই নিম্নলিখিত ফর্মের মধ্যে থাকতে হবে (কেবলমাত্র এই আকার এবং দিকনির্দেশ বৈধ):

 __
/  \
\__/    Note there are 2 underscores per horizontal edge.

দুটি হেক্সাগন যদি একটি প্রান্ত ভাগ করে নেয় তবে তারা সরাসরি সংযুক্ত থাকে:

 __               __
/  \__           /  \
\__/  \          \__/
   \__/    or    /  \
                 \__/

দুটি হেক্সাগন সংযুক্ত থাকে না যদি তারা কেবল একটি শীর্ষস্থান ভাগ করে থাকে:

 __  __
/  \/  \
\__/\__/

অর্ধ প্রান্ত ভাগ করে নেওয়াও সংযুক্ত হিসাবে গণ্য হয় না:

 __
/  \
\__/
 /  \
 \__/

হেক্সাগনগুলির একটি সংযোগ সংযুক্ত থাকে যদি কোনও প্রত্যক্ষ সংযুক্ত হেক্সাগন ব্যবহার করে কোনও ষড়ভুজ থেকে অন্য যে কোনও পথের উপস্থিত থাকে ।

গর্ত

ষড়্ভুজগুলির সংযুক্ত সংগ্রহে একটি ষড়্ভুজ আকারের গর্তটিকে ষড়্ভুজ হিসাবে গণনা করা হয়, যাতে ASCII শিল্পের যে কোনও প্রদত্ত অংশটি একটি দ্ব্যর্থহীন ষড়ভুজ গণনা করে।

এটি কোনও গর্ত হিসাবে গণ্য হয় না কারণ সম্ভাব্য গর্তটি একক ষড়্চাঞ্চল:

    __
 __/  \__
/  \__/  \
\__/  \__/
/  \__/  \
\__/  \__/
   \__/      7 hexagons (not 6 with a hole)

এটি একটি গর্ত হিসাবে গণনা করে যেহেতু এটি একটি একক ষড়্ভুজের সাথে মিলে না:

    __
 __/  \__
/  \__/  \__
\__/  \__/  \
/  \__   \__/
\__/  \__/  \
   \__/  \__/
      \__/      8 hexagons with a hole

ইনপুট এবং আউটপুট

ইনপুট

1 থেকে 255 এর পূর্ণসংখ্যা।

আউটপুট

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

  • সারিগুলির সংখ্যা (নিউলাইন পৃথক পৃথক সাবস্ট্রিংগুলি) সর্বাধিক 50, এবং অতিরিক্ত alচ্ছিক পেছনের নতুন লাইন।
  • সারিগুলির একই দৈর্ঘ্য হওয়া উচিত নয়, তবে প্রতিটি অবশ্যই দৈর্ঘ্যের 50 টি হতে হবে।
  • শূন্য দৈর্ঘ্যের সারিগুলি সংযুক্ত আকারের উপরে বা নীচে বিদ্যমান থাকতে পারে শর্তাবলীর মোট সংখ্যা 50-এর বেশি না হয়।
  • সংযুক্ত আকারের উপরে বা নীচে কেবলমাত্র স্থান-সারি বিদ্যমান থাকতে পারে শর্তাবলীর মোট সংখ্যা 50-এর বেশি না হয়।
  • শর্তগুলির দৈর্ঘ্য 50-এর বেশি না হয়ে শর্তগুলির বাম দিকে উপস্থিত হতে পারে (আকারটি বামদিকে প্রান্তিককরণের প্রয়োজন হবে না)।
  • শর্তগুলির দৈর্ঘ্য 50-এর বেশি না হয়ে শর্তগুলি ডানদিকে প্রদর্শিত হতে পারে।
  • সংযুক্ত আকারের অংশ না তৈরি করে এমন কোনও অক্ষর অবশ্যই ফাঁকা বা নতুনলাইন be

প্রদত্ত আউটপুট সঠিক হলে এটি এক রান থেকে পরের দিকে সামঞ্জস্য হতে হবে না।

উদাহরণ

ইনপুট: 6

বৈধ ফলাফল:

 __    __    __
/  \__/  \__/  \__
\__/  \__/  \__/  \
   \__/  \__/  \__/

 __    __
/  \__/  \
\__/  \__/
/  \__/  \
\__/  \__/
   \__/

          __
 __      /  \
/  \__   \__/
\__/  \__/  \
   \__/  \__/
      \__/
      /  \
      \__/

অবৈধ ফলাফল:

    __
 __/  \__
/  \__/  \
\__/  \__/
/  \__/  \
\__/  \__/
   \__/      Invalid for 6 as the centre hole counts as a 7th hexagon.

 __    __    __      __
/  \__/  \__/  \    /  \
\__/  \__/  \__/    \__/
   \__/  \__/                Invalid as the 6 hexagons are not connected.

 __    __    __  __
/  \__/  \__/  \/  \
\__/  \__/  \__/\__/
   \__/  \__/           Invalid as vertex touching does not count as connected.

 __    __       __
/  \__/  \     /  \
\__/  \__/     \__/
/  \__/  \
\__/  \__/
   \__/       Invalid as the 6 connected hexagons are not the only visible characters.

জয়লাভ

বাইট জেতে সংক্ষিপ্ততম বৈধ উত্তর।


লিডারবোর্ড

( মার্টিনের লিডারবোর্ড স্নিপেট ব্যবহার করে )


আমি আশঙ্কা করছি যে সবাই প্রথম উদাহরণ আউটপুট প্যাটার্নটি ব্যবহার করবে কারণ এটি সম্ভবত কার্যকর করা সবচেয়ে সহজ।
বিকশিত করুন

1
@ ফ্যাটালাইজ করুন আমার উদাহরণগুলি কেবলমাত্র একটি ইনপুট জন্য কাজ করে 6255হেক্সাগনগুলির একটি অনুভূমিক সারিটির ইনপুট দেওয়ার জন্য 50 বাই 50 এএসসিআইআই আর্টে ফিট হবে না।
ট্রাইকোপ্লাক্স

আপনি তখনও সহজেই ফিরে যেতে পারবেন এবং 50 অক্ষরের সীমাতে পৌঁছানোর সময় নীচের লাইনগুলি পূরণ করতে পারবেন
আগস্টকে

1
@ ফ্যাটালাইজ কোডটি বাইট সংখ্যা হ্রাস করা চ্যালেঞ্জ হ'ল। নিদর্শনগুলি সহজ কিনা তা আমি আপত্তি করি না, লোকেরা কী চেষ্টা করে এবং কী বিভিন্ন ভাষায় উপযুক্ত see
ট্রাইকোপলাক্স 5'15

@ ফ্যাটালাইজ: আমি জানি না এটি সংক্ষিপ্ত হবে বা না, তবে আরও একটি "আকর্ষণীয়" উত্তর হেক্সাগনগুলি কোথায় স্থাপন করতে পারে এবং এটি আরও আকর্ষণীয় আউটপুট পেতে পারে তা দেখার জন্য প্রকৃত অনুসন্ধান করতে পারে।
অ্যালেক্স ভ্যান লিউ

উত্তর:


13

সিজেম, 64 57 55 বাইট

" __
/  \
\__/"N/{_SS/\+_47>S3*f{\+}_2>\@?}q~(*]:..e>N*

এটি এখানে পরীক্ষা করুন।

এটি কলাম অনুসারে নিম্নলিখিত প্যাটার্নটি তৈরি করবে :

 __    __    __    __    __    __
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \__/  \__/
\__/  \__/  \__/  \__/  \__/  \
/  \__/  \__/  \__/  \__/  \__/
\__/  \__/  \__/  \__/  \__/  \
/  \__/  \__/  \__/  \__/  \__/
\__/  \__/  \__/  \__/  \__/  \
/  \__/  \__/  \__/  \__/  \__/
\__/  \__/  \__/  \__/  \__/

ব্যাখ্যা

এটি ডেনিসের দুর্দান্ত টিপের উপর ভিত্তি করে .e>বেশ কয়েকটি টুকরো থেকে একটি এএসসিআইআই আর্ট আউটপুট একত্রিত করে । যেমনটি তিনি বলেছেন, .e>উপাদান অনুসারে সর্বাধিক দুটি অ্যারে (বা স্ট্রিং) লাগে এবং স্পেসগুলির মধ্যে সর্বনিম্ন অক্ষর কোড থাকে তাই আমরা স্ট্রিং গ্রিডে অন্য কোনও অক্ষর চাপানোর জন্য এটি ব্যবহার করতে পারি। তদ্ব্যতীত, যদি দুটি অ্যারে একই দৈর্ঘ্য না থাকে, তবে দীর্ঘতর অ্যারের বহিরাগত উপাদানগুলি কেবল অপরিবর্তিতভাবে অনুলিপি করা হয়। এর অর্থ হ'ল বিভিন্ন ধরণগুলি এমনকি একই আকারের হওয়া দরকার না। এটি দ্বি-মাত্রিক অ্যারেগুলিতে প্রয়োগ করার জন্য (কারণ আমরা একেবারে শেষ অবধি নিউলাইনগুলি সন্নিবেশ করতে চাই না), আমরা .e>লাইনে জোড় জোড় প্রয়োগ করি যা দেয় ..e>

কোডটির মূল ধারণাটি হ'ল Nএকক ষড়্ভুজের কপিগুলি সঠিক অবস্থানে নিয়ে যাওয়া। খালি লাইনগুলি সরবরাহ করে এবং অনুভূমিকভাবে ফাঁকা স্থানগুলি সরবরাহ করে আমরা ষড়ভুজটি উল্লম্বভাবে "সরানো"। একবার শেষ হয়ে গেলে, আমরা সুন্দর ব্যবহার করে সমস্ত কপিগুলি এক সাথে ভাঁজ করি :..e>(সম্ভবত সবচেয়ে দীর্ঘতম অপারেটর আমি সিজেএম প্রোগ্রামে ব্যবহার করেছি)।

কোডটি এখানে:

" __
/  \
\__/"N/    e# Get a 2D character grid of the hexagon.
{          e# Read input N, repeat this block N-1 times.
  _        e#   Make a copy, so we leave the last hexagon on the stack.
  SS/\+    e#   Prepend two empty lines.
  _47>     e#   Make a copy and discard the first 47 lines.
  S3*f{\+} e#   Prepend 3 spaces to each line. This copy has been moved back to
           e#   the top and one column to the right.
  _2>      e#   Make a copy and discard another two lines.
  \@?      e#   If any lines were left after that, pick the copy in the next column,
           e#   otherwise, stay in the same column.
}q~(*      
]:..e>     e# Wrap all the hexagons in an array and fold them into a single grid.
N*         e# Join them with newline characters.

ম্যান, আমার এই গল্ফ করা ভাষাগুলির একটি সত্যই শেখা উচিত।
অ্যালেক্স ভ্যান লিউ

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

আমি সম্ভবত পাইথ বা উভয়ই শিখতাম; তারা উভয়ই বেশ একই জিনিস বা বাকী চেয়ে ভাল?
অ্যালেক্স ভ্যান লিউ 16

@ অ্যালেক্সভ্যানলিউউ আমি খুব বেশি পাইথ জানি না, তবে আমি জানি যে তারা একই জিনিস থেকে অনেক দূরে। সিজাম স্ট্যাক-ভিত্তিক ভাষা, যখন পাইথের উৎপত্তি পাইথনের শর্টহ্যান্ড হিসাবে (তবে বর্তমানে এটির নিজস্ব বিল্ট-ইনগুলির সেট রয়েছে)। গল্ফিংয়ের ক্ষেত্রে পাইথের কিছুটা উপরে থাকতে পারে , তবে আমি ব্যক্তিগতভাবে সত্যিই অন্য একটি দৃষ্টান্তে প্রোগ্রামিং উপভোগ করি, তাই আমি সিজেমের সাথে লেগে থাকব।
মার্টিন ইন্ডার

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

7

পাইথন 2, 219 207 অক্ষর

b=bytearray(' ');h=['__ ','/  \\','\\__/'];k=range;x=input();g=[b*50for _ in k(50)]
for i in k(x):
 c=i*3%48+1;r=(i*3+1)/48*2+i%2
 for m in k(i>15,3):n=m==0;g[r+m][c+n:c+4-n]=h[m]
print"\n".join(map(str,g))

স্টিডিনে ইনপুট নেয়।

বেশ কিছু মাত্র 50x50 গ্রিডের স্পেস তৈরি করে এবং যেখানে উপযুক্ত সেখানে হেক্সাগনগুলিকে প্লপ করে। ষোড়শ ষড়্ভুজের পরে, আমার প্রথম সারিটির h(2 ডি অ্যারে হিসাবে ষড়ভুজ) প্রয়োজন নেই তাই আমি i>150 এর পরিবর্তে 1 এ ব্যাপ্তিটি ব্যবহার করতে চাই সি সিফল এবং r ow c=i*3%48+1;r=(i*3+1)/48*2+i%2গণনা করে আমার শুরু করা দরকার। এটি একটি বুলিয়ান তবে সীমানা ঠিক করতে পূর্ণসংখ্যা হিসাবে ব্যবহৃত হয় (যেহেতু ওভাররাইটিং স্টাফ এড়াতে কেবলমাত্র 3 টি অক্ষর)।nh[0]

আমি এটির সাথে খুব খুশি, আমি প্রাথমিক সংস্করণ থেকে প্রায় 50 বাইট ছাঁটাই করেছি, বিশেষত যখন a[x:y]=bসিনট্যাক্সটির কথা মনে পড়ে ।

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

  __    __    __    __    __    __    __    __
 /  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__
 \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \
 /  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/
 \__/  \__/  \__/  \__/  \__/  \__/  \__/  \
    \__/  \__/  \__/  \__/  \__/  \__/  \__/
(plus 44 lines of spaces each 50 wide)

যেহেতু সাদা স্থানের লাইনগুলি অনুসরণ করার অনুমতি দেওয়া হয়েছে আমি তার পরিবর্তে gকেবলমাত্র 50 bytearrayটি তৈরির পরিবর্তে পরিবর্তনটি পরিবর্তন করেছি 3+(x>1)+x/16*2, যা 12 বাইট বন্ধ করে শেভের প্রয়োজনীয় সংখ্যার সঠিক সংখ্যা।


6

সুইফট 2.0, 601 591 বাইট

import Cocoa
var a=Int(Process.arguments[1])!,b="/  \\__".join([String](count:9,repeatedValue:""))+"/",c="\\__/  ".join([String](count:9,repeatedValue:""))+"\\",d=c.startIndex,e=c.endIndex,j=[c.stringByReplacingOccurencesOfString("\\",withString:" ").stringByReplacingOccurencesOfString("/",withString:" ").substringToIndex(advance(d,3*a,e)),b.substringToIndex(advance(d,3*a+a%2,advance(e,-1)))]
while a>0{j+=[c.substringToIndex(advance(d,3*a+1,e)),b.substringToIndex(advance(d,3*a+(a+1)%2,e)]
a<=16 ?j+=[" "+j.removeLast().substringFromIndex(advance(d,1))]:()
a-=16}
for l in j{print(l)}

চালানোর জন্য: swift hexagons.swift 21

আউটপুট:

 __    __    __    __    __    __    __    __    
/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__
\__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \
/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/
\__/  \__/  \__/
   \__/  \__/  

সুইফট substringToIndexএবং এতগুলি stringByReplacingOccurencesOfStringচরিত্র গ্রহণ ...


আমি সুইফটকে মোটেও জানি না, তবে কম কোড সহ সেই পুনরাবৃত্ত স্ট্রিংটি তৈরি করার কোনও উপায় নেই?
রেটো কোরাডি

আমি কেবল স্ট্রিংটির পুনরাবৃত্তি জানার একমাত্র উপায়টি দিয়েছি stringByPaddingToLength, তবে এই ক্ষেত্রে এটি পুরো স্ট্রিংটি টাইপ করার চেয়ে 11 টি অক্ষর দীর্ঘ হবে।
ডেভিড স্ক্রান্ডজ

6
আমি দেখতে পাচ্ছি অ্যাপল সত্যিই মাত্রাতিরিক্ত ভার্জোজ স্ট্রিং কনটেন্টেশন পছন্দ করে। stringByAppendingStringঅবজেক্টিভ-সি এর মতো খারাপ নয় তবে এখনও ...

কোড গল্ফের বাইরে এটি সত্যিই দুর্দান্ত যদিও এটি কোনও পদ্ধতির জন্য অনুসন্ধানকে এত সহজ করে তোলে।
জাস্টসিড

4

সি, 238 বাইট

#define h(A) c[m+A/4][n+A%4]
i,m,n;
f(a)
{
    char c[50][51];
    for(i=0;i<50;i++)for(m=0;m<51;m++)c[i][m]=m-50?32:0;
    for(;a;)
        m=a/12*2,n=a%12*3,a--%2?m=a/12*2+1,n=a%12*3+3:0,
        h(1)=h(2)=h(9)=h(10)=95,h(4)=h(11)=47,h(7)=h(8)=92;
    for(;i;)puts(c-i--+50);
}

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

এটি কেবল অক্ষরের একটি ম্যাট্রিক্স তৈরি করে, এগুলি বিপরীত ক্রমে পূরণ করে এবং তারপরে পুরো জিনিসটি মুদ্রণ করে।


2

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

A=Array;f='forEach';U=x=1;y=0;a=A.from(A(51),_=>A.from(A(51),_=>' '));d=h=>(` __
/  \\
\\__/`.split`
`[f]((l,i)=>[...l][f]((c,j)=>{if('_/\\'.indexOf(a[x+i][y+j])<0)a[x+i][y+j]=c})),(x+=U*-2+1),(U=!U),(C-y<=3?((U=x+=2),y=0):y+=3),--h?d(h):a.map(d=>d.join``).join`
`)

বাম থেকে ডানে এক সারিতে টেসেললেটস হেক্সাগনকে এক সারিটির শেষ না হওয়া অবধি উপরে এবং নীচে - মধুচক্রের মতো।

বিবরণ দিয়ে অসন্তুষ্ট (ফায়ারফক্সে কাজ করে):

'use strict';
const CAP = 51;
var a = Array.from(Array(51), () => Array.from(Array(51),() => ' '))

function draw (hexagons, x, y, a, up) {
  // x, y (row, col) represents the current position of the cursor
  /*
  
    Here's a map of the first three iterations:
    
            01234567
     0        __
     1     __/  \__
     2    /  \__/  \
     3    \__/  \__/

    For the first 17 iterations, the cursor will be at:
    
      # | x | y
      ----------
      1 | 1 | 0
      2 | 0 | 3
      3 | 1 | 6
      4 | 0 | 9
      5 | 1 | 12
      6 | 0 | 15
      7 | 1 | 18
      8 | 0 | 21
      9 | 1 | 24
     10 | 0 | 27
     11 | 1 | 30
     12 | 0 | 33
     13 | 1 | 36
     14 | 0 | 39
     15 | 1 | 42
     16 | 0 | 45
     17 | 3 | 0      <- moves back to the first row

  */
` __
/  \\
\\__/`
  // split the hexagon into three lines
  .split('\n').forEach((line, index) => {
    // and for each line
    ;[...line].forEach((char, j) => {
      // if the cursor position (x, y) translated
      // by (index, j) is not already part of a hexagon
      // then replace it with the current (index, j) piece
      // of the hexagon
      /*
         0123
       0  __
       1 /  \
       2 \__/
       
      */
      if ('_/\\'.indexOf(a[x + index][y + j]) < 0)
        a[x + index][y + j] = char
    })
  })
  
  // `up` represents the next hexagon
  // if true, the next hexagon will be drawn attached to
  // the top right edge of the current hexagon
  if (up) {
    x -= 1
  // otherwise, it'll be drawn attached to the bottom right edge
  } else {
    x += 1
  }

  // move three columns to the right
  y += 3
  // change directions
  up = !up

  // if within the right boundary of the 51x51 matrix,
  // move back to the left edge and down 2 rows
  // and draw the next hexagon as an `up` hexagon
  if (51 - y <= 3) {
    y = 0
    x += 2
    up = true
  }

  // if hexagons > 0, then recurse and draw the next hexagon
  // otherwise, return the array (join the columns in each row, then join each row
  // by a new line)
  return --hexagons ?
    draw(hexagons, x, y, a, up)
    : a.map(d => d.join('')).join('\n')
}

var n = parseInt(prompt('Number to draw:'))
var r = draw(n, 1, 0, a, true)
document.write('<pre>' + r.replace(/\n/g, '<br>') + '</pre>')


2

রুবি, 120

->n{a=(1..50).map{' '*50}
n.times{|i|x=i%16*3
3.times{|j|a[47-i/16*2-x/3+j][x..x+3]=[' __ ','/  \\','\__/'][j]}}
puts a}

50 টি স্পেসের 50 টি স্ট্রিংয়ের একটি অ্যারে তৈরি করে, তারপরে হেক্সাগনগুলি যুক্ত করতে 3 টি লাইনে 4 টি অক্ষর প্রতিস্থাপন করুন:

" __ "
"/  \"
"\__/"

যেহেতু প্রথম লাইনে স্পেস রয়েছে, একবার ষড়ভুজ প্লট হয়ে গেলে আমরা এর নীচে আরও একটি প্লট করতে পারি না, কারণ স্পেসগুলি পূর্বের ষড়জাগরণগুলিকে ওভাররাইট করতে পারে।

সুতরাং হেক্সাগনগুলি নীচে থেকে উপরে পর্যন্ত 16x16 রম্বস (বিকৃত আয়তক্ষেত্র) আকারে এবং নীচে বাম থেকে উপরে ডানদিকে স্ল্যাচিং যুক্ত হয়।

" __ "তারপরে স্ট্রিংটি অতিরিক্ত \এবং /যেখানে প্রয়োজনীয় তার সাথে ওভাররাইট করা হবে ।

পরীক্ষা প্রোগ্রামে অসম্পূর্ণ

g=->n{
  a=(1..50).map{' '*50}              #make an array of 50 strings of 50 spaces
  n.times{|i|                        #loop through all hexagons
    x=i%16*3                         #x coordinate of top left corner of hexagon, 16 per row
    3.times{|j|                      #loop through 3 lines to print hexagon.
      a[47-i/16*2-x/3+j][x..x+3]=    #47-i/16*2 : start at the bottom and work up. each row is 2 lines high and contains 16 hexagons. x/3 : slant upwards as the row moves right. 
       [' __ ','/  \\','\__/'][j]    #These are the symbols for each of the 3 lines required for a hexagon. [x..x+3] defines which characters have to be replaced in each string.
    }      
  }
  puts a                             #print to stdout
}

N=gets.to_i
g.call(N) 

সাধারণ আউটপুট (n = 250)

মোট 50 টি তৈরির জন্য এখানে শীর্ষে আরও কয়েকটি সারি শ্বেত স্পেস থাকা উচিত, তবে আমি জানি না যে স্ট্যাকেক্সচেঞ্জ এগুলি অন্তর্ভুক্ত করার জন্য ফর্ম্যাট করার কোনও উপায় আছে কিনা।

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