রাশিয়ান রুলেট, রিলোডেড


32

আসুন রাশিয়ান রুলেট খেলি!

সাধারণত, এটি সংক্ষিপ্ততম এমওডি 6 প্রোগ্রাম লেখার জন্য দৌড় হবে, তবে এটি খুব বাস্তববাদী নয়, কারণ প্রতিটি ক্লিকের সাথে জয়ের সম্ভাবনা হ্রাস পায়। এখানে বিধি রয়েছে:

  1. একটি প্রকৃত ছয় শ্যুটার অনুকরণ করুন :
    • ছয়টি চেম্বারের মধ্যে একটিতে একটি বুলেট রাখা হয় এবং ব্যারেলটি একবার খেলার আগে কেবল কাটা হয়।
    • এন চেষ্টা করে হেরে যাওয়ার সুযোগটি 1/6।
    • এন চেষ্টা করার পরে হেরে যাওয়ার সুযোগটি 1 / (6-n)
    • আপনি হারাতে গ্যারান্টিযুক্ত, সর্বাধিক, 6 টি প্রচেষ্টা।
  2. হারানো:
    • পাঠ্য প্রদর্শন করুন *BANG!*
    • প্রোগ্রামটি শেষ করুন।
  3. বিজয়ী:
    • "জিততে" মানে বন্দুকটি গুলি চালায় না, তবে বুলেটটি হাতুড়ির কাছাকাছি একটি চেম্বার।
    • পাঠ্য প্রদর্শন করুন *click*
    • প্রোগ্রামটি শেষ করার দক্ষতার সাথে ব্যবহারকারীকে একটি "ট্রিগার" উপস্থাপন করুন (উদাহরণস্বরূপ "ctrl + c", নীচে দেখুন)।
  4. প্রোগ্রাম নির্দিষ্ট:
    • ট্রিগারটি টানতে প্রথম চেষ্টা সহ ব্যবহারকারী ইনপুটের কিছু ফর্ম। (এটি কী-স্ট্রোক হতে পারে, মাউস ক্লিক করুন, যাই হোক না কেন; পাঠ্যের অনুরোধের প্রয়োজন নেই)
    • প্রোগ্রামটি শেষ না হওয়া পর্যন্ত কেবলমাত্র একটি উদাহরণ অনুমোদিত is (প্রোগ্রামটির একটি নতুন উদাহরণ চালানো ব্যারেলকে একটি ভাল স্পিন দেওয়ার অনুরূপ, যেমন পরবর্তী ক্লিকে হেরে যাওয়ার সম্ভাবনাটি 1/6 এ পুনরায় সেট করা হয়েছে is)

সবচেয়ে কম কোড জয়!

লিডারবোর্ড


3
আপনার অনুমানগুলি ভুল - n চেষ্টা করে হেরে যাওয়ার সম্ভাবনা কেবল ⅙ যদি আপনি প্রতিটি শটের পরে বুলেটগুলিকে প্রশ্রয় দেন। হারানোর সম্ভাবনাটি হতাশ না হয়ে ⅙ প্রথম শটে, দ্বিতীয়টিতে ⅕, তৃতীয়টিতে ... 1 1-এ শেষ হয় 1 আপনি এটি "আপনি হারাতে পারবেন, সর্বাধিক, 6 টি প্রচেষ্টা" এর গ্যারান্টিযুক্ত সাথে এটি স্বীকৃত।
rhialto

2
@ ব্যবহারকারী 2956063 আপনি ভুলে যাচ্ছেন যে একটি (এন -1) / 6 সম্ভাবনা রয়েছে যা আপনি কখনই এন: তম চেষ্টা করে পৌঁছাতে পারবেন না এবং এভাবে হারাতে পারবেন না। তারা ইউনিফর্মের মধ্যে ভারসাম্য রাখে 1/6।
জ্যাকব রায়হলে

2
কম্পিউটার বিজ্ঞানী এবং পরিসংখ্যানবিদরা তখন সম্ভাব্যতা প্রকাশের ক্ষেত্রে এটির পার্থক্য হতে পারে - আমার কাছে "
নবম চেষ্টাটি

3
কেন এটি "রাশিয়ান রুলেট, রিলোডেড" শিরোনাম হয়নি?
হ্যান্ড-ই-ফুড

1
@ ব্যবহারকারী 2956063: আপনার সম্ভাবনাগুলি শর্তাধীন । পি (হারানো 2 শট 2) = ⅙, কিন্তু পি (শট 2 এ হারাবেন | শট 1 হারান না) = ⅕। এছাড়াও, n(অন্তর্নিহিতভাবে, আমি আপনাকে মঞ্জুর করব) [1,6] এর মধ্যে সীমাবদ্ধ, সুতরাং 100 আউট।
টিম পেডারিক

উত্তর:


3

পাইথ, 23 বাইট

VO6"*click*" w;"*BANG!*

সত্যিই সহজ। 0 - 5 এর এলোমেলো একটি সংখ্যার প্রদর্শন ক্লিক করুন এবং ইনপুট একটি লাইন অনুরোধ, শেষে একটি ঠুং ঠুং শব্দ পরে।


1
অভিশাপ!
সাইয়েস

+3 বাইট: শেষ স্ট্রিংটি হওয়া উচিত *BANG!*, নয়BANG
আয়ান

14

রুবি, 51 বাইট

[*['*click*']*rand(6),'*BANG!*'].map{|x|gets;$><<x}

Ungolfed:

[
  *(                        # Unwrap the following array into the outer one
    ['*click*'] * rand(6)   # An array of 0-5 clicks, see Array#*
  ),
  '*BANG!*'                 # The End
].map do |x| # Shortest way to iterate I was able to find
  gets       # Await input
  $> << x    # Shove the output string to `stdout`
end          # Return value is an array of several (0-5) `stdout`s. Who cares.

অথবা

(['*click*']*rand(6)<<'*BANG!*').map{|x|gets;$><<x}

উগলফুলিং পাঠকদের জন্য রওনা হয়েছে। এতটা কঠিন নয়

  • আবার, মার্টিনের কাছে কুডোস, প্রতিস্থাপন $><<হিসাবে এই কৌশলটির জন্য puts
  • নতুন লাইনগুলি আউটপুট দেয় না, তবে এটির প্রয়োজন ছিল না।
  • খাটো, সরল। প্রয়োজনীয় আচরণের সারাংশটি 0-5 ক্লিকগুলি করা এবং তারপরে ফায়ার করা। তার জন্য, আউটপুট অ্যারের ভিতরে জমা হয়।
  • যদি আউটপুটগুলি "*click*"ঠিক থাকে ( তবে শেষটি কী প্রিন্ট করা হয়) এর পরিবর্তে আরও 2 বাইট মুভ $><<করা যায় । এটি এখনও নিয়মগুলি অনুসরণ করবে কিনা তা আমি নিশ্চিত ছিলাম না।

68 64 বাইট

(অন্য পদ্ধতি)

[*0..5].shuffle.find{|x|gets;x<1||puts('*click*')};puts'*BANG!*'

আমি অ্যালগরিদমে খুব বেশি চিন্তাভাবনা রাখিনি (এটি সম্ভবত আরও কমপ্যাক্ট হতে পারে তবে এতটা পরিষ্কার নয়) তবে আমি এর অভ্যন্তরের মডেলটি সত্যিই পছন্দ করি:

  • একটি অ্যারে তার উপাদানগুলির সাথে চেম্বারের সামগ্রীগুলি সহ একটি ব্যারেল অনুকরণ করে। যেহেতু কেবল একটি উপাদান হ'ল বুলেট, তাই এটি ঘোরানো এবং এলোমেলো সমান।
  • 0একটি গুলি। অন্যান্য সংখ্যা নেই।
  • findপ্রথম রিটার্ন মান খুঁজে পায় যার জন্য ব্লকটিও falseনয় nil
  • ||এক্সপ্রেশন স্পষ্টভাবে ব্লক থেকে ফিরে আসে। এটা একটা শর্ট সার্কিট করে: এটা তার প্রথম প্রতীক ফেরৎ (যদি না এটা nilবা false) অথবা একটি দ্বিতীয় (অন্যথায়)। সুতরাং এটি হয় true(যদি x<1বা আরও স্পষ্ট তবে আরও দীর্ঘ হয় x == 0) বা এর ফেরতের মান puts, যখন ...
  • putsসর্বদা ফিরে আসে nil। হাঁ।
  • getsঅনুরোধ ইনপুট। কেবল আঘাত Enterযথেষ্ট।
  • Ctrl+ Cপ্রোগ্রামটি সমাপ্ত করে

ক্রস করা হয়েছে 64 স্বাভাবিক?
সাইয়েস

@ কিউস উহম ... হ্যাঁ হওয়া উচিত, সম্ভবত। এটি উপরের এন্ট্রি দ্বারা চালিত হয়েছে, তবে এটি একটি ভিন্ন ধারণার উপর ভিত্তি করে, তাই আমি তাদের ছেড়ে গিয়েছি crossed
ডি সাইড

এটি ছিল একটি শ্লেষ এই
Cyoce

@ কিউস ওহ, আমাকে ক্ষমা করুন, প্রথম পোস্ট এবং এগুলি, স্থানীয় শ্রম সম্পর্কে অবগত নন :)
ডি-সাইড

9

জাভাস্ক্রিপ্ট, 64 বাইট

for(i=6;i<7&&prompt();)alert(new Date%i--?"*click*":i="*BANG!*")

ব্যাখ্যা

ট্রিগারটি টানতে প্রম্পটে কোনও পাঠ্য প্রবেশ করুন। কিছুই প্রবেশ করুন বা বাতিল করতে ক্লিক করুন সমাপ্তি।

for(
  i=6;             // i = number of chambers
  i<7              // i equals "*BANG!*" (not less than 7) if we lost
    &&prompt();    // see if we should do another shot
)
  alert(           // alert the result
    new Date%i--   // use the current time in milliseconds as a random number, this is safe
                   //     to use because the gap between shots is greater than i (max 6ms)
      ?"*click*"   // on win pass "*click*" to alert
      :i="*BANG!*" // on lose alert "*BANG!*" and set i to not less than 7
  )

"*Bang!*"NaN
than-এর

@ বার্গি এটি সত্য। আমি এটিকে কিছুটা পরিষ্কার করার জন্য ব্যাখ্যাটি দিয়েছি।
ব্যবহারকারী 81655

6
কেবলমাত্র জাভাস্ক্রিপ্টে বার্গি এই বিবৃতিটি বোধগম্যতার কাছাকাছি এসে গেছে।
মাইক দ্য লাইয়ার

7

লুয়া, 82 75 বাইট

বেশ লম্বা, তবে লুয়াতে প্রচুর ভারবোস রয়েছে।

for a=math.random(6),1,-1 do io.read()print(a>1 and"*click*"or"*BANG!*")end

6

ল্যাবভিউ, 46 ল্যাবভিউ পুরষ্কার

0 এবং 1 এর একটি অ্যারে তৈরি করে, ক্লিকগুলির জন্য অপেক্ষা করতে একটি লুপ থাকে এবং স্ট্রিং আউটপুট দেয়। এটি প্রথমে ব্যাংকে বলেছে যে আমি সূচকটি শুরু করার আগে পুনরায় সেট করতে ভুলে গিয়েছিলাম।

এছাড়াও নোট করুন যে এটি একটি জিআইএফ, যদি আপনার জন্য বাজানো / লোড না করে থাকে তবে পৃষ্ঠাটি আবার খুলুন।


"*click*"বন্দুক গুলিবিদ্ধ না হওয়ার ক্ষেত্রে আপনি কোথায় আউটপুট করেন তা আমি দেখতে পাই না। এছাড়াও, এটি আউটপুট "bang"বা না "*BANG!*"?
কাটেনকিও

এটি একটি জিআইএফ হওয়া উচিত তবে আমার জন্য এটি খেলে না, সমস্যা হতে পারে। এবং হ্যাঁ এটি কেবল
ঠেলাঠেলি করে, এটিই

বোকা আমাকে শুরু করার আগে স্ট্রিংটি খালি
পুনরায় পুনঃনির্বিয়োগ

কোনও সমস্যা নেই, আমি এখন
জিআইএফটি

5

পাইথ, 31 30 28 বাইট

FN.S6 EI!N"*BANG!*"B"*click*

প্রায় অবশ্যই উন্নতি করা যেতে পারে। ট্রিগারটি টানতে যে কোনও নম্বর ইনপুট করুন, তাড়াতাড়ি শেষ করতে ফাঁকা ইনপুট (ত্রুটি সহ)।

ব্যাখ্যা:

FN                               for N in...
  .S6                            shuffle(range(6))...
      E                          get a line of input
       I!N                       if N is falsy (i.e. 0)
          "*BANG!*"              implicit output
                   B             break
                    "*click*     else, print click

আপনার প্রথমটি আসলে খাটো, আপনার চলার দরকার নেই "
FryAmTheEggman

@ ফ্রাইএইমডিজম্যান ওহ, ঠিক আছে, সে সম্পর্কে ভুলে গেছি। ধন্যবাদ!
Doorknob

এছাড়াও, আমি সবেমাত্র কিছু লক্ষ্য করেছি, FN<any>এখনও সম্পূর্ণরূপে অভিন্ন V<any>, এটি সম্ভবত নতুন গল্ফারদের বিভ্রান্ত না করার জন্য পরিবর্তন করা উচিত ...: পি
ফ্রাইআম দ্য এজিগম্যান

1
আপনি কেবল চরগুলি সরাতে পারেন .?। কোন প্রয়োজন নেই else
জাকুব

@ ফ্রাইআম দ্য এজম্যান বিভ্রান্তিকর লোকেরা দুর্দান্ত। স্ক্রাবগুলি ফিল্টার করে আশ্চর্যজনক হতে পারে ।
সাইয়েস

5

গুরুতরভাবে, 27 25 বাইট

"*BANG!*"6J"*click*"nW,X.

কোনও অনলাইন লিঙ্ক নেই কারণ পাইপযুক্ত ইনপুট সহ প্রম্পট করার কোনও উপায় নেই। প্রোগ্রামটি যেকোন সময় সিটিআরএল-সি হতে পারে মুরগির বাইরে যাওয়ার জন্য ।

ব্যাখ্যা:

"*BANG!*"6J"*click*"nW,X.
"*BANG!*"                  push "*BANG!*"
         6J                push a random integer in [0,6) (n)
           "*click*"n      push "*click*" n times
                     W     while loop (implicitly closed at EOF):
                      ,X.    get input and discard, pop and print top of stack

4

পিএইচপি, 52 বাইট

*<?=$n=&rand(0,6-$argi)?click:"BANG!*";$n||@\n?>*

-Fতিনটি হিসাবে গণনা করা কমান্ড লাইন বিকল্পের প্রয়োজন । ট্রিগার টিপে টানা হয় Enter

কারণ -Fআক্ষরিকভাবে প্রতিটি ইনপুট জন্য স্ক্রিপ্ট আবার চালায় (আমি আপনাকে ছাগল না), dieএবং পছন্দটি আসলে শেষ হবে না, সুতরাং এর পরিবর্তে আমরা চাপা রানটাইম ত্রুটির মাধ্যমে প্রস্থান করব @\n,।


নমুনা ব্যবহার

$ php -F primo-roulette.php

*click*
*click*
*BANG!*
$

4

পার্ল 5, 43 বাইট

সাথে চালাও perl -p। স্থির বুলেট বৈকল্পিক - বুলেট অবস্থান খুব প্রথম দিকে একবারেই সিদ্ধান্ত নেওয়া হয়।

$i//=0|rand 6;$_=$i--?'*click*':die'*BANG*'

নিস! আপনি যেহেতু ব্যবহার করছেন তাই আমি শিরোনামটি "পার্ল ৫.১০+" তে পরিবর্তন করব //=। এছাড়াও, করতে ভুলবেন না গণনা -pআপনার স্কোর মধ্যে
এইসুইটসআইবলাকনট

4

সি, 110 74 72 বাইট

ডেনিসকে বাইটস অন্তর্ভুক্ত এবং অনেক কম বর্ধনের জন্য ধন্যবাদ।

main(r){for(r=time(0)%6;getchar(),r--;)puts("*click*");puts("*BANG!*");}
main(r)
{
    for(r=time(0)%6;getchar(),r--;)
        puts("*click*");
    puts("*BANG!*");
}

3

ক্যান্ডি , 36 বাইট

প্রায় অর্ধেক প্রোগ্রামটি প্রিন্ট করার পাঠ্য :(

:6H_(=b"*click*"(;):=)"*BANG!*\n"(;)

দীর্ঘ ফর্ম:

getc
digit6 rand range0  # build a range from 0 .. rand#
while
  popA              # these are the *click* instances  
  stack2
  "*click*"
  while
    printChr
  endwhile
  getc
  popA
endwhile
"*BANG!*\n"         # out of luck
while
  printChr
endwhile

3

পাইথন 3, 95 বাইট

পাইথন 3 এও আমার প্রথম গল্ফ প্রচেষ্টা, আমি ব্রুসকে কসম খেয়েছি এবং আমি একই ব্যক্তি নই।

from random import*
for a in range(randint(0,5)):input();print("*click*")
input();print("*bang*")

Ungolfed:

from random import*
for a in range(randint(0,5)):
    input()
    print("*click*")
input()
print("*bang*")

0 এবং 5 সহ অন্তর্ভুক্ত একটি এলোমেলো সংখ্যা তৈরি করুন, প্রিন্ট ক্লিক করুন যে বহু বার, তারপরে ব্যাং মুদ্রণ করুন । ট্রিগারটি টানতে এন্টার / রিটার্ন টিপুন।


ব্রুসের উদাহরণ অনুসরণ করে আপনি কয়েকটি বাইট সংরক্ষণ করতে পারবেনfrom random import*
wnnmaw

আমি আর কিছু মিস করছি না যদি না তা সঞ্চয়ের এক বাইট। তবে আমি নেব! ধন্যবাদ!
স্টিভ একার্ট

দুর্দান্ত চেষ্টা, আমি আপনার অজগর 2 সমাধানের অনুপ্রেরণা হিসাবে আপনার সমাধানটি ব্যবহার করেছি bas
বেসিল-হেনরি


2

ইমাস লিস্প, 94 89 বাইট

(set'b(%(random)6))(dotimes(a(+ b 1))(read-string"")(message(if(eq a b)"BANG""*click*")))

Ungolfed:

(set 'b (% (random) 6))
(dotimes (a (+ b 1))
  (read-string"")
  (message (if (eq a b) "BANG" "*click*")))

2

আর, 86 80 77 বাইট

যথারীতি, আর-র কোড গল্ফিংয়ের জন্য দুর্দান্ত বৈশিষ্ট্য রয়েছে তবে ফাংশনটির নাম লুওউওং।

sapply(sample(0:5),function(n){!n&&{cat('*BANG!*');q()};readline('*click*')})

2

পাইথন 2, 108 104 102 100 98 বাইট

গল্ফ করার আমার প্রথম প্রচেষ্টা:

from random import*
a=[1]+[0]*5
shuffle(a)
for i in a:input();print("*click*","*BANG!*")[i];" "[i]

হতে পারে আমার যুক্ত করা উচিত যে আপনি হেরে গেলে প্রোগ্রামটি সঠিকভাবে শেষ হবে না , এটি কেবল একটি ব্যতিক্রম ছুঁড়ে ফেলেছে (যার ফলে সমাপ্তির ফলস্বরূপ):

Traceback (most recent call last):
  File "russian_roulette.py", line 4, in <module>
    for i in a:input();print("*click*","*BANG!*")[i];" "[i]
IndexError: string index out of range

প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম! আপনি যখন কোনও কোড গল্ফ উত্তর পোস্ট করেন, দয়া করে ভাষার নাম এবং বাইট গণনা অন্তর্ভুক্ত করুন (আমি এটি এখানে আপনার সম্পাদনা করেছি)। ধন্যবাদ!
প্রোগ্রামফক্স

হ্যাঁ, অনেক ধন্যবাদ! আমি আসলে সমস্যাটি সমাধান করার চেষ্টা করছিলাম, আপনি করার আগে এটি সঠিকভাবে সম্পাদনা করতে পেলাম না।
ბიმო

আমি আপনার বাইট গণনা 112 হিসাবে পেয়েছি , আপনি কি ব্যবহার করেছেন?
wnnmaw

এছাড়াও, আপনি 2 বাইটগুলি বাঁচাতে পারবেনa=shuffle([1,0,0,0,0,0])
wnnmaw

1
আমি যতদূর জানি সাফল্য অন্তর্নিহিত ডেটা কাঠামো পরিবর্তন করে এবং কোনও কিছুই ফেরায় না। আমি চেষ্টা করেছিলাম, যাইহোক ধন্যবাদ। শিরোনাম (ভাষা এবং বাইট গণনা) প্রোগ্রামফক্স লিখেছিল। তবে আমি যখন wcএটি ব্যবহার করি তখন আমাকে 109 দেয় যা একটি খুব বেশি, তাই এটি ঠিক। আপনি কিভাবে গণনা করবেন?
ბიმო

2

পার্ল 5, 40 বাইট

<>,print"*$_*"for(click)x rand 5,'BANG!'

কমান্ড লাইন অপশন ছাড়াই চালাও, ট্রিগারটি টিপে টানুন Enter


2

পাইথন, 81 বাইট

import time
for i in["*click*"]*(int(time.time())%6)+["*BANG!*"]:input();print(i)

রুবি (51) এবং পাইথন সমাধান দ্বারা অনুপ্রাণিত


1

কমন লিস্প, 109

(do(g(b(nthcdr(random 6)#1='(t()()()()() . #1#))))(g)(read-char)(princ(if(setf g(pop b))"*BANG!*""*click*")))

খুব প্রতিযোগিতামূলক নয়, তবে আমি বিজ্ঞপ্তি তালিকা পছন্দ করি:

(do (;; auxiliary variable x
     x
     ;; initialize infinite barrel, rotate randomly
     (b (nthcdr (random 6) #1='(t()()()()() . #1#))))

    ;; we end the loop when x is T (a bullet is fired)
    (x)

  ;; press enter to shoot
  (read-char)

  ;; pop from b, which makes b advance down the list. The popped value
  ;; goes into x and is used to select the appropriate string for
  ;; printing.
  (princ
   (if (setf x(pop b))
       "*BANG!*"
       "*click*")))

1

পার্ল 5, 43 বাইট

42 বাইট + -pকমান্ড লাইন বিকল্প। enterট্রিগার করতে কেবল টিপুন ।

$_=0|rand 7-$.<++$i?die"*BANG!*":"*click*"

তার সহায়তার জন্য ডম হেস্টিংসকে ধন্যবাদ! আসল উত্তরটি ছিল 67 বাইট:

$i++;$a=$i>=int(rand(6));print$_=$a?'*BANG!*':'*click*';last if($a)

আসলে সমস্যাটি -pছিল এটি শেষ printবিবৃতিটি কল করার আগে এটি প্রস্থান করবে , কেন তা নিশ্চিত নয়। আমি চেষ্টা করেছি। এটি ব্যতীত, দুর্দান্ত পরামর্শ, ধন্যবাদ! আমার জ্ঞান বাড়তে থাকে ...
কোডফুন 64

@ ডোমহাস্টিংস এছাড়াও, দুর্ভাগ্যক্রমে, কোনও কারণে 0|কৌশলটি প্রত্যাশার মতো কাজ করে নি, তবে আমি এর প্রিন্ট স্টেটমেন্ট এবং আপনার পরামর্শ মতো শেষ বিবৃতিটি বন্ধ করে দিয়েছিলাম। এখন কেমন লাগছে?
কোডফুন 64

@ ডোমহাস্টিংস ড্যাম, আপনি ভাল আছেন। আমি এটিকে আপনার নিজের উত্তর হিসাবে রাখার পরামর্শ দিচ্ছি, যেহেতু আপনি অবশ্যই আমার চেয়ে একটি ছোট প্রোগ্রাম লিখেছেন (আমার আসল 67 এর তুলনায় আপনার 40 বাইট রয়েছে!)
কোডফুন 64

আমি ব্যাখ্যা প্রশংসা করি! আমার প্রিয় স্ক্রিপ্টিং ভাষা আরও শিখতে সর্বদা খুশি! প্রিফেক্স ইনক্রিমেন্টিংয়ের কথা আমি কখনও জানতাম না, এটি দুর্দান্ত। ধন্যবাদ :)
কোডফুন 64

আপনি খুব স্বাগত, সাহায্য করে খুশি!
ডম হেস্টিংস

1

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

6Yr`j?t@=?'*BANG!*'DT.}'*click*'DT]}T.]]x

ট্রিগারটি টানতে একটি ফাঁকা স্ট্রিং (যেমন 'try') ইনপুট করুন ।

শেষ করতে, একটি খালি স্ট্রিং ইনপুট করুন

উদাহরণ

এই ক্ষেত্রে ট্রিগারটি একবার টানা হয়েছিল এবং ... দুর্ভাগ্য:

>> matl
 > 6Yr`j?t@=?'*BANG!*'DT.}'*click*'DT]}T.]]x
 > 
> try
*BANG!*

এই ক্ষেত্রে দুটি ভাগ্যবান টানা পরে ব্যবহারকারী থামিয়ে (চূড়ান্ত খালি ইনপুটটি নোট করুন):

>> matl
 > 6Yr`j?t@=?'*BANG!*'DT.}'*click*'DT]}T.]]x
 > 
> try
*click*
> try
*click*
> 

ব্যাখ্যা

6Yr                  % random avlue from 1 to 6    
`                    % do...while  
  j                  % input string
  ?                  % if nonempty
    t                % duplicate the orignal random value
    @                % loop iteration index  
    =                % are the equal?
    ?                % if so             
      '*BANG!*'D     % display string
      T.             % unconditional break                                     
    }                % else
      '*click*'D     % display string
      T              % true value, to go on with do...while loop
    ]                % end if               
  }                  % else                                                    
    T.               % unconditional break
  ]                  % end                                                     
]                    % end                                                     
x                    % delete original random value


1

পাইথন 2, 88 84 বাইট

ইতিমধ্যে প্রদত্ত পাইথন 3 সমাধান দ্বারা এই সমাধানটি অনুপ্রাণিত হয়। আমি মুদ্রণ বন্ধনী সরাতে পাইথন 2 বেছে নিয়েছি যদিও এটি ইনপুট () এর আচরণ পরিবর্তন করে।

import time
for i in[0]*int(time.time()%6)+[1]:input();print("*click*","*BANG!*")[i]
  • আমি সময়ের মডুলোটিকে এলোমেলো ফাংশন হিসাবে ব্যবহার করছি (রাশিয়ান রুলেটের জন্য যথেষ্ট ভাল)
  • প্লেয়ার ইনপুটটি "আই" হওয়া উচিত তারপরে প্রবেশ করুন (অন্যথায় ইনপুট () একটি ত্রুটি নিক্ষেপ করবে), এই কৌশলটি নির্ভর করে যে ইনপুটটি "যাই হোক না কেন" হতে পারে on

1

রুবি, 45 + 1 = 46

ডি-সাইডের মতো চালাক নয় তবে কিছুটা খাটো।

কমান্ড-লাইন পতাকা সহ p, চালান

rand(7-$.)<1?(puts'*BANG*';exit):$_='*click*'

ব্যবহারকারী রিটার্ন দিয়ে ট্রিগারটি টানতে পারে এবং নিয়ন্ত্রণ-সি দিয়ে ছেড়ে যেতে পারে। pপ্রোগ্রামটি একটি লুপে চালিত করে, STDIN এবং আউটপুট থেকে লাইন পড়ছে $_। প্রতিবার এটি চলমান, এটি বৃদ্ধি $.। সুতরাং প্রথম রানটিতে এটি 6, তারপরে 5, তারপরে 4 এবং এর চেয়ে কম কম এলোমেলো ধনাত্মক পূর্ণসংখ্যার পছন্দ করে। প্রথম 0 এ, আমরা ম্যানুয়ালি আউটপুট এবং প্রস্থান করি, ততক্ষণ পর্যন্ত আমরা স্পষ্টভাবে আউটপুট পাই না।

(এবং এখন আমি লক্ষ্য করেছি যে ইতিমধ্যে একটি খুব অনুরূপ পার্ল রয়েছে Oh ওহ ভাল।)


1

পার্ল 5, 69 51 49 বাইট

map{<>;print"*click*"}1..rand 6;<>;print"*BANG!*"

সম্ভবত আরও কিছু গল্ফ করার সম্ভাবনা রয়েছে, আমি এটি খতিয়ে দেখব।

পরিবর্তন করুন:

  • 8 টি বাইটগুলি সরিয়ে $lকিছু সেমিকোলন এবং 10 টি বাইট পরিবর্তন করে সংরক্ষণ করা <STDIN>হয়েছে<>
  • ওলেগ ভি। ভলকভকে 2 বাইট সংরক্ষণ করা হয়েছে

1
49:map{<>;print"*click*"}1..rand 6;<>;print"*BANG!*"
ওলেগ ভি। ভলকভ

@ ওলেগভি.ভলকভ ধন্যবাদ! আমি এখনই এটি সম্পাদনা করব।
ASCIIThenANSI

0

ভিবিএ, 126 বাইট

ন্যূনতম বাইটসের জন্য গল্ফ সংস্করণ

Sub S()
r=Int(5*Rnd())
e:
a=MsgBox("")
If a=1 Then: If i=r Then MsgBox "*BANG!*" Else: MsgBox "*click*": i=i+1: GoTo e
End Sub

ফান সংস্করণ যা বর্ধিত ব্যবহারকারীদের গ্রহণযোগ্যতার জন্য বোতামগুলি আরও পরিষ্কার করে।

Sub RR()
r = Int(5 * Rnd())
e:
a = MsgBox("Are you Feeling Lucky?", 4)
If a=6 Then: If i=r Then MsgBox "*BANG!*", 16 Else: MsgBox "*click*", 48: i=i+1: GoTo e
End Sub

কাস্টম ফর্মগুলির সাথে কিছু মজা এবং আপনি ভিবিএতে একটি দুর্দান্ত স্লিক গেম তৈরি করতে পারেন।


0

এপিএল, 39/65 বাইট

{⍞⊢↑⍵:⍞←'*BANG*'⋄∇1↓⍵⊣⍞←'*click*'}6=6?6

খুব সোজা উত্তর।


দুটি বাইট গণনা মানে কি?
মেগো

0

সি, 180 বাইট

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){srand(time(NULL));int r,i=6;while(i!=1){getchar();r=rand()%i;if(r){puts("CLICK");}else{puts("BANG");exit(0);}i--;}}

কোড গল্ফে আমার প্রথম প্রচেষ্টা, উন্নতির জন্য সম্ভবত অনেক জায়গা আছে :)


0

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

b=rand(1:6);while b>0 readline();print(b>1?"*click*":"*BANG!*");b-=1end

প্রেস Enterআগুন বা Ctrl+ + Cপ্রস্থান করার জন্য। শেষেরটি একটি দিয়ে শেষ হয় InterruptException

Ungolfed:

# Set an initial bullet location
b = rand(1:6)

while b > 0
    # Read user input
    readline()

    # Check the location
    if b > 1
        print("*click*")
    else
        print("*BANG!*")
    end

    b -= 1
end

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