Hai số có chứa giai thừa duy nhất?


11

Chia hai số thành giai thừa của chúng; nếu họ chia sẻ bất kỳ, trả lại một giá trị falsey. Nếu không, trả lại một giá trị trung thực. (lấy cảm hứng từ câu hỏi gần đây )

Nói cách khác, viết mỗi số đầu vào là tổng các giai thừa (của số nguyên dương) theo cách tham lam nhất có thể; trả về một giá trị trung thực nếu không có giai thừa xuất hiện trong cả hai biểu diễn, một giá trị falsey khác.

Thí dụ

Cho 20 và 49:

20 = 3! + 3! + 3! + 2!
49 = 4! + 4! + 1!

Không có giai thừa xuất hiện trong cả hai đại diện, vì vậy trả về một giá trị trung thực.

Cho 32 và 132:

132 = 5! + 3! + 3!
 32 = 4! + 3! + 2!

3! xuất hiện trong cả hai biểu diễn, vì vậy trả về giá trị falsey.

Tôi / O

Đầu vào và đầu ra có thể thông qua bất kỳ phương tiện tiêu chuẩn .

Đầu vào sẽ luôn là hai số nguyên không âm; không giới hạn trên các số nguyên này ngoài những gì ngôn ngữ của bạn yêu cầu.

Đầu ra nên là một giá trị trung thực hoặc falsey . Các giá trị này không nhất thiết phải nhất quán cho các đầu vào khác nhau, miễn là mọi đầu ra đều đúng / falsey.

Các trường hợp thử nghiệm

Nếu một đầu vào là 0, câu trả lời sẽ luôn luôn đúng. Các trường hợp kiểm tra trung thực khác:

{6, 3}, {4, 61}, {73, 2}, {12, 1}, {240, 2}, {5, 264}, {2, 91}, {673, 18},
 {3, 12}, {72, 10}, {121, 26}, {127, 746}

Nếu cả hai đầu vào là số nguyên lẻ hoặc nếu cả hai đầu vào là cùng một số nguyên dương, thì đầu ra sẽ luôn luôn là falsey. Các trường hợp kiểm tra falsey khác:

{8, 5}, {7, 5}, {27, 47}, {53, 11}, {13, 123}, {75, 77}, {163, 160}, {148, 53},
 {225, 178}, {285, 169}, {39, 51}, {207, 334}, {153, 21}, {390, 128}, {506, 584},
 {626, 370}, {819, 354}

Đây là , vì vậy ít byte nhất sẽ thắng!


"Viết mỗi số đầu vào là tổng của các yếu tố (của số nguyên dương) theo cách tham lam nhất có thể" thay vào đó bạn có nghĩa là cách lười nhất có thể ?
dùng41805

4
@KritixiLithos không. Anh ta đề cập đến lớp các thuật toán được gọi là thuật toán tham lam, hoạt động bằng cách tối đa hóa một số số liệu sau mỗi bước. Như trong, luôn luôn lấy càng nhiều càng tốt.
John Dvorak

Câu trả lời:


9

Thạch , 7 byte

Æ!ṠḄ&/¬

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

Làm thế nào nó hoạt động

Æ!ṠḄ&/¬  Main link. Argument: (x, y) (pair of integers)

Æ!       Convert x and y to factorial base.
  Ṡ      Apply the sign function to each digit.
   Ḅ     Unbinary; convert each resulting Boolean array from base 2 to integer.
    &/   Reduce the resulting pair of integers by bitwise AND.
      ¬  Take the logical NOT of the result.

Æ!dường như cực kỳ hữu ích trong các kịch bản nhất định.
Bạch tuộc ma thuật Urn

Có bất cứ điều gì có thể đạt được bằng cách cố gắng nhân đôi các danh sách cơ sở giai thừa trực tiếp, mà không có dấu hiệu?
Greg Martin

@GregMartin Tôi không nghĩ vậy. Các mảng chữ số sẽ phải được đệm hoặc cắt ngắn theo cùng một độ dài, có thể sẽ tốn nhiều byte hơn mức tiết kiệm.
Dennis



2

JavaScript (ES6), 71 byte

(a,b,g=(n,e=1,f=1)=>n>=f&&g(n,++e,f*e)+((n/f|0)%e&&1<<e))=>!(g(a)&g(b))

Số nguyên của JavaScript được giới hạn ở độ chính xác 53 bit, chỉ đủ cho 18!; điều này có nghĩa là tôi có thể sử dụng mặt nạ 18 bit để theo dõi những yếu tố nào là cần thiết.



0

Toán học, 73 byte

F[x_]:=First@IntegerPartitions[x,99,Range[99]!];!IntersectingQ[F@#,F@#2]&

hình thức đầu vào

[x1, x2]


Tôi đang nhận được một số lỗi khi kiểm tra điều này ...
Scott Milner

Chỉ cần nhập vào cuối [x1, x2]
J42161217

Ah. Tôi đã nhập một danh sách, thay vì hai số nguyên riêng biệt. Bạn có thể đánh gôn thêm với ±x_:=First@IntegerPartitions[x,99,Range[99]!];!IntersectingQ[±#,±#2]&[4,61](69 byte). Trong mã hóa ISO 8859-1, ±một byte.
Scott Milner

0

C, 122 119 byte

G(q,i){return gamma(q+1)>i?gamma(q):G(q+1,i);}
Q(a,b,u,v){while(a&&b){a-=u=G(1,a);b-=v=G(1,b);if(a==b)exit();}exit(0);}

Qlà chức năng chính. Nó nên được gọi với chính xác hai giá trị nguyên dương. Lối này với một mã thoát của 0cho truthy và 1cho falsy.

Mặc dù điều này dường như không hoạt động trên TIO, nhưng nó hoạt động trên hệ thống của tôi với Homebrew được cung cấp gcc 7.1.0.

Tôi đã không Cchơi golf trong một thời gian dài, vì vậy các mẹo chơi golf được đánh giá rất cao!

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.