এগুলি হ'ল এএসসিআইআই ড্যান্ডেলিয়নস:
\|/ \ / |
/|\ | \|/ |
| | | _\|/_
| | | /|\
এএসসিআইআই ড্যান্ডেলিয়নের তিনটি প্যারামিটার রয়েছে: কান্ডের দৈর্ঘ্য (1 থেকে 256 এর মধ্যে ধনাত্মক সংখ্যা, বীজের সংখ্যা (0 এবং 7 এর মধ্যে ধনাত্মক সংখ্যা) এবং অভিযোজন (^ বা v) above উপরের ড্যান্ডেলিয়নের দৈর্ঘ্য, বীজ এবং অভিমুখীকরণের জন্য, ( যথাক্রমে 3,5, ^), (3,2, ^), (2,3, ^) এবং (3,7, v)
দৈর্ঘ্য 2 সহ একটি ড্যান্ডেলিয়নে চিত্রিত, নীচের ক্রমে বীজগুলি ভরাট করা হয়েছে (মাথা নীচু করে ড্যানডেলিয়নের জন্য উল্টো দিকে উল্টানো):
seeds: 0 1 2 3 4 5 6 7
| \ / \|/ \ / \|/ _\ /_ _\|/_
| | | | /|\ /|\ /|\ /|\
| | | | | | | |
চ্যালেঞ্জ:
একটি প্রোগ্রাম / ফাংশন লিখুন যা যখন ইনপুট হিসাবে কোনও ASCII ড্যান্ডেলিয়ন দেওয়া হয়, তার দৈর্ঘ্য, বীজ গণনা এবং ওরিয়েন্টেশন উপরের উদাহরণগুলির অনুরূপ ফর্ম্যাট করে এবং সেই বিন্যাসে পরামিতিগুলি দেওয়া হয় তখন সেই পরামিতিগুলির সাথে একটি ASCII ড্যানডিলিয়ন দেয়। আপনি প্রথম বন্ধনী উপেক্ষা করতে পারেন এবং ধরে নিতে পারেন ইনপুট / আউটপুটটি একটি সংখ্যা, কমা, একটি সংখ্যা, একটি কমা এবং হয় ^বা হয় v। আপনি অন্য অক্ষরের পরিবর্তে ^/ vএতক্ষণ স্থির করতে পারেন যতক্ষণ না সেগুলি এখনও সহজেই 'আপ' / 'ডাউন' (উদাহরণস্বরূপ, u/ d) হিসাবে ব্যাখ্যা করা যায় । (২, ২, ^) এবং (৩,০, ^) বা (২,১, ^) এবং (২,১, ভি) এর মতো দেখতে দেখতে ডানডিলিয়নগুলির মধ্যে আলাদা করার দরকার নেই। ASCII আর্ট দেওয়া, উভয় পরামিতি সেট একটি গ্রহণযোগ্য আউটপুট হবে, এবং উভয় পরামিতি সেট একই ASCII শিল্প দিতে পারে।
এটি কোড-গল্ফ , তাই বাইট জেতে সংক্ষিপ্ততম কোড।
সি # তে একটি উদাহরণ প্রোগ্রাম (এমনকি সামান্য গল্ফও নয়):
string Dandelion(string s)
{
if (s.Contains(','))
{
//got parameters as input
string[] p = s.Split(',');
//depth and width (number of seeds)
int d = int.Parse(p[0]);
int w = int.Parse(p[1]);
//draw stem
string art = " |";
while (d > 2)
{
d--;
art += "\n |";
}
//draw head
string uhead = (w % 2 == 1 ? "|" : " ");
string dhead = uhead;
if (w > 1)
{
uhead = "\\" + uhead + "/";
dhead = "/" + dhead + "\\";
if (w > 5)
{
uhead = "_" + uhead + "_\n /|\\";
dhead = "_\\|/_\n " + dhead;
}
else if (w > 3)
{
uhead = " " + uhead + " \n /|\\";
dhead = " \\|/ \n " + dhead;
}
else
{
uhead = " " + uhead + " \n |";
dhead = " |\n " + dhead;
}
}
else
{
uhead = " " + uhead + "\n |";
dhead = " |\n " + dhead;
}
//add head to body
if (p[2] == "^")
{
return uhead + "\n" + art;
}
return art + "\n" + dhead;
}
else
{
//ASCII input
string[] p = s.Split('\n');
int l = p.Length - 1;
int offset = 0;
//find first non-' ' character in art
while (p[0][offset] == ' ')
{
offset++;
}
int w = 0;
if (p[0][offset] == '|')
{
//if '|', either head-down or no head.
if (offset == 0 || p[l][offset - 1] == ' ')
{
//if no space for a head to the left or no head at the bottom, no head.
return l.ToString() + ",1,^";
}
//head must have at least size 2, or else indistinguishable from no head case
w = 6;
if (p[l][offset] == '|')
{
//odd sized head
w = 7;
}
if (offset == 1 || p[l - 1][offset - 2] == ' ')
{
//not size 6 or 7
w -= 2;
if (p[l - 1][offset - 1] == ' ')
{
//not size 4 or 5
w -= 2;
}
}
return l.ToString() + "," + w.ToString() + ",v";
}
else if (p[0][offset] == '\\')
{
//head at least size 2 and not 6/7, or indistinguishable from no head.
w = 4;
if (p[0][offset + 1] == '|')
{
w = 5;
}
if (p[1][offset] == ' ')
{
w -= 2;
}
}
else
{
w = 6;
if (p[0][offset + 2] == '|')
{
w = 7;
}
}
return l.ToString() + "," + w.ToString() + ",^";
}
}
^এবংv?