Chọn số Powerball!


34

Powerball là một xổ số của Mỹ gần đây đã thu hút được sự chú ý bởi vì giải độc đắc hiện tại (tính đến ngày 11 tháng 1 năm 2016) là giải thưởng xổ số lớn nhất trong lịch sử , vào khoảng 1,5 tỷ đô la ( USD ).

Người chơi Powerball chọn 5 số khác nhau từ 69 quả bóng trắng được đánh số và 1 số "Powerball" từ 26 quả bóng màu đỏ được đánh số. Họ giành được giải độc đắc nếu năm lựa chọn bóng trắng của họ khớp với những gì được rút ra theo bất kỳ thứ tự nào nếu họ chọn đúng số "Powerball".

Vì vậy, cơ hội trúng giải độc đắc là 1 trong (69 choose 5)*(26 choose 1)hoặc ((69*68*67*66*65)/(5*4*3*2*1))*26, là 1 trong số 292,201,338

Không ai trúng giải độc đắc trong bản vẽ gần đây nhất vào ngày 9 tháng 1 năm 2016, nhưng có lẽ ai đó sẽ giành được bản vẽ tiếp theo vào ngày 13 tháng 1 năm 2016, 10:59 tối ET.

Thử thách

Viết chương trình hoặc chức năng mô phỏng bản vẽ Powerball, không lấy đầu vào mà xuất ra 5 số ngẫu nhiên riêng biệt từ 1 đến 69, sau đó bao gồm một số "Powerball" ngẫu nhiên từ 1 đến 26 (có thể lặp lại một trong 5 số số ban đầu).

Số "Powerball" phải luôn là số cuối cùng trong đầu ra, nhưng nếu không thì thứ tự của 5 số đầu tiên không thành vấn đề.

6 số phải được xuất thành số thập phân , được phân tách bằng dấu cách hoặc dòng mới, với một dòng mới duy nhất tùy chọn. Dấu phẩy, dấu ngoặc và các ký tự khác không được phép trong đầu ra.

Vì vậy, đây sẽ là đầu ra hợp lệ (sử dụng các số từ bản vẽ cuối cùng ):

32 16 19 57 34 13
32
16
19
57
34
13

Tất cả 292201338 kết quả có thể nên có thể với xác suất thống nhất. Bạn có thể sử dụng các trình tạo số giả ngẫu nhiên tích hợp và cho rằng chúng đáp ứng tiêu chuẩn này.

Dưới đây là một triển khai tham chiếu không được thực hiện trong Python 2 hoặc 3:

import random
print(' '.join(map(str, random.sample(range(1,70), 5) + [random.randint(1, 26)])))

Mã ngắn nhất tính bằng byte thắng.


Lưu ý rằng tôi không có liên kết với Powerball và không thực sự khuyên bạn nên chơi. Nhưng nếu bạn giành được bất cứ thứ gì từ những con số được tạo ra bởi một trong những chương trình ở đây, tôi chắc chắn chúng tôi rất muốn nghe về nó. : D


12
Bỏ lỡ cơ hội để yêu cầu chia sẻ số tiền thắng cược nếu ai đó ở đây nhận được giải độc đắc.
Alex A.

5 số có phải theo thứ tự không?
Neil

@Neil "Số" Powerball "phải luôn là số cuối cùng trong đầu ra, nhưng nếu không thì thứ tự của 5 số đầu tiên không thành vấn đề."
Sở thích của Calvin

3
Tôi chắc chắn không ai nhầm lẫn, nhưng bạn thực sự có nghĩa là số nguyên trong thử thách.
jpmc26

1
@CanadianLuke Thứ tự của 5 số đầu tiên không quan trọng. Có nhiều 5! = 5*4*3*2*1cách để sắp xếp 5 thứ, vì vậy bạn yếu tố đó.
Sở thích của Calvin

Câu trả lời:


29

APL Dyalog, 10 byte

(5?69),?26

Dyadic ?là numbers số ngẫu nhiên riêng biệt trong [1,] và monadic ?là một số ngẫu nhiên duy nhất.

Hãy thử nó ở đây .


Hầu như giống hệt nhau trong J ngoại trừ bạn phải thêm 1 vì lập chỉ mục dựa trên 0 : 1+(5?69),?26.
ngẫu nhiên

13

CJam, 16 byte

69,mr5<26mr+:)S*
69,   range(69)
mr    shuffle the generated array
5<    first 5 elements
26mr  random number 0..25
+     concat to array
:)    increment each array element
S*    join with spaces

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


1
Tôi thích cách :)làm cho mọi thứ chỉ lớn hơn một chút, như cách nụ cười của người lạ có thể khiến bạn vui vẻ hơn một chút.
Vụ kiện của Quỹ Monica

1
Tôi nghĩ tôi sẽ đẹp hơn :)nếu trúng xổ số. +1
Arcturus

9

MATL , 10 byte

69 5Zr26Yr

Sử dụng phiên bản hiện tại (9.2.0) của ngôn ngữ / trình biên dịch.

Thí dụ

Với trình biên dịch chạy trên Matlab:

>> matl
 > 69 5Zr26Yr
 > 
66
59
64
56
29
12

Với trình biên dịch chạy trên Octave:

>> matl
 > 69 5Zr26Yr
 >
2 69 41 44 23
22

Năm số đầu tiên được phân tách bằng dấu cách, không phải theo dòng mới. Điều này là do randsamplechức năng cơ bản của Octave hoạt động khác với Matlab (và đã được sửa trong phiên bản mới của trình biên dịch). Dù sao, dòng mới và không gian đều được cho phép bởi thách thức.

Chỉnh sửa (ngày 4 tháng 4 năm 2016) : Dùng thử trực tuyến!

Giải trình

69 5Zr    % randsample(69,5), without replacement by default. Gives a 5x1 column vector
26Yr      % randi(26). Gives single number
          % implicit display

Xem các hàm Matlab có liên quan: randsamplerandi.


7

Ruby, 33 32

p *[*1..69].sample(5),rand(26)+1

Ruby tình cờ có một phương thức tích hợp, mẫu, chọn các giá trị ngẫu nhiên từ một mảng mà không cần thay thế. Cảm ơn QPaysTaxes đã chỉ ra rằng tôi không cần parens.


Bạn có chắc bạn cần dấu ngoặc đơn? Tôi nghĩ rằng bạn có thể cắt bớt một byte bằng cách giảm mười và có khoảng cách giữa p và *. Tôi đang kiểm tra. EDIT: đã thử nghiệm và AFAICT nó hoạt động.
Vụ kiện của Quỹ Monica

Ha, nó làm, cảm ơn bạn. Tôi đã thử nghiệm trong một trường hợp irb nơi tôi được chỉ định pvào một lúc nào đó, điều này thực sự phá vỡ phân tích cú pháp cú pháp cho phiên bản đó.
lịch sử

6

R, 30 29 byte

cat((s=sample)(69,5),s(26,1))

Các samplechức năng thực hiện lấy mẫu ngẫu nhiên đơn giản từ đầu vào. Nếu một số nguyên duy nhất được đưa ra làm đối số đầu tiên, việc lấy mẫu được thực hiện từ 1 đến đối số. Kích thước mẫu là đối số thứ hai. Chúng tôi đang sử dụng tùy chọn lấy mẫu mặc định mà không cần thay thế.

Dùng thử trực tuyến


bạn có thể lưu toàn bộ hai byte bằng cách sử dụng cthay vìcat
Dean MacGregor

@DeanMacGregor Cảm ơn bạn đã gợi ý, nhưng các bài nộp ở đây phải là các chương trình đầy đủ ghi vào STDOUT hoặc các hàm trả về giá trị. Trong trường hợp này tôi đã chọn trước đây. Nếu tôi sử dụng c, đây sẽ chỉ là một đoạn trích, không được phép theo mặc định.
Alex A.

À, tôi hiểu rồi. Tôi không phải là một tay golf cuồng nhiệt nên tôi không quen với điều đó.
Trưởng khoa MacGregor

@DeanMacGregor Không có vấn đề. Dù sao cũng cảm ơn vì lời đề nghị. :)
Alex A.

6

Python 3.5, 63 byte

from random import*
print(*sample(range(1,70),5),randint(1,26))

Về cơ bản, đó là việc thực hiện tham chiếu. Lưu ý rằng 3.5 là cần thiết để splat trong một đối số không phải là cuối cùng.


6

Octave, 35 32 byte

Sở thích của Calvin đã xác nhận rằng nó ans =ổn khi sử dụng chức năng, vì vậy:

@()[randperm(69)(1:5),randi(26)]

Nó có điểm tương đồng với câu trả lời của Memming , nhưng nó sử dụng lập chỉ mục trực tiếp chỉ có thể có trong Octave và nó ngắn hơn 5 7 byte, vì vậy tôi cho rằng dù sao nó cũng đáng để đăng.

randperm(69)tạo một danh sách với hoán vị ngẫu nhiên của các số 1-69. Có thể lập chỉ mục trực tiếp danh sách (không thể có trong MATLAB) để chỉ nhận được 5 số đầu tiên như thế này(1;5) . Danh sách được theo sau randi(26)mà trả về một số duy nhất trong khoảng từ 1 đến 26.

Cũ:

disp([randperm(69)(1:5),randi(26)])

Danh sách kết quả được hiển thị bằng cách sử dụng disp.


6

PowerShell v2 +, 31 27 byte

1..69|Random -c 5;Random 27

Yêu cầu phiên bản 2 hoặc mới hơn, như Get-Randomkhông có trong v1 ( Get-được ngụ ý và -Maximumlà vị trí). Đầu ra là dòng mới tách.

Ung dung:

Get-Random -InputObject (1..69) -Count 5
Get-Random -Maximum 27

Random -ma 27có thể chỉ được Random 27như -Maximumđược kết hợp bởi vị trí 0
Matt

@Matt Cảm ơn - Tôi quên điều đó.
admBorkBork 18/03/2016


4

MATLAB, 40

x=randperm(69);disp([x(1:5) randi(26)])

Tôi biết. Đó là giải pháp nhàm chán.


4

PHP, 69 byte

<?foreach(array_rand(range(1,69),5)as$k)echo$k+1," ";echo rand(1,26);

Khá thẳng về phía trước trả lời. Tạo 1-69 range, sau đó sử dụng array_randđể lấy 5 khóa ngẫu nhiên từ mảng và lặp lại $k+1giá trị (được lập chỉ mục 0), sau đó lặp lại một int ngẫu nhiên từ 1-26.


4

C #, 153 byte 140 byte

Nhờ "McKay":

string.Join(" ",Enumerable.Range(1,69).OrderBy(e=>Guid.NewGuid()).Take(5).Concat(Enumerable.Range(1,26).OrderBy(e=>Guid.NewGuid()).Take(1)))

Giải pháp 153 byte:

string.Join(" ",Enumerable.Range(1,69).OrderBy(e=>Guid.NewGuid()).Take(5))+" "+string.Join(" ",Enumerable.Range(1,26).OrderBy(e=>Guid.NewGuid()).Take(1))

Giải pháp đơn giản sử dụng Linq và xáo trộn bằng GUID.


1
Không cần chuỗi tham gia vào phần số powerball và bạn sẽ lưu byte theo thứ tự bộ đệm theo thứ tự hoặc nhiều hơn nữa bằng cách sử dụng ngẫu nhiên cho số powerball
Pinkfloydx33

Và nếu bạn nối các chuỗi thay vì nối chuỗi, bạn không cần chỉ định khoảng cách 3 lần, nó cũng sẽ hiệu quả hơn. ví dụstring.Join(" ", ....take(5).Concat(....Take(1)))
McKay

4

Thứ ba - 13 14 13 byte

Chơi golf chính có thể, đây chỉ là một FGITW.

jb>5.SS69hO26

Hãy thử trực tuyến tại đây .


Bạn có thể giải thích mã để có thể kiểm tra xem nó có thực sự đồng nhất không?
Masclins

Bạn có thể thay đổi <... 5thành >5.... Mã cuối cùngjb>5.SS69hO26
Blue

2

Brachylog , 40 byte

1:5e,68{I`random(I)+1=Z`Z=w,"
"w}\;25:1&

Giải trình

Brachylog không tích hợp sẵn các số ngẫu nhiên (tuy nhiên ...) vì vậy chúng tôi phải sử dụng một vị từ SWI-Prolog cho điều đó : random/1. Chúng tôi có thể nhập mã SWI-Prolog trong Brachylog bằng cách sử dụng backquote.

1:5e,                             \  § Enumerate from 1 to 5 using \ (backtrack), which
                                     § evaluates to false and thus constructs a loop

     68{                         }   § Declare sub-predicate 1 and call it with 68 as input

        I`random(I)+1=Z`             § Z is the arithmetic expression 'random(I) + 1' where
                                     § I is the input of the sub-predicate

                        Z=w,         § Evaluate Z and write it
                            "\n"w    § Write a new line

;                                    § Else (we will reach this after the 5th iteration of
                                     § the enumeration, since \ is always false)

25:1&                                § Call the sub-predicate 1 with 25 as input

2

JavaScript (ES6), 106 86 84 byte

F=(s=new Set,r=Math.random)=>s.size<5?F(s.add(r()*69+1|0)):[...s,r()*26|0+1].join` `

Vì chúng tôi không thể lấy mẫu duy nhất các randoms trong JavaScript, nên điều này hoạt động bằng cách tạo Tập hợp (chỉ giữ các giá trị duy nhất), thêm các lần randoms (1-69) cho đến khi có 5 số duy nhất, nối thêm một số ngẫu nhiên (1-26), sau đó tham gia và trả lại tất cả


2

Thuốc tiên , 83 byte

Enum.reduce Enum.take_random(1..69,5)++[Enum.random(1..26)],fn(x,a)->"#{a} #{x}"end

Khi chỉ cần lấy IO.putsmột mảng các số nguyên, Elixir sẽ diễn giải các số nguyên dưới dạng các ký tự và do đó xuất ra một số chuỗi thay vì các số powerball mong muốn. Vì vậy, chúng ta phải giảm mảng số nguyên xuống một chuỗi.


2

Ruby, 47 43 39 byte

puts *(1..69).to_a.sample(5),rand(26)+1

Tôi nghĩ rằng nó có thể được chơi gôn nhiều hơn, nhưng tôi sẽ làm việc đó một khi tôi hoàn toàn ngưỡng mộ xem mã này trông đẹp như thế nào, xem xét.

Nó hoạt động khá giống với mọi thứ khác: Lấy một mảng các số từ 1 đến 69, xáo trộn chúng, lấy năm số đầu tiên, xuất ra các số đó, sau đó xuất một số ngẫu nhiên trong khoảng từ 1 đến 26.

Tôi đã trải qua một vài lần lặp lại trước khi đăng bài này:

puts (1..69).to_a.shuffle.first(5).join(' ')+" #{rand(26)+1}"  #61
puts (1..69).to_a.shuffle[0..5].join(' ')+" #{rand(26)+1}"     #58
puts (1..69).to_a.shuffle[0..5].join('<newline>'),rand(26)+1   #52
puts *('1'..'69').to_a.shuffle[0..5],rand(26)+1                #47
puts *('1'..'69').to_a.sample(5),rand(26)+1                    #43

(nơi <newline>được thay thế bằng một dòng mới thực tế)

EDIT: Rất tiếc, đã không thấy câu trả lời của Ruby từ trước. Tôi vấp ngã samplevà đang cuộn xuống để chỉnh sửa câu trả lời của mình, nhưng sau đó tôi thấy nó ... Ồ tốt. Điểm cuối cùng của tôi là 43 byte, nhưng tôi sẽ tiếp tục chơi golf một chút để xem tôi có thể làm tốt như thế nào.


2

Toán học, 64 byte

StringRiffle@Append[Range@69~RandomSample~5,RandomInteger@25+1]&

Kha đơn gảin.


Đầu ra có dấu ngoặc và dấu phẩy.
Charles

-1 không hợp lệ vì lý do trên
CalculatorFeline

StringJoin=""<>##&
Máy

@CatsAreFluffy Thực sự đã sửa lần này. Chỉ cần trộn lẫn các chức năng của tôi ...
LegionMammal978

Tôi nghĩ bạn có thể rút ngắn nó nếu bạn chỉ sử dụng Range / RandomSample và chuyển nó qua hai danh sách thay vì sử dụng RandomInteger. Một cái gì đó như RandomSample [Phạm vi [# 1], # 2] & @@@ {{69,5}, {26,1}}]
Xanderhall

1

Perl 5, 59 byte

{say for(sort{-1+2*int rand 2}1..69)[0..5];say$==1+rand 25}

Đó là một chương trình con; sử dụng nó như:

perl -M5.010 -e'sub f{...}f'

Bạn có thể dùng -E thay vì-M5.010 -e
andlrc

Bạn không thể thay thế -1+2*int rand 2bằngrand>.5?1:-1 ?
andlrc

Và bạn không nên tiết kiệm một số khác bằng cách thay thế ;say$==bằng,$==
andlrc

@ dev-null Cảm ơn! Các-M5.010 sao thì nó cũng không được tính nên tôi không buồn viết tắt. Tôi nghĩ rằng tôi đã thử một dấu phẩy thay vì dấu phẩy khác sayvà nó không hoạt động. Nhưng quy tắc sắp xếp mới là một ý tưởng tốt, cảm ơn. Tôi sẽ kiểm tra nó khi tôi có cơ hội và chỉnh sửa nó.
msh210

1

PHP, 65 byte

<?=join(' ',array_rand(array_flip(range(1,69)),5))." ".rand()%26;

Nhờ câu trả lời PHP khác trên trang này. Tôi đã tự mình viết ra một chương trình, và hóa ra đó là câu trả lời chính xác giống như câu trả lời của Samsquanch, điều đó thúc đẩy tôi tiến thêm một bước để tiết kiệm một vài byte.

Nếu bất cứ ai cũng có thể tìm ra cách nối thêm một mảng vào một mảng khác ở đây ít hơn 5 byte thì tôi phải tham gia số powerball sau đó, tôi sẽ đánh giá rất cao nó, vì nó khiến tôi phát điên! Điều tốt nhất tôi có thể đưa ra là sau array_randvà trước đó join, có một câu lệnh tương tự +[5=>rand()%25], nhưng đó là một byte thêm vào chỉ là nối nó sau.

<?=                                                              // This represents an inline 'echo' statement
                                  range(1,69)                    // Get an array of all numbers from 1 to 69 inclusive
                       array_flip(           )                   // Swap the keys and values.
            array_rand(                       ,5)                // Get a random subset of five keys.
   join(' ',                                     ).rand()%26     // Concatenate the array with spaces, along with the powerball number

Chạy nó thông qua dòng lệnh. Mẫu vật:

C:\(filepath)>php powerball.php

Đầu ra:

 12 24 33 67 69 4

1

PARI / GP, 71 70 byte

apply(n->print(n),numtoperm(69,random(69!))[1..5]);print(random(26)+1)

Nó tạo ra một hoán vị ngẫu nhiên là [1., 69], sau đó lấy 5 đầu tiên.

Thật không may, đây là một người sử dụng ngẫu nhiên không hiệu quả, tiêu thụ trung bình 87 byte entropy so với lý tưởng thông tin lý thuyết là 3,5. Điều này chủ yếu là do toàn bộ hoán vị được tạo ra thay vì chỉ 5 thành viên đầu tiên và cũng vì các perm được đặt hàng (mất lg 5! = ~ 7 bit). Thêm nữa,random sử dụng chiến lược từ chối hơn là sử dụng mã hóa số học. (Điều này là do PARI sử dụng xorgen của Brent, đủ nhanh để chi phí từ các chiến lược phức tạp hơn hiếm khi đáng giá.)

Có ba thay đổi 'rõ ràng' không hoạt động theo phiên bản hiện tại (2.8.0) của gp. randomprintcó thể được lưu trữ trong các biến và printcó thể được gọi trực tiếp thay vì thông qua ->hàm ẩn danh :

r=random;apply(p=print,numtoperm(69,r(69!))[1..5]);p(r(26)+1)

Cùng nhau, chúng sẽ tiết kiệm được 9 byte. Thật không may, cả hai hàm đều hợp lệ mà không có đối số và do đó được đánh giá ngay lập tức thay vì được lưu trữ, vì vậy những hàm này không tính được đầu ra mong muốn.


0

Mã máy Intel x86, 85 byte

¿I ±‰ø1Ò»E ÷óB‰Ðè+ ‰þÑç÷ƒÇþÉ„Éuâ‰ø1Ò» ÷óB‰Ðè
 0ä͸ ͱëÆÔ
00†Äˆã´ÍˆØÍ° ÍÃ

Vâng, đôi khi nó sẽ in cùng một số nếu vậy, chỉ cần thử lại bằng cách nhấn một phím.

Biên dịch với:

nasm file.asm -o file.bin

Đảm bảo căn chỉnh nó theo kích thước đĩa mềm (thêm số không ở cuối) để gắn nó vào vm (nó không cần bất kỳ hệ điều hành nào).

Tháo gỡ:

BITS 16
ORG 0x7c00

mov di,73 ;starting seed
mov cl,5 ;we need five numbers

loop:

mov ax,di

xor dx,dx
mov bx,69
div bx
inc dx
mov ax,dx

call print_rnd_number

mov si,di
shl di,1
add di,si
add di,7

dec cl

test cl,cl
jne loop

mov ax,di

xor dx,dx
mov bx,26
div bx
inc dx
mov ax,dx

call print_rnd_number

xor ah,ah
int 0x16
mov ax,0x0002
int 0x10
mov cl,5
jmp loop

print_rnd_number:
aam
add ax,0x3030
xchg al,ah
mov bl,ah
mov ah,0x0E
int 0x10
mov al,bl
int 0x10
mov al,' '
int 0x10
ret

6
Chào mừng bạn đến với Câu đố lập trình & Code Golf! Nhìn thấy mã máy luôn ấn tượng, nhưng nếu nó in các số lặp đi lặp lại trong các dịp, tôi sợ việc gửi của bạn không hợp lệ.
Dennis

1
Có, nhưng tôi chỉ muốn chia sẻ điều này :)
ByteBit

2
Tôi hiểu, nhưng gần đây chúng tôi đã thảo luận về vấn đề này và sự đồng thuận của cộng đồng là các câu trả lời không hợp lệ nên được sửa hoặc xóa.
Dennis

Tôi sẽ hủy bỏ nếu bạn sửa chữa; xin vui lòng ping tôi.
lirtosiast

0

C, 142 byte

i,x[6],n;main(j){for(srand(time(0));i<6;n-i?0:printf("%d ",x[i]),i++)for(x[n=j=i]=(69-i/5*43)*(rand()/2147483647.)+1;i<6&&j--;)i-=x[i]==x[j];}

Không hài lòng lắm với giải pháp này vì cảm thấy nên có nhiều cơ hội chơi gôn hơn. Tôi sẽ nhìn lại vào ngày mai với đôi mắt tươi. Hãy thử nó ở đây .


0

Swift, 165 byte

import UIKit;var a=[Int]();for i in 0...5{func z()->Int{return Int(arc4random_uniform(i<5 ?68:25)+1)};var n=z();while i<5&&a.contains(n){n=z()};a.append(n);print(n)}

Có thể nhanh chóng được chạy trong Sân chơi Xcode.

EDIT: Vấn đề hiện tại ở đây là về mặt lý thuyết, điều này có thể chạy mãi trong vòng lặp while nếu arc4random_uniform bằng cách nào đó tiếp tục kéo cùng một số. Tỷ lệ xảy ra điều đó, trong bất kỳ khoảng thời gian đáng kể nào, có lẽ tốt hơn so với tỷ lệ thắng Powerball.


Làm thế nào để đảm bảo rằng sẽ không có bất kỳ giá trị trùng lặp?
supercat

@supercat, trước đây thì không, nhưng bây giờ thì có.
timgcarlson

0

Perl 6 ,  32   31 byte

# space is necessary so that the parens denote a list
# rather than being part of the call to `put`
put (pick(5,1..69),(1..26).pick) # 32 bytes
# 25 35 57 67 62 24␤

Biến nó thành một hàm trả về một chuỗi, tôi có thể loại bỏ 4 byte ( put␠) trong khi chỉ thêm 3 ( {~ })

{~(pick(5,1..69),(1..26).pick)} # 31 bytes

Sử dụng:

say {...}().perl; # use .perl to prove it returns a string
# "25 35 57 67 62 24"

Nếu một hàm được phép trả về danh sách các giá trị, thì các giá trị sau cũng sẽ hoạt động.

(Nếu không, nó sẽ giống như trên nhưng bên trong { })

  • Hàm trả về một danh sách phẳng duy nhất

    {|pick(5,1..69),(1..26).pick} # 29 bytes
    # (25,35,57,67,62,24)
  • Hàm trả về danh sách có 5 số đầu tiên trong danh sách phụ

    {pick(5,1..69),(1..26).pick} # 28 bytes
    # ((25,35,57,67,62),24)
  • hàm trả về danh sách có 5 đầu tiên trong danh sách phụ và Powerball trong danh sách phụ khác

    {pick(5,1..69),pick 1,1..26} # 28 bytes
    # ((25,35,57,67,62),(24,))

0

Nghiêm túc, 35 byte

Nỗ lực đầu tiên của tôi tại một câu trả lời trong một ngôn ngữ golf.

Cảm thấy lâu hơn nó nên được.
Sự lặp lại có thể có thể được loại bỏ bằng W , nhưng dường như nó đã bị hỏng trong trình thông dịch trực tuyến và tôi không muốn đăng mã chưa được kiểm tra.

Quá tệ { không hoạt động trên danh sách.

Mã số:

:70:1xi J{. J{. J{. J{. J{.:26:Ju.

Đổ lục giác:

3a37303a317869204a7b2e204a7b2e204a7b2e204a7b2e204a7b2e3a32363a4a752e7f

Giải trình:

:70:1x                       # Push a list of the numbers 1-69
i                            # Explode list
 J{.                         # rotate stack random(len(stack)) times and pop/print
 J{. J{. J{. J{.             # same thing 4 more times
:26:Ju.                      # print random number in 1-26
                             # (7F) unprintable, terminate without explicit printing

Phiên dịch trực tuyến


0

Lua, 96 byte

Một giải pháp đơn giản, sử dụng bảng dưới dạng tập hợp bằng cách đặt giá trị bên trong nó table[value]=truthy/falsyđể có thể kiểm tra xem chúng có ở trong đó hay không.

Tôi mất 5 byte vì tôi phải đặt giá trị đầu tiên của bảng, nếu không tôi sẽ vào bên trong while(o[n])vòng lặp và sẽ chỉ xuất ra ntrước khi sử dụng hàm ngẫu nhiên. Vì Lua sử dụng các bảng dựa trên 1, tôi cũng phải buộc nó đặt giá trị đầu tiên của nó vào ô [0], nếu không tôi không thể xuất ra a 1.

m,n,o=math.random,0,{[0]=0}for i=1,5 do while(o[n])do n=m(69)end o[n]=0 print(n)end print(m(26))

Ung dung:

m,n,o=math.random,0,{[0]=0}
for i=1,5
do
  while(o[n])
  do
    n=m(69)
  end
  o[n]=0
  print(n)
end
print(m(26))

0

C ++, 252 byte

Chơi gôn

#include<iostream>
#include <random>

int main(){std::random_device rd;std::mt19937 gen(rd());std::uniform_int_distribution<> dis(1,69);for(int c=0;c<=5;c++){std::cout<<dis(gen)<<" ";}int x=dis(gen);while(x>26||x<1){x=dis(gen);}std::cout<<x;return 0;}

Ung dung:

#include<iostream>
#include <random>

int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> dis(1, 69);
    for(int c = 0; c <= 5; c++){
        std::cout<<dis(gen)<<" ";
    }
    int x = dis(gen);
    while (x > 26 || x < 1){
        x = dis(gen);
    }
    std::cout<<x;
    return 0;
}
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.