Roulette Nga, đã tải lại


32

Hãy chơi Roulette Nga!

Thông thường, đây sẽ là một cuộc đua để viết chương trình MOD 6 ngắn nhất, nhưng điều đó không thực tế lắm, vì cơ hội chiến thắng giảm dần sau mỗi lần nhấp. Đây là các quy tắc:

  1. Giả lập một game bắn súng sáu thực sự :
    • Một viên đạn được đặt vào một trong sáu khoang và nòng súng được quay một lần, chỉ trước khi chơi.
    • Cơ hội thua trong lần thử thứ n là 1/6.
    • Cơ hội thua sau n lần thử là 1 / (6-n)
    • Bạn được đảm bảo để thua, nhiều nhất là 6 lần thử.
  2. Mất:
    • Hiển thị văn bản *BANG!*
    • Chấm dứt chương trình.
  3. Chiến thắng:
    • "Chiến thắng" có nghĩa là súng không bắn, nhưng viên đạn là một khoang gần búa hơn.
    • Hiển thị văn bản *click*
    • Trình bày "trình kích hoạt" cho người dùng, cùng với khả năng chấm dứt chương trình (ví dụ: "ctrl + c", xem bên dưới).
  4. Chương trình cụ thể:
    • Kéo cò là một số dạng đầu vào của người dùng, bao gồm cả lần thử đầu tiên. (Đây có thể là một tổ hợp phím, nhấp chuột, bất cứ điều gì; không cần phải nhắc văn bản.)
    • Chỉ một trường hợp của chương trình được cho phép cho đến khi nó bị chấm dứt. (Chạy một phiên bản mới của chương trình gần giống như giúp thùng quay tốt, tức là xác suất thua trong lần nhấp tiếp theo được đặt lại thành 1/6.)

Mã ngắn nhất sẽ thắng!

Bảng xếp hạng


3
Giả định của bạn là sai - cơ hội thua trong lần thử thứ n chỉ là ⅙ nếu bạn hô hấp viên đạn sau mỗi phát bắn. Không có cơ hội thua cuộc là ở lần bắn đầu tiên, vào lần thứ hai, vào lần thứ ba ... kết thúc bằng 1 vào ngày 6. Bạn nhận ra điều này với "Bạn được đảm bảo để thua, nhiều nhất là 6 lần thử".
rhialto

2
@ user2956063 bạn đang quên rằng có một cơ hội (n-1) / 6 mà bạn không bao giờ đạt được lần thử thứ n, và do đó không thể mất. Họ cân bằng ra đồng phục 1/6.
Jacob Raihle

2
có lẽ đó là một sự khác biệt trong cách các nhà khoa học và thống kê máy tính thể hiện xác suất khi đó - với tôi "Cơ hội thua trong lần thử thứ n là ⅙" nói rằng đó là hằng số - cho dù là 1 hay 100.
rhialto

3
Tại sao điều này không có tiêu đề "Russian Roulette, Tải lại"?
Thực phẩm điện tử

1
@ user2956063: Xác suất của bạn là có điều kiện . P (thua ở lần bắn 2) =, nhưng P (thua ở lần bắn 2 | không thua ở lần bắn 1) =. Ngoài ra, n(ngầm, tôi sẽ cấp cho bạn) giới hạn ở [1,6], vì vậy 100 đã hết.
Tim Pederick

Câu trả lời:


3

Bình thường, 23 byte

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

Thực sự đơn giản. Một số lần lặp ngẫu nhiên 0 - 5 lần nhấp hiển thị và yêu cầu một dòng đầu vào, theo sau là một tiếng nổ ở cuối.


1
chết tiệt, pyth!
Cyoce

+3 byte: chuỗi cuối cùng phải là *BANG!*, không phảiBANG
ayane

14

Ruby, 51 byte

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

Ung dung:

[
  *(                        # 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.

hoặc là

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

Ungolfing để lại cho độc giả. Không khó lắm

  • Một lần nữa, thanh danh cho Martin, lần này cho một thủ thuật với $><<như một putssự thay thế.
  • Không xuất ra dòng mới, nhưng điều đó là không bắt buộc.
  • Càng ngắn, càng đơn giản. Ý chính của hành vi cần thiết là thực hiện 0-5 lần nhấp và sau đó kích hoạt. Cho rằng, đầu ra được tích lũy bên trong mảng.
  • Có thể xóa thêm 2 byte nếu đầu ra như thế "*click*"là ổn (cuối cùng những gì được yêu cầu được in), bằng cách thay thế $><<bằng . Tôi không chắc chắn nếu điều này vẫn tuân theo các quy tắc.

68 64 byte

(Cách tiếp cận khác)

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

Tôi đã không suy nghĩ nhiều về thuật toán (nó có thể thậm chí còn nhỏ gọn hơn, nhưng không rõ ràng lắm), nhưng tôi thực sự thích mô hình bên trong nó:

  • Một mảng mô phỏng một cái thùng với các thành phần của nó là nội dung của các buồng. Vì chỉ có một yếu tố là một viên đạn, xoay nó và xáo trộn nó là tương đương.
  • 0là một viên đạn. Những con số khác thì không.
  • findtìm thấy một giá trị trả về đầu tiên mà khối này falsecũng không nil.
  • ||-expression được ngầm trả lại từ khối. Đó là một mạch ngắn: nó trả về toán hạng đầu tiên của nó (trừ khi nó nilhoặc false) hoặc một thứ hai (nếu không). Vì vậy, nó trả về true(nếu x<1hoặc, rõ ràng hơn nhưng dài hơn x == 0) hoặc giá trị trả về của puts, trong khi ...
  • putsluôn luôn trở về nil. Vâng.
  • getsyêu cầu đầu vào. Chỉ đánh Enterđủ là đủ.
  • Ctrl+ Cchấm dứt chương trình

Vượt qua 64 là 64 bình thường?
Cyoce

@Cyoce uhm ... vâng. Có lẽ nên. Nó đã bị áp đảo bởi mục trên, nhưng nó dựa trên một ý tưởng khác, vì vậy tôi đã bỏ chúng, bỏ qua.
D-side

đó là một cách chơi chữ này
Cyoce

@Cyoce oh, xin lỗi, bài đăng đầu tiên và tất cả những thứ đó, không biết về truyền thuyết địa phương :)
D-side

9

JavaScript, 64 byte

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

Giải trình

Để kéo cò, nhập bất kỳ văn bản nào vào dấu nhắc. Nhập không có gì hoặc bấm hủy bỏ để chấm dứt.

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!*"không lớn hơn 7. Nhưng NaNkhông nhỏ hơn 7.
Bergi

@Bergi Đó là sự thật. Tôi viết lại lời giải thích để làm cho nó rõ ràng hơn một chút.
dùng81655

6
@Bergi chỉ trong Javascript, câu nói đó thậm chí còn gần với ý nghĩa.
MikeTheLiar

7

Lua, 82 75 byte

Khá dài, nhưng có nhiều dài dòng trong lua.

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

6

LabVIEW, 46 LabVIEW Nguyên thủy

Tạo một mảng 0 và 1, có một vòng lặp để chờ nhấp và xuất chuỗi. Nó ban đầu nói BANG becuase tôi quên đặt lại chỉ báo trước khi bắt đầu nó.

Cũng lưu ý rằng đây là gif, nếu không phát / tải cho bạn, vui lòng mở lại trang.


Tôi không thấy bạn làm đầu ra "*click*"trong trường hợp súng không bắn. Ngoài ra, nó đầu ra "bang"hay "*BANG!*"?
Katenkyo

Đây phải là một gif nhưng đối với tôi nó không chơi, đó có thể là vấn đề. Và vâng, nó chỉ gây tiếng vang, đó là tôi không đọc đúng, tôi thay đổi điều đó trong một giây
Eumel

thật ngu ngốc khi tôi quên sắp xếp lại chuỗi thành trống trước khi bắt đầu để đó là lý do tại sao nó hiển thị BANG khi bắt đầu ...
Eumel

Không vấn đề gì, tôi đã thấy gif bây giờ, có vẻ như nó hoạt động khá tốt :)
Katenkyo

5

Pyth, 31 30 28 byte

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

Hầu như chắc chắn có thể được cải thiện. Nhập bất kỳ số nào để bóp cò, đầu vào trống để kết thúc sớm (có lỗi).

Giải trình:

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

Cái đầu tiên của bạn thực sự ngắn hơn, bạn không cần theo dõi ".
FryAmTheEggman

@FryAmTheEggman Ồ, phải rồi, quên mất điều đó. Cảm ơn!
Doorknob

Ngoài ra, tôi vừa nhận thấy một điều ngớ ngẩn, FN<any>vẫn hoàn toàn giống hệt V<any>, có lẽ nên thay đổi để không gây nhầm lẫn cho những người chơi gôn mới ...: P
FryAmTheEggman

1
Bạn chỉ có thể loại bỏ các ký tự .?. Không cần cho một else.
Jakube

@FryAmTheEggman gây nhầm lẫn cho mọi người là tuyệt vời. Nó có thể là tuyệt vời trong việc lọc ra các tẩy tế bào chết .
Cyoce

5

Nghiêm túc, 27 25 byte

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

Không có liên kết trực tuyến vì không có cách nào để thực hiện một dấu nhắc với đầu vào đường ống. Chương trình này có thể được tổ hợp phím CTRL-C'd bất cứ lúc nào để gà ra chấm dứt.

Giải trình:

"*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

PHP, 52 byte

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

Yêu cầu -Ftùy chọn dòng lệnh, được tính là ba. Kích hoạt được kéo bằng cách nhấn Enter.

Bởi vì theo -Fnghĩa đen là chạy lại tập lệnh cho mọi đầu vào (Tôi không phải là bạn) dievà tương tự sẽ không thực sự chấm dứt, vì vậy chúng tôi thoát qua lỗi thời gian chạy bị chặn @\n.


Sử dụng mẫu

$ php -F primo-roulette.php

*click*
*click*
*BANG!*
$

4

Perl 5, 43 byte

Chạy với perl -p. Biến thể đạn ổn định - tức là vị trí đạn chỉ được quyết định một lần ngay từ đầu.

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

Tốt đẹp! Tôi sẽ thay đổi tiêu đề thành "Perl 5.10+", vì bạn đang sử dụng //=. Ngoài ra, đừng quên tính -pđiểm của bạn .
ThisSuitIsBlackNot

4

C, 110 74 72 byte

Cảm ơn Dennis vì đã loại bỏ bao gồm và rất ít byte.

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

Kẹo , 36 byte

Khoảng một nửa chương trình là văn bản cần in ra :(

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

dạng dài:

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

Python 3, 95 byte

Đây cũng là lần chơi gôn đầu tiên của tôi, cũng trong Python 3. Tôi thề Bruce và tôi không phải là cùng một người.

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

Ung dung:

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

Tạo ra một số ngẫu nhiên giữa 0 và 5 bao gồm, in nhấp nhiều lần, sau đó in tiếng nổ . Nhấn enter / return để kéo cò.


Theo ví dụ của Bruce, bạn có thể lưu một vài byte vớifrom random import*
wnnmaw

Trừ khi tôi còn thiếu thứ gì khác, đó là một byte tiết kiệm. Nhưng tôi sẽ lấy nó! Cảm ơn!
Steve Eckert

Nỗ lực tuyệt vời, tôi đã sử dụng giải pháp của bạn như một nguồn cảm hứng cho giải pháp python 2 của mình ^^
basile-henry

3

PlatyPar , 26 25 byte

6#?;wT"*click*"O;"*BANG!*

Giải trình:

6#?;                        ## random integer [0,6)
    w           ;           ## while stack.last
     T                      ## stack.last--
      "*click*"O            ## alert "*click*"
                 "*BANG!*   ## alert "*BANG!*"

Hãy thử trực tuyến !


2

Emacs Lisp, 94 89 byte

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

Ung dung:

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

2

R, 86 80 77 byte

Như thường lệ, R có các tính năng tuyệt vời để mã hóa golf nhưng tên hàm looooooong.

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

2

Python 2, 108 104 102 100 98 byte

Nỗ lực đầu tiên của tôi khi chơi golf:

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

Có lẽ tôi nên thêm rằng chương trình không kết thúc chính xác khi bạn thua, nó chỉ đưa ra một ngoại lệ (dẫn đến kết thúc):

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

Chào mừng bạn đến với Câu đố lập trình & Code Golf! Khi bạn đăng một câu trả lời golf mã, vui lòng bao gồm tên ngôn ngữ và số byte (tôi đã chỉnh sửa nó cho bạn ở đây). Cảm ơn!
Chương trìnhFOX

Vâng, cảm ơn rất nhiều! Tôi thực sự đã cố gắng giải quyết vấn đề đó, đã không chỉnh sửa nó một cách chính xác trước khi bạn làm.
16/12/15

Tôi nhận được số byte của bạn là 112, bạn đã sử dụng cái gì?
wnnmaw

Ngoài ra, bạn có thể lưu 2 byte bằng cách thực hiệna=shuffle([1,0,0,0,0,0])
wnnmaw

1
Theo như tôi biết, shuffle thay đổi cấu trúc dữ liệu cơ bản và không trả về bất cứ thứ gì. Tôi đã thử nó, cảm ơn dù sao đi nữa. Dòng tiêu đề (ngôn ngữ và số byte) được viết bởi ProgramFOX. Nhưng khi tôi sử dụng, wcnó mang lại cho tôi 109 cái nào quá nhiều, vì vậy nó đúng. Bạn đếm như thế nào?
16/12/2015

2

Perl 5, 40 byte

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

Chạy mà không có tùy chọn dòng lệnh, kích hoạt được kéo bằng cách nhấn Enter.


2

Python, 81 byte

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

lấy cảm hứng từ các giải pháp Ruby (51) và Python


1

Lisp thường gặp, 109

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

Không cạnh tranh lắm, nhưng tôi thích danh sách thông tư:

(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

Perl 5, 43 byte

42 byte + -ptùy chọn dòng lệnh. Chỉ cần nhấn enterđể kích hoạt.

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

Cảm ơn Dom Hastings vì sự giúp đỡ của anh ấy! Câu trả lời ban đầu là 67 byte:

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

Trên thực tế, vấn đề -plà nó sẽ thoát ra trước khi gọi printcâu lệnh cuối cùng , không biết tại sao. Tôi đã thử nó. Ngoài ra, đề nghị tuyệt vời, cảm ơn! Kiến thức của tôi tiếp tục phát triển ...
Codefun64

@DomHastings Ngoài ra, thật không may, vì một số lý do, 0|thủ thuật này không hoạt động như mong đợi, nhưng tôi đã loại bỏ một số byte khỏi nó, câu lệnh in và câu lệnh cuối cùng như bạn đề xuất. Bây giờ trông nó thế nào?
Codefun64

@DomHastings Chết tiệt, bạn giỏi. Tôi khuyên bạn nên đặt câu hỏi đó làm câu trả lời của riêng bạn, vì bạn chắc chắn đã viết một chương trình nhỏ hơn tôi (bạn có 40 byte so với 67 gốc của tôi!)
Codefun64

Tôi đánh giá cao lời giải thích! Luôn luôn vui vẻ để tìm hiểu thêm về ngôn ngữ kịch bản yêu thích của tôi! Tôi thậm chí không bao giờ biết về việc tăng tiền tố, điều đó thật tuyệt vời. Cảm ơn :)
Codefun64

Bạn rất hoan nghênh, rất vui vì đã giúp đỡ!
Dom Hastings

1

MATL , 41 byte

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

Để kéo cò, hãy nhập một chuỗi không trống (chẳng hạn như 'try').

Để chấm dứt, hãy nhập một chuỗi trống

Ví dụ

Trong trường hợp này, kích hoạt đã được kéo một lần và ... xui xẻo:

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

Trong trường hợp này, người dùng đã dừng (lưu ý đầu vào trống cuối cùng) sau hai lần rút may mắn:

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

Giải trình

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

Perl 6 ,  58    53 byte

for ^6 .pick(*) {get;say <*BANG!* *click*>[?$_];!$_&&last} # 58 bytes

$ perl6 -pe '$///=^6 .pick;$_=$/--??"*click*"!!say("BANG!")&&last' # 52+1= 53 bytes

Nhấn Enter để kéo cò hoặc ctrl + c để đặt nó xuống.


1

Python 2, 88 84 byte

Giải pháp này được lấy cảm hứng từ 3 giải pháp python đã được đưa ra. Tôi đã chọn python 2 để xóa dấu ngoặc đơn in mặc dù điều này thay đổi hành vi của input ().

import time
for i in[0]*int(time.time()%6)+[1]:input();print("*click*","*BANG!*")[i]
  • Tôi đang sử dụng modulo của thời gian như là một hàm ngẫu nhiên (đủ tốt cho roulette Nga)
  • đầu vào của người chơi phải là "i" thì Enter (nếu không thì input () sẽ xuất hiện lỗi), thủ thuật này phụ thuộc vào thực tế là đầu vào có thể là "bất cứ thứ gì".

1

Hồng ngọc, 45 + 1 = 46

Không thông minh như của D-side nhưng ngắn hơn một chút.

Với cờ dòng lệnh p, chạy

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

Người dùng có thể bóp cò khi quay lại và rời đi với control-c. plàm cho chương trình chạy trong một vòng lặp, đọc các dòng từ STDIN và xuất ra $_. Mỗi lần nó chạy, nó tăng lên $.. Vì vậy, trong lần chạy đầu tiên, nó chọn một số nguyên dương ngẫu nhiên nhỏ hơn 6, rồi 5, rồi 4, v.v. Trên 0 đầu tiên, chúng tôi xuất thủ công và thoát, cho đến khi đó chúng tôi xuất hoàn toàn.

(và bây giờ tôi nhận thấy rằng đã có một Perl rất giống nhau. Ồ tốt.)


1

Perl 5, 69 51 49 byte

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

Có lẽ có một số tiềm năng chơi golf, tôi sẽ xem xét điều này.

Thay đổi:

  • Đã lưu 8 byte bằng cách xóa $lvà một số dấu chấm phẩy và 10 byte bằng cách thay đổi <STDIN>thành<>
  • Đã lưu 2 byte nhờ Oleg V. Volkov

1
49:map{<>;print"*click*"}1..rand 6;<>;print"*BANG!*"
Oleg V. Volkov

@ OlegV.Volkov Cảm ơn! Tôi sẽ chỉnh sửa nó ngay bây giờ.
ASCIIThenANSI

0

VBA, 126 byte

Phiên bản Golf cho byte tối thiểu

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

Phiên bản thú vị làm cho các nút rõ ràng hơn để tăng sự chấp nhận của người dùng.

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

Một số niềm vui với các hình thức tùy chỉnh và bạn có thể tạo ra một trò chơi Slick đẹp trong VBA.


0

APL, 39/65 byte

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

Câu trả lời khá đơn giản.


Hai byte có nghĩa là gì?
Mego

0

C, 180 byte

#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--;}}

Nỗ lực đầu tiên của tôi về môn đánh gôn, có lẽ có rất nhiều chỗ để cải thiện :)


0

Julia, 71 byte

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

Nhấn Enterđể bắn hoặc Ctrl+ Cđể thoát. Cái sau kết thúc bằng một InterruptException.

Ung dung:

# 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

0

Lua, 73 byte

q=io.read q()for i=2,math.random(6)do print"*click*"q()end print"*BANG!*"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.