<("<) পাখি নর্তকী (>")>


22

আপনার পাখি কিছু অনুশীলনের জন্য চুলকানি করছে এবং স্থির অবস্থায় সব সময় আটকে থাকার কারণে অসুস্থ। এমন একটি প্রোগ্রাম লিখুন যা নৃত্যের চলাফেরার উপর নির্ভর করে প্রতিটি 100ms * n বা 200ms * n আপডেট করে এলোমেলোভাবে এসিআই পাখি নেচে নেবে। পাখিটি সর্বদা নাচের চলা দিয়ে শুরু হয় <(")>

প্রোগ্রামটির এমন একটি ইনপুট গ্রহণ করা উচিত যা ঘুমের ব্যবধানটিকে ( n >= 0 && n <= 50) দ্বারা গুন করার জন্য একটি সংখ্যা ।

100ms নড়াচড়া

^(")v
v(")^
^(")^
v(")v

200 মিমস মুভ

(>")>
<(")>
<("<)

অতিরিক্ত বিশদ

  • এলোমেলোভাবে অভিন্ন হতে হবে না তবে প্রতিটি নাচের পদক্ষেপে ঘটনার যুক্তিসঙ্গত সুযোগ থাকা উচিত (60০ টির মধ্যে কমপক্ষে ১ টি ন্যায্য বলে মনে হচ্ছে, একই পদক্ষেপটি যদি পরপর দু'বার ঘটে তবে তা ঠিক আছে)
  • একসাথে কেবল একটি পাখি প্রদর্শিত হবে, একাধিক পাখি নয়
  • শ্বেত স্পেস অনুসরণ করার অনুমতি দেওয়া হয়েছে (তবে অন্যান্য অনুচ্ছন্ন অক্ষরগুলি নয়)
  • ঘুমের আগে একটি পাখি প্রদর্শিত হবে

পাইথন 3-তে উদাহরণ

import random, time, sys

birds = """(>")>
<(")>
<("<)
^(")v
v(")^
^(")^
v(")v"""
birds = birds.split()

interval = int(input("Sleep for 100ms*"))
selection = -1

while True:
    if selection == -1:
        selection = 1
    else:
        selection = random.randint(0, len(birds)-1)
    sys.stdout.write('\r'+birds[selection])
    if selection > 2:
        time.sleep(0.1*interval)
    else:
        time.sleep(0.2*interval)

জয়লাভ


পাখির চোখ দুটি ডাবল উদ্ধৃতি বা দুটি একক উদ্ধৃতি?
পাভেল

@ পাভেল, ডাবল উক্তি
রিড স্টারকোডার

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

যদি আমার ভাষা আউটপুটগুলি পরিবর্তন করতে না পারে তবে আমি কি প্রতি 100/200 এমএসে একটি নতুন পাখি আউটপুট দিতে পারি?
devRicher

1
আইডিয়ন ব্যবহার করে , লুয়া এস্কেপটি ঠিক একটির\r মতো কাজ করে বলে মনে হচ্ছে \n। আমি os.execute("cls")সেখানে ব্যবহার করতে পারি না। @redstarcoder
devRicher

উত্তর:


3

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

xXx`'./U;HbG#3@@!{uu'F'v^<>(")'Za7e 7YrY)D5M3>QG*&XxT

চালগুলি অভিন্নভাবে এলোমেলো।

নীচে একটি নমুনা চালানো হয় n = 2। অথবা এটি এমএটিএল অনলাইনে চেষ্টা করে দেখুন ! (দোভাষা পরীক্ষামূলক। এটি শুরু না হলে আবার "রান" টিপুন বা পৃষ্ঠাটি সতেজ করার চেষ্টা করুন)।

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

ব্যাখ্যা

x                   % Take input n and delete it
Xx                  % Clear screen
`                   % Do...while
  './U;HbG#3@@!{uu' %   Push this (compressed) string
  F                 %   Specify source alphabet for decompression
  'v^<>(")'         %   Push target alphabet
  Za                %   Base conversion (decompress)
  7e                %   Reshape as a 7-row char matrix. Each row is a move
  7Yr               %   Push random integer from 1 to 7
  Y)                %   Select that row from the char matrix
  D                 %   Display it
  5M                %   Push the integer again
  3>                %   Does it exceed 3? Gives false (0) or true (1)
  Q                 %   Add 1
  G*                %   Multiply by n
  &Xx               %   Pause that many tenths of a second and clear screen
  T                 %   Push true
                    % End (implicit). Since top of the stack is true, this causes
                    % and infinite loop

6

মতলব, 125 117 বাইট

দুর্ভাগ্যক্রমে এটি টিআইওতে প্রদর্শিত হতে পারে না কারণ আউটপুটটির কোনও "স্ট্রিমিং" নেই। 1পরিবর্তে একটি ইনপুট জন্য একটি gif এখানে :

t=input('')*.1;a='^(")vv(")^^(")^v(")v(>")><(")><("<)';while 1;n=randi(7);clc;disp(a(n*5-4:n*5));pause(t+t*(n>4));end

-8 বাইটের জন্য লুইস মেন্ডোকে ধন্যবাদ!


5

*> <> , 103 101 বাইট

<vD[3'(")'
1x<.5
S\:43_C43CdooI:o@:o@:o@Do
R!"^"x"v">
>:2* _"><"92.
x '>)">('u.02S*2:oooooodO<'<("<)'

এখানে চেষ্টা করুন! ( nপ্রাথমিক স্ট্যাকটিতে লিখুন বা আপনি একটি ত্রুটি পাবেন)

100 টি বাইটের উত্তর নেই বলে আমি আমার চ্যালেঞ্জের দিকে ছুঁড়ে ফেলার সিদ্ধান্ত নিয়েছি। nস্ট্যাকের উপর রাখুন এবং দূরে আপনি যান! এটি (")কিছু বাইট সংরক্ষণ করতে অক্ষরগুলি পুনরায় ব্যবহার করে ।

ব্যাখ্যা

Initialisation

<vD[3'(")'

এখানে আমরা (")পরবর্তী ব্যবহারের জন্য সঞ্চয় করি ।

<           move the IP left
   [3'(")'  push '(")' to a new stack
  D         move back down to a clean stack
 v          move the IP down into "dance chooser"

নৃত্য চয়নকারী

1x<.5
 \

আমরা কোন ধরণের নাচ তৈরি করতে যাচ্ছি তা নির্বাচন করার জন্য এটি প্রায়শই সম্পাদন করা হয়।

 x         generate a 100ms dance or a 200ms dance
1  .5      jump to "200ms dance"
 \         mirror IP into "100ms dance"

এর ডানদিকের vওপরে ওপরে xএকটি রয়েছে <xএটি আইপিটিকে ভুল দিকে চালিত করার চেষ্টা করলে এগুলি পুনরায় সম্পাদন করে make

100ms নৃত্য উত্পন্ন করুন

S\:1*43_C43CdooI:o@:o@:o@Do

এখানে আমরা 100 মিমি নাচের একটি চাল উত্পন্ন এবং আউটপুট করি।

 \                         mirror the IP right
  :                        copy n
   43 C43C                 call "generate '^' or 'v'" twice
     _                     ignored mirror
          do               output a carriage return
            o              output the first hand of the bird
             I:o@:o@:o@D   select, copy, and output '(")'
                        o  output the second hand of the bird
S                          sleep for previous n*100ms
 \                         mirror IP back to "dance chooser"

43 সি - "^" বা "ভি" উত্পন্ন করুন

R!"^"x"v">

এটি একটি সাধারণ ফাংশন যা "^" বা "ভি" উত্পন্ন করে তারপরে ফিরে আসে। এটি নৃত্য চয়নকারের মতো একইভাবে কাজ করে যেখানে xআইপি কেবল বাম বা ডানে সরানো হয় তা নিশ্চিত করার জন্য তার চারদিকে নির্দেশাবলী রয়েছে ।

     x      generate "^" or "v"
R!"^"    >  push "^" to stack and return
R     "v"   push "v" to stack and return

200 মিমি নাচ উত্পন্ন করুন

এটি আর একটি যা দিয়ে শুরু হয় x। এটি দুটি বিভাগে বিভক্ত হবে: <(")>এবং অন্যটি (>")> and <("<), কারণ তারা দুটি স্বতন্ত্র বিভাগ এবং xএটিই কেবল তারা ভাগ করে।

<(")>

>:2* _"><"b2.

এটি মূলত generate 100ms danceরুটিনের শুরুটি করে তবে ><একটি এলোমেলো ^vকম্বোর পরিবর্তে পাখির হাতকে জনপ্রিয় করে তোলে। এটি এবারও nদুটি দ্বারা গুন করে। এটি generate 100ms danceপুরো পাখিটিকে আউটপুট দেওয়ার জন্য রুটিনটি ব্যবহার করতে এবং তার পরিবর্তে 200 মিমি অপেক্ষা করার জন্য এটি সেটআপ করে।

>              move IP right
 :2*           copy n and do n*2
     _         ignored mirror
      "><"     push "><" to stack
          b2.  jump to "output carriage return" in "generate 100ms dance"

(>")> এবং <("<)

x '>)">('u.02S*2:oooooodO<'<("<)'

এই সামান্য ব্যাখ্যাটি প্রজন্ম (>")>এবং <("<)প্রজন্মের সম্পর্কে , যদিও xআইপি এটির বাইরে প্রেরণ করতে পারে (নীচে বর্ণিত)।

x                                  move to "choose dance", generate (>")>, <("<), or <(")> (previous routine)  
  '>)">('                          push '(>")>' to the stack
                          '<("<)'  push '<("<)' to the stack
         u              O<         ensure inner code block is always executed with IP moving left
                      od           output carriage return
                 ooooo             output bird
             S*2:                  sleep for n*200ms
          .02                      jump to "dance chooser"

3

জাভাস্ক্রিপ্ট (ES6) + HTML5: 118 116 + 8 = 124 বাইট

জাভাস্ক্রিপ্ট: 119 বাইট

f=n=>{a.innerHTML='(>")>0<(")>0<("<)0^(")v0v(")^0^(")^0v(")v'.split(0)[r=+new Date%7],setTimeout(f,(1+(r<3))*100*n,n)}

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

এইচটিএমএল: 8 বাইট

<b id=a>

আমি এখানে উদ্ধৃতিগুলি বাদ দিচ্ছি এবং আমি bট্যাগটি বন্ধ করছি না । এটি বৈধ এইচটিএমএল নয়, তবে সমস্ত ব্রাউজারগুলি যেভাবেই স্বয়ংক্রিয়ভাবে ট্যাগটি বন্ধ করে দেয়। আমি এটিকে সাহসী করেছিলাম কারণ bএটি একটি একর-চরিত্রের এইচটিএমএল উপাদান এবং কারণ আমার পাখির নাচটি লক্ষ করা যায়।


1
যখন চ নিজেকে পুনরায় কল করে, এটি আবার এন পাস করে না। আমার পক্ষে কমপক্ষে এটি প্রথমবার কেবল সম্মানজনক বলে মনে হচ্ছে, এর পরে এটি শূন্য (বা অপরিবর্তিত)। এছাড়াও কখনও কখনও আউটপুট অপরিজ্ঞাত হয়। এটি কি আর% 7 হওয়া উচিত?
ক্রিস এম

আপনি ঠিক বলেছেন, আমি এন পাস করতে ভুলে গেছি। এটি প্রকৃতপক্ষে% 7 হওয়া উচিত। আমি পাখির ভঙ্গির পরিমাণের ভুল হিসাব করেছি। সংশোধনের জন্য ধন্যবাদ, এটি এখন ঠিক করা হয়েছে।
লুক

দুঃখিত আমি আপনার বাইট সংখ্যা বাড়িয়ে রাখছি! দুর্দান্ত গল্ফিং, আমি এলোমেলো ফাংশন এবং শূন্য বিভাজন পছন্দ করি
ক্রিস এম

ধন্যবাদ। আমার উত্তর সম্পাদনা করার সময় আমি একটি 4 বি উন্নতি পেয়েছি, যার অর্থ আমি 2 বি সঞ্চয় করা শেষ করেছি, তাই ঠিক আছে। ইএস 5 এবং এর আগের বাইটগুলি সংরক্ষণ করতে শূন্য বিভাজন ব্যবহৃত হয়েছিল, তবে আপনি ES6 সাল থেকে টেমপ্লেট স্ট্রিং সহ প্রথম বন্ধনী বাদ দিতে পারেন, সুতরাং এটি আর তেমন কার্যকর হয় না। এটি একটি ভিন্ন পদ্ধতির (যেখানে আমি সেটআইন্টারওয়ালের প্রথম আর্গুমেন্ট হিসাবে একটি টেম্পলেট স্ট্রিং ব্যবহার করেছি) থেকে বাকি inder
লুক

2

পাওয়ারশেল , 124 117 বাইট

(ধন্যবাদ টিমমিডি )

for(){(-split'^(")v v(")^ ^(")^ v(")v (>")> <(")> <("<)')[($i=0..6|random)];sleep -m((100,200)[$i-gt3]*$args[0]);cls}

এটি অনলাইন চেষ্টা করুন! (এটি টিআইওতে কাজ করবে না ...)


আপনি $b117 এ নামতে সিউডো-টের্নারিটি সরিয়ে এবং ব্যবহার করতে পারেন - for(){(-split'^(")v v(")^ ^(")^ v(")v (>")> <(")> <("<)')[($i=0..6|random)];sleep -m((100,200)[$i-gt3]*$args[0]);cls}... আমার মনে হয় সংক্ষিপ্ততর সম্ভব; আমি এখনও তাকিয়ে আছি।
অ্যাডমবর্কবার্ক

আপনি কেবল আমাকে @ টিমিডি জামিন দিতে চলেছেন (ধন্যবাদ)! আমি মনে করি যে এই পরিবর্তনগুলি আপনার নিজের উত্তরটি পাওয়ার জন্য যথেষ্ট তাৎপর্যপূর্ণ; এটি আমার
কোডটিতে

না, এগুলি আপনার কোডটিতে কেবল ছোটখাটো টুইট। সামগ্রিক যুক্তি ঠিক একই। এইখানে পাবে.
অ্যাডমবর্কবার্ক

2

নুডেল , 67 বাইট বিহীন

ʠƘṣḳƑðẉḤż’ṀỴ(EḞ4ĊḌṀY%¤ĠẸG^ḞðxỌð
ḊḢðḞ’ṀḌcṀḌcİ8c¬ððɲḷṛḋʠṡʠạÇƥƥạƥḋʠ⁺µḍ

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

চেষ্টা করে দেখুন :)

কিভাবে এটা কাজ করে

                                                                     # Note: The input is immediately pushed onto the stack.
ʠ                                                                    # Moves the pointer for the top of the stack down one.
 ƘṣḳƑðẉḤż’ṀỴ(EḞ4ĊḌṀY%¤ĠẸG^ḞðxỌð                                      # Creates a string based off of the key "ƘṣḳƑðẉḤż" and the compressed text "ṀỴ(EḞ4ĊḌṀY%¤ĠẸG^ḞðxỌð" to create "^(")vðv(")^ð^(")^ðv(")vð(>")>ð<(")>ð<("<)" which then gets split by the null character "ð" to create an array of strings which gets pushed to the stack.
                               \n                                    # A new line to separate the literals.
                                 ḊḢðḞ’ṀḌcṀḌcİ8c¬ðð                   # Creates a string based off of the key "ḊḢðḞ" and the compressed text "ṀḌcṀḌcİ8c¬ðð" to create "100ð100ð100ð100ð200ð200ð200" which then gets split the same way as before.
                                                  ɲ                  # Turns each element in the array into a number creating the array of delays.
                                                   ḷ                 # Loops the rest of the code unconditionally.
                                                    ṛ                # Generates a random number from 0 to the length-1 of the array on top of the stack.
                                                     ḋ               # Duplicates the random number.
                                                      ʠ              # Moves the stack pointer down to save one of the random numbers for later.
                                                       ṡ             # Swap the array with the random number such that the array is on top again.
                                                        ʠ            # Moves the stack pointer down such that the random number is on top.
                                                         ạ           # Uses the random number to access the bird array which is now after the random number and pushes the element onto the stack.
                                                          Ç          # Clears the screen and pops the bird and pushes it to the screen.
                                                           ƥƥ        # Moves the stack pointer up two times such that the random number is the top.
                                                             ạ       # Use the random number to access the array with delays and pushes that item onto the stack.
                                                              ƥ      # Moves the stack pointer up in order to have the input on top.
                                                               ḋ     # Duplicates the users input.
                                                                ʠ    # Moves the stack pointer back down in order to have the user input on top followed by the random item from the delay array.
                                                                 ⁺µ  # This command pops two numbers off and multiplies them and pushes the result back on.
                                                                   ḍ # Pops off of the stack and uses that as a delay in milliseconds.

64 বাইট

এখানে এমন একটি সংস্করণ যা কোড স্নিপেট হিসাবে কাজ করে।

ʠƘṣḳƑðẉḤż’ṀỴ(EḞ4ĊḌṀY%¤ĠẸG^ḞðxỌð EAð¶’Ṁ|ṢĿ<h4¶¬ȥḷṛḋʠṡʠạÇƥƥạƥḋʠ⁺µḍ

<div id="noodel" code="ʠƘṣḳƑðẉḤż’ṀỴ(EḞ4ĊḌṀY%¤ĠẸG^ḞðxỌð EAð¶’Ṁ|ṢĿ<h4¶¬ȥḷṛḋʠṡʠạÇƥƥạƥḋʠ⁺µḍ" input="2" cols="5" rows="3"></div>

<script src="https://tkellehe.github.io/noodel/release/noodel-1.1.js"></script>
<script src="https://tkellehe.github.io/noodel/ppcg.min.js"></script>


1

পাইথন, 157 বাইট

import time,random;n,m=5,int(input())
while 1:print('(>")><(")><("<)^(")vv(")^^(")^v(")v'[n:n+5]);time.sleep((.1+(n<15)/10)*m);n=(n+random.randint(1,6)*5)%35

আমি চিকেন আসকি আর্ট ছাড়া এটি করার চেষ্টাও করেছি, তবে এটি দীর্ঘ ছিল।

import time,random;n,m=5,int(input())
while 1:
  print(['^v'[n%2]+'(")'+'v^'[0<n<3],''.join(map(chr,[40+20*(n>4),62-22*(n>4),34,41+19*(n>5),62-21*(n>5)]))][n>3])
  time.sleep((.1+(n>3)/10)*m);n=(n+random.randint(1,6))%7

1

রুবি, 97 + 1 = 98 বাইট

-nপতাকা থেকে +1 বাইট ।

a=1;loop{puts %w{^(")v <(")> v(")^ (>")> ^(")^ <("<) v(")v}[a];sleep$_.to_i*0.1*(1+a%2);a=rand 7}

1

ক্লোজার, 185 178 বাইট

+18 বাইট কারণ এটি শুরু হয়নি <(")>

-7 বাইট ইনলাইন করে birds, এবং এর থেকে মুক্তি পেয়ে let

#(loop[m nil r(or m 1)](print"\r"((clojure.string/split"(>\")> <(\")> <(\"<) ^(\")v v(\")^ ^(\")^ v(\")v"#" ")r))(flush)(Thread/sleep(*(if(> r 2)100 200)%))(recur 1(rand-int 7)))

পাখিগুলিকে কেবল ফাঁকা জায়গায় বিভক্ত করে, 0-6 থেকে একটি এলোমেলো সূচী বেছে নেয়, নির্বাচিত পাখিটি প্রদর্শন করে, তারপরে যদি নির্বাচিত সূচক 2 এর চেয়ে বেশি হয় তবে এটি 100 মিমি, অন্যথায় 200 মিমি অপেক্ষা করে।

ক্লোজারের সত্যিকার অর্থে কোরটিতে একটি স্ট্রিং splitপদ্ধতি দরকার ।

Ungolfed:

(defn dancing-bird [n]
  (loop [m nil]
    (let [birds (clojure.string/split "(>\")> <(\")> <(\"<) ^(\")v v(\")^ ^(\")^ v(\")v" #" ")
          rand-i (or m 1)]
      (print "\r" (birds rand-i))
      (flush)
      (Thread/sleep (* (if (> r 2) 100 200) n))
      (recur (rand-int 7)))))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.