সুপার স্কয়ার বৃষ্টি


11

স্ক্রিম ™ শীতকালীন বিক্রয় চালু এবং আপনি নিজেকে একটি তীব্র মিনিমালিস্ট অ্যাকশন গেম, সুপার স্কোয়ারকে ঠিকই ছুঁড়েছেন । এটি খেলে আপনি উপলব্ধি করতে পারেন যে গেমটি কেবল হাস্যকরভাবেই কঠিন বা আপনি এটির পক্ষে খুব খারাপ। বিশেষত, এই "বৃষ্টিপাত" প্যাটার্নটি যা আপনাকে প্রতিবারই পেয়েছে বলে মনে হচ্ছে ...

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

হতাশ, আপনি নিজেকে আলাদা চ্যালেঞ্জ দেওয়ার সিদ্ধান্ত নিয়েছেন: বৃষ্টিপাতের নকশাটি ASCII আর্টে আঁকুন!

ইনপুট

ইনপুটটি একক ধনাত্মক পূর্ণসংখ্যা যা nSTDIN বা ফাংশন আর্গুমেন্টের মাধ্যমে দেওয়া প্যাটার্নের আকার নির্দেশ করে ।

আউটপুট

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

এখানে n = 10:

 ...................
| ----------------- |
|  ...............  |
| | ------------- | |
| |  ...........  | |
| | | --------- | | |
| | |  .......  | | |
| | | | ----- | | | |
| | | |  ...  | | | |
| | | | | - | | | | |
| | | | |   | | | | |
| | | | | - | | | | |
| | | |  ...  | | | |
| | | | ----- | | | |
| | |  .......  | | |
| | | --------- | | |
| |  ...........  | |
| | ------------- | |
|  ...............  |
| ----------------- |
 ...................

এখানে n = 5:

 --------- 
  .......  
 | ----- | 
 |  ...  | 
 | | - | | 
 | |   | | 
 | | - | | 
 |  ...  | 
 | ----- | 
  .......  
 --------- 

এবং অবশেষে, এখানে n = 1(কেবলমাত্র অন্তরের দুটি দেয়াল):

 - 

 - 

নির্মাণ (অতিরিক্ত স্পষ্টতার জন্য)

প্লেয়িং এরিয়া দুটি চতুষ্কোণীর মতো বিভক্ত:

 AAAAAAAAA
B AAAAAAA B
BB AAAAA BB
BBB AAA BBB
BBBB A BBBB
BBBBB BBBBB
BBBB A BBBB
BBB AAA BBB
BB AAAAA BB
B AAAAAAA B
 AAAAAAAAA

উপরের / নীচের চতুষ্কোণগুলি হাইফেন দ্বারা প্রতিনিধিত্ব করা অনুভূমিক দেয়াল -এবং বিন্দুগুলির সাথে ছায়াযুক্ত ফাঁকগুলির মধ্যে বিকল্প হওয়া উচিত .। বাম / ডান চতুষ্কোণগুলি ফাঁকা এবং পাইপ দ্বারা প্রতিনিধিত্ব করা উল্লম্ব প্রাচীরের মধ্যে বিকল্প হওয়া উচিত |। প্রধান ত্রিভুজগুলি খালি রয়েছে এবং সর্বদা শূন্যস্থান দিয়ে ভরা উচিত।

আকারের বৃষ্টি প্যাটার্ন nহয়েছে 2nহিসাবে আমরা কেন্দ্র থেকে দূরে সরাতে উপরের / নিম্ন অর্ধেই এবং অর্ধেই পর্যায়ক্রমে দেয়াল কেন্দ্র নিকটস্থ থেকে দেয়ালের, দেয়াল।

স্কোরিং

এটি কোড-গল্ফ, সুতরাং কয়েকটি বাইটের কোডটি জয়ী।


4
এই গেমটি ... আমি জানি আপনি কী সম্পর্কে কথা বলছেন। এটি 40 মিনিটের মতো চুরি করেছে যতক্ষণ না আমি এটি মারি। ^^
থ্রিএফএক্স

উত্তর:


3

সিজেম, 93 87 78 61 59 বাইট

ri:K_+){K" |"*KKI-z:I-I2%:L+<SL>\+_W%L'-'.?I2*Ig-*@I0=>N}fI

nSTDIN এর মাধ্যমে মান নেয়

কয়েকটি উদাহরণ:

1
 - 

 - 
2
 ... 
| - |
|   |
| - |
 ... 
5
 --------- 
  .......  
 | ----- | 
 |  ...  | 
 | | - | | 
 | |   | | 
 | | - | | 
 |  ...  | 
 | ----- | 
  .......  
 --------- 
10
 ................... 
| ----------------- |
|  ...............  |
| | ------------- | |
| |  ...........  | |
| | | --------- | | |
| | |  .......  | | |
| | | | ----- | | | |
| | | |  ...  | | | |
| | | | | - | | | | |
| | | | |   | | | | |
| | | | | - | | | | |
| | | |  ...  | | | |
| | | | ----- | | | |
| | |  .......  | | |
| | | --------- | | |
| |  ...........  | |
| | ------------- | |
|  ...............  |
| ----------------- |
 ................... 

এটি অনেক গল্ফ করা যেতে পারে, যা আমি আগামীকাল প্রথম কাজ করব।

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


5

হাস্কেল 150 বাইট

আমি বুঝতে পারি যে এটি জিতবে না, কেবল আমার প্রথম কোডগলফ পোস্ট করতে চেয়েছিল: ডি

q n=putStr$unlines$iterate(\l->let[a,b]=if l!!0!!1=='-'then"|."else" -";c=[a:s++[a]|s<-l];t=' ':[b|x<-l!!0]++" "in t:c++[t])[" - ","   "," - "]!!(n-1)

GHCi এ লোড করে এবং q nযেখানে nআকার তা কল করে ব্যবহার করুন ।

কিছু উদাহরণ:

*Main> q 1
 - 

 - 
*Main> q 2
 ... 
| - |
|   |
| - |
 ... 
*Main> q 5
 --------- 
  .......  
 | ----- | 
 |  ...  | 
 | | - | | 
 | |   | | 
 | | - | | 
 |  ...  | 
 | ----- | 
  .......  
 --------- 
*Main> q 10
 ................... 
| ----------------- |
|  ...............  |
| | ------------- | |
| |  ...........  | |
| | | --------- | | |
| | |  .......  | | |
| | | | ----- | | | |
| | | |  ...  | | | |
| | | | | - | | | | |
| | | | |   | | | | |
| | | | | - | | | | |
| | | |  ...  | | | |
| | | | ----- | | | |
| | |  .......  | | |
| | | --------- | | |
| |  ...........  | |
| | ------------- | |
|  ...............  |
| ----------------- |
 ................... 

কেউ সম্ভবত আরও ভাল করতে পারে, আমি হাস্কেলের কাছে মোটামুটি নতুন।


6
জয়ের বিষয়ে চিন্তা করবেন না। ;) বিজয়ী সিজেএম এবং পাইথের জন্য। অন্যান্য ভাষায় গল্ফ করা একই "ওজন শ্রেণীর" সাবমিশনগুলিকে মারতে এবং আপনার ভাষার কিছু নতুন অস্পষ্ট বৈশিষ্ট্য শিখার বিষয়ে। পিপিসিজিতে আপনাকে স্বাগতম!
মার্টিন এন্ডার

3

পাইথন, 204 , 198 , 191 বাইট

r=lambda a,b,d=' ':d.join((a,b,a[::-1]))
def f(s,i,n):d=[r(s[:i],'.-'[(n-i)%2]*((n-i)*2-1))];return i==n and[r(s,' '*(2*(i%2)+1),'')]or d+f(s,i+1,n)+d
g=lambda n:'\n'.join(f('| '*(n/2),0,n))

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


আমি ঠিক বুঝতে পেরেছি যে স্ট্রিংগুলির ফাংশনগুলি, যা আমি সাধারণত অনুমতি দিয়ে থাকি (যেটি সম্পাদনা করেছি) তা করতে ভুলে গিয়েছিলাম। আপনি এখনও হোয়াইটস্পেস সরিয়ে এবং এক লাইনে 4, 5 লাইন রেখে কয়েকটি
অক্ষরে সঞ্চয়

কিছুটা শর্ট সার্কিট মূল্যায়নের মাধ্যমে আপনি এটি 190
টিতে

দুঃখিত, আমি আপনাকে দুর্ঘটনার দ্বারা কমিয়ে দিয়েছি। আপনি সম্পাদনা করলে আমি এটি বাতিল করতে পারি।
নটকি

1

পার্ল 5: 74 বাইট (73 কোড + -p)

#!perl -p
s/.*/ /;$a=qw(- .)[$|--]x
s/.+/$"$&$"/g,s/^|\z/ $a 
/g,$"^="\\"for($_)x$&

ইনপুটটিতে প্যারামিটার নেয় (সঠিক ফাংশনের জন্য প্রয়োজনীয় লাইন অক্ষরের শেষ):

$ perl rain.pl <<<"3"
 ----- 
  ...  
 | - | 
 |   | 
 | - | 
  ...  
 ----- 

Ungolfed:

                         # Read the input line into $_ (-p)
s/.*/ /;                 # Replace the input with a space (plus the original eol), saves the parameter in $&
for(($_)x$&) {           # Iterate $& times without affecting $_
  $c=s/.+/$"$&$"/g;      # Add $" (initially space) at the start and the end of each line, stores number of lines in $c
  $a=("-",".")[$|--]x$c; # Set $a to $c times minus or dot using magic $| (which iterates over 1 and 0 on decrement)
  s/^|\z/ $a \n/g;       # Equivalent to $_=" $a \n$_ $a \n"
  $"^="\\";              # Alternate $" between space and bar using the string xor 
}
                         # Print $_ (-p)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.