একটি পতনশীল বলের মানচিত্র তৈরি করা হচ্ছে


16

ভূমিকা

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

কাজটি

একটি ধনাত্মক পূর্ণসংখ্যা এন দেওয়া হয়েছে , এন স্তরগুলির একটি পড়ন্ত বল মানচিত্র আউটপুট করুন । স্তরগুলির মধ্যে, 4 টি নতুন লাইন রয়েছে। স্তরটির প্রস্থটি 25 টি আন্ডারস্কোর অক্ষর দ্বারা গঠিত, দৈর্ঘ্যের একটি গর্ত 5 এর সাথে বোঝায় যে মোট প্রস্থ 30 এর সমান This এটি প্রতিটি স্তরের পরে এলোমেলোভাবে স্থানান্তরিত হয়। বৈধ স্তরের একটি উদাহরণ:

_______________     __________

গর্তটি প্রান্তেও হতে পারে, যেন স্তরটি সিলিন্ডারের মতো থাকে:

  _________________________   

নোট করুন যে 2 টি শীর্ষস্থানীয় স্থান এবং 3 টি পূর্ববর্তী স্থান রয়েছে। একটি মেকিং একক প্রস্থ 5 গর্ত।

পরীক্ষার মামলা

N = 4 এর জন্য এটি একটি বৈধ আউটপুট:

_______________     __________





______     ___________________





_______________________     __





  _________________________

দ্রষ্টব্য: গর্তগুলি অবশ্যই অভিন্নভাবে বিতরণ করতে হবে । ট্রেলিং এবং / অথবা নেতৃস্থানীয় নিউলাইনগুলি অনুমোদিত।

এটি , তাই সর্বনিম্ন পরিমাণ বাইটের সাথে জমা দেওয়া!


1
@ ডোনমুসলি হাহাহা, যে কারওর সাথে এটি ঘটতে পারে: পি
আদনান

উত্তর:


7

পাইথ, 19 বাইট

VQ.>+*\_25*d5O30*b4

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

ব্যাখ্যা

ভিকিউ।> + * \ _ 25 * d5O30 * বি 4 # কিউ = ইনপুট

ভিকিউ # কিউ বার পুনরাবৃত্তি
     * 25 _ 25 # 25 আন্ডারস্কোর করে
          * d5 # 5 স্পেস
    + # আন্ডারস্কোর এবং স্পেসগুলি একত্র করে
  ।> ও 25 # 0-29 বার এই স্ট্রিংটি ঘোরান
                * বি 4 # বিভাজক নতুনলাইনগুলি মুদ্রণ করুন

4

রুবি, 74 71 59

অ্যালেক্স এ-কে ধন্যবাদ মনে করিয়ে দেওয়ার জন্য যে মূলত এক লাইনের অর্থ হ'ল আমি ছুরিকাঘাত ল্যাম্বডাকে ব্যবহার করতে পারি

f=->n{n.times{puts (('_'*25+' '*5)*2)[rand(30),30]+"\n"*5}}

putsশেষের দিকে একটি নতুন লাইন যুক্ত করেছে (যখন রুবি printনেই), তাই এটি 5নতুন লাইনে আপডেট হয়েছে ।
মান কালি

লুপের timesউপর দিয়ে আমাকে 3 বাইট সংরক্ষণের জন্য সমস্ত ফাংশনকে স্বাগত জানায় for: ডি
মান কালি

1
57 বাইট: ->n{n.times{puts (('_'*25+' '*5)*2)[rand(30),30]+"\n"*5}} এখানে চেষ্টা করুন
অ্যালেক্স এ।

আমাদের জমা দেওয়ার অংশ হিসাবে ল্যাম্বডা বরাদ্দ করার প্রয়োজন নেই কারণ আমাদের নামকরণের জন্য ফাংশন প্রয়োজন নেই।
অ্যালেক্স এ।

1
আপনি এটি করতে (->n{n.times{puts (('_'*25+' '*5)*2)[rand(30),30]+"\n"*5}})[input]বা কেবল এটি নির্দিষ্ট করতে পারেন যে এটি কল করার জন্য আপনাকে এটি নির্ধারণ করতে হবে। এটি সাইটে বেশ সাধারণ।
অ্যালেক্স এ।

3

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

n->join([join(circshift(["_"^25*" "^5...],rand(1:30)))"\n"^5 for i=1:n])

এটি একটি বেনাম ফাংশন যা একটি পূর্ণসংখ্যা গ্রহণ করে এবং একটি স্ট্রিং প্রদান করে। এটি কল করতে, এটি একটি ভেরিয়েবলের জন্য বরাদ্দ করুন।

আমরা 25 টি আন্ডারস্কোরের একটি স্ট্রিং তৈরি করি যার পরে 5 টি স্পেস করা হয়, তারপরে এটি স্প্লিট করে অক্ষরের অ্যারে হয়। আমরা বৃত্তাকারে এটিকে এলোমেলোভাবে বারে স্থানান্তরিত করি (1 থেকে 30 এর মধ্যে), এটিকে আবার স্ট্রিংয়ে যোগ দিন এবং 5 টি নতুন লাইনে টেক করুন। এই প্রক্রিয়া n বার পুনরাবৃত্তি , যেখানে এন ইনপুট। ফলাফলযুক্ত অ্যারে যোগদান করে ফিরে আসবে।

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


3

পাওয়ারশেল 65 বাইট

0..$args[0]|%{-join("_"*25+" "*5)[($r=Random 25)..($r-29)];,""*5}

N পুনরাবৃত্তির জন্য একটি লুপ চালান । একটি এলোমেলো নম্বর পান এবং শেষে 5 টি স্পেস দিয়ে আন্ডারস্কোর স্ট্রিং তৈরি করুন। এলোমেলো অবস্থান থেকে শুরু করতে টানতে অ্যারে হিসাবে স্ট্রিংয়ের সূচি। নেতিবাচক সূচকটি শেষ থেকে মোড়ানো। আবার সেই ব্যাক আপটিতে যোগ দিন এবং 5 টি নতুন লাইন যুক্ত করুন।

সম্পাদনা: আমি জানি না কেন আমি কেন ভেবেছিলাম -Maximumকারণ এটি আমার অবস্থানের কারণ হিসাবে প্যারামিটারের প্রয়োজন । টিমমিডকে ধন্যবাদ আমি কিছু বাইট চাঁচা করেছি এবং ইনপুট পেতে ভুলে গিয়েছি যাতে আমাকে 65 এ ফিরে যায়।


@ টিমিমিডি কারও কাছে এখনও ০.০ থাকলে অবাক হব এটি কেবল ডাউনলোড হিসাবে উপলব্ধ ছিল এবং কোনও OS এর সাথে প্রেরণ করা হয়নি। 2.0 আদর্শ হিসাবে বিবেচনা করা উচিত।
ম্যাট

@ টিমমিডি আমি যেখানে পাওয়ারশেল ১.০ সম্পর্কিত উদ্বিগ্ন তা নয় point যদি কেউ এই সাইটে ব্যবহার করে থাকেন তবে এটি আমাকে অবাক করে দেবে। আমি যদি কোনও 3.0 বা উচ্চতর বৈশিষ্ট্য ব্যবহার করি তবে আমি অবশ্যই তা হাইলাইট করব।
ম্যাট

3

পাইথ, 19 বাইট

VQ.>r"5 25_"9O30*4b

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

ত্রুটি ধরার জন্য FryAmTheEggman কে ধন্যবাদ।


@ অ্যান্ডএন ফ্রাইআমএজিগম্যান ঠিক আছে, আমি এটিকে এলোমেলোভাবে 0-25 এর পরিবর্তে 0-29 অক্ষর দ্বারা স্থানান্তরিত করতে পরিবর্তন করেছি।
মাইক বুফার্দেচি

2

স্পেসবিএএস - 93 বাইট

1 a$="_"*25+" "*5: INPUT n: FOR i=1 TO n: r=1+INT(RND*30): ?a$(r TO)+a$( TO r-1)''''': NEXT i

25 আন্ডারস্কোর + 5 স্পেসের একটি স্ট্রিং তৈরি করে, একটি এলোমেলো শুরু পয়েন্টটি ধরে এবং স্ট্রিংটিকে সেই অবস্থানে স্প্লাইস করে এবং স্ট্রিংয়ের শুরুটিকে শেষের দিকে টেক দেয়।

অ্যাস্টোস্ট্রোফ একটি নতুন লাইন জোর করে, সুতরাং স্ট্রিংয়ের শেষে 1 এবং 4 টি খালি লাইন।


2

এমএটিএল , 23 বাইট

:"95l25X"5Z"h30YrYS10ct

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

ব্যাখ্যা

:"           % take input n implicitly. Repeat loop n times
  95l25X"    %   row vector with number 95 ('_') repeated 25 times
  5Z"        %   row vector of 5 blank spaces
  h          %   concatenate vertically
  30Yr       %   random number uniformly distributed on [1,2,...,30]
  YS         %   circularly shift
  10c        %   newline character. Includes another newline when printed
  t          %   duplicate
             % implicitly end loop and display stack contents

2

জাভা, 177 140 বাইট

-1 বাইট আই ++ এ নীল সরানো

-2 বাইট আমার কাছে মূলতে অর্থহীন শ্বেতস্থান ছেড়ে চলেছে

-৩৪ বাইটে নীলকে বুঝতে পেরে আমার চরের [মোটেও] দরকার নেই

কারণ, আপনি জানেন, জাভা।

n->{String s="";for(;n-->0;){int r=(int)(Math.random()*30);for(int i=0;i<30;){s+=i>r&i<r+6|r>24&i++<=r%25?" ":"_";}s+="\n\n\n\n";}return s;}

সামান্য শৃঙ্খলাবদ্ধ:

Function<Integer, String> fallingBall = n -> {
    String s = "";
    for (;n-->0;) {
        int r = (int)(Math.random()*30);
        for (int i=0; i<30; i++) {
            s += i>r&i<r+6|r>24&i<=r%25?" ":"_";
        }
        s += "\n\n\n\n";
    }
    return s;
}

যেহেতু জাভাতে স্ট্রিং 'রোটেট' নেই, তাই আমাকে আলাদা পদ্ধতি নিতে হয়েছিল। আমি 0-29 এলোমেলো int তৈরি করেছি যা গর্তের সূচনা সূচকে উপস্থাপন করে (OBO কারণ এর >চেয়ে কম হয় >=)। প্রতিটি স্বতন্ত্র চরিত্রের পরে যুক্তি দ্বারা সিদ্ধান্ত নেওয়া হয়

l[index] = (index>random && index<random+6) || (random>24 && index<=random%25) ? ' ' : '_';

এটি পুরো "র‌্যাপিং" প্রকৃতি পরিচালনা করে।


আমি ব্যবহৃত স্থানটি আই ++ রেখে আপনি একটি বাইট সংরক্ষণ করতে পারেন।
নীল

স্মার্ট। হ্যাকি তবে স্মার্ট। স্মার্ট এখনও আমার স্নিপেট ( s = "") এর শুরুতে অর্থহীন সাদা জায়গা ছেড়ে চলেছে । দু'জনেই এখন স্থির।
CAD97

আপনি চরের অ্যারে থেকে মুক্তি পেয়ে চারটি আক্ষরিক অক্ষরে অক্ষরে অক্ষরে পরিবর্তন করতে এবং লুপের জন্য ভিতরে ++ ব্যবহার করতে পারেন = আমি কেবল এটি পরীক্ষা করেছি
ব্লু

বিটিডব্লিউ দুর্দান্ত উত্তর
ব্লু

এটি করার একটি উপায়তে ফোকাস করার জন্য আমি এটাই পাই। -34 (!) বাইট
CAD97

1

পাইথন 3.5 - 109 113 বাইট (প্রতিটি ফলাফলের মধ্যে 4 টি নতুন লাইন মুদ্রণের জন্য +4):

def g(a,j='_'*25+' '*5):
 for l in range(a):import random;n=random.randrange(len(j)+1);print(j[-n:]+j[:-n]+'\r'*4)

অবহেলিত ফর্ম:

# j is the starting string with the 25 underscores and then 5 spaces at the end
def g(a,j='_'*25+' '*5):
    import random #Import the random module
    for l in range(a): # Do the following as many times as provided by the user
        n=random.randrange(len(j)+1) Get a random number in the range 0-29
        print(j[-n:]+j[:-n]+'\r'*4) #Shift the string characters right "n" times and print out the results with 4 new lines in between

মূলত যা চলছে তা হ'ল স্ট্রিং 'জ', 25 আন্ডারস্কোর এবং 5 স্পেসের সমন্বয়ে ফাংশন "জি" এর আর্গুমেন্ট হিসাবে দেওয়া হবে। তারপরে, এলোমেলো মডিউলটি আমদানি করা হয় এবং ব্যবহারকারীর দ্বারা নির্ধারিত হিসাবে অনেকবার পরিসরটিতে একটি এলোমেলো সংখ্যা বেছে নেওয়া হয় 0 => 29এবং "j" স্ট্রিংটি বেশ কয়েকবার ডান স্থানান্তরিত হয়। ফলাফলটি প্রতিটি পুনরাবৃত্তির পরে মুদ্রিত হয় এবং প্রতিটি ফলাফলের মধ্যে 4 টি নতুন লাইন থাকে।


এটি কি এর মধ্যে নতুনলাইনগুলি মুদ্রণ করে?
আদনান

@ অ্যান্ডএন এখন এটি করে। :)
আর কপ

আপনাকে আসলে 4 টি নতুন লাইন প্রিন্ট করতে হবে: পি। সুতরাং পরিবর্তন '\r'করা '\r'*4সম্ভবত কাজ করা উচিত। এছাড়াও, আমার মনে হয় আপনি পরিবর্তন করতে পারেন range(a+1)থেকে range(a)
আদনান

@ অ্যান্ডএন প্রকৃতপক্ষে, লাইনগুলির range(a)প্রকৃত a-1সংখ্যা প্রিন্ট করে ব্যবহার করা হয় , সুতরাং range(a+1)ব্যবহারকারী যে লাইন সরবরাহ করে তার সঠিক সংখ্যাটি মুদ্রণের জন্য সর্বোত্তম উপায়। এছাড়াও, এটি এখন প্রতিটি ফলাফলের মধ্যে 4 টি নতুন লাইন প্রিন্ট করে।
আর কাপ,

হুম, এটি অদ্ভুত, কারণ আমি g(5)এটি দিয়ে পরীক্ষা করেছি এবং এটি পাঁচটির পরিবর্তে 6 টি স্ট্রিং প্রিন্ট করে, তাই সম্ভবত এটি ঠিক a+1করাতে পরিবর্তন করা a
আদনান

1

পাইথন, 119 103 বাইট

import random
s='_'*20+' '*5
def f(n,a=random.randint(0,25)):[print(s[a:]+s[:a]+3*'\n')for _ in' '*n]

আপনার সর্বশেষ আপডেটটি কাজ করে না কারণ আপনি এলোমেলোভাবে একটি ডিফল্ট আর্গুমেন্টে রেখেছেন তাই ফাংশনটি সর্বদা একই সারির nবার আউটপুট দেয়
Sp3000
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.