Lập danh sách sử dụng số nguyên tố


10

Bạn đã được tặng N đống tiền. Bạn đã quyết định chia từng cọc B 1 , B 2 , ..., B N cho các nhóm người riêng biệt. Số lượng người nhận được tiền phải là một số nguyên tố và số tiền được trao cho mỗi người phải khác nhau trong mỗi đống.

Đầu vào: N, B 1 , B 2 , ..., B N (Số lượng tiền trong mỗi cọc riêng lẻ).

Đầu ra: NP 1 , NP 2 , ..., NP N với NP là số người (số nguyên tố) nhận được tiền. Nếu đây là bất khả thi sau đó mang lại một số kết quả không thể thực hiện (như 0, -1, None, [], hoặc "impossible") hoặc nâng cao một lỗi.

Thí dụ:

3
7 8 9

Đầu ra: 7 2 3

Bởi vì 7 là số nguyên tố duy nhất có thể chia 7 đều, giống nhau cho 8 và 2 và 9 và 3. Ngoài ra, hãy lưu ý rằng (7/7 = 1) (8/2 = 4) ≠ (9/3 = 3 ).


2
Nlà một đầu vào dư thừa, chúng ta có thể từ bỏ nó?
Jonathan Allan

Chúng tôi có thể mang lại một số kết quả không thể đạt được khác (ví dụ: 0danh sách trống, chuỗi như "không thể" hoặc đưa ra lỗi) cho các trường hợp không thể? (Tôi thực sự chỉ đề xuất đầu vào hợp lệ hoặc cho phép hành vi không xác định trong các trường hợp như vậy, nhưng tùy bạn.)
Jonathan Allan

2
Bạn có thể từ bỏ đầu vào của N. Và có cho câu hỏi thứ hai.
McLinux

Vậy, ước số nguyên tố thấp nhất của mỗi số?
hoàn toàn là

@totallyhuman không hoàn toàn - nếu đầu vào là nói [7,8,8]nó sẽ là bất khả thi (kể từ khi sử dụng 2cho cả hai 8kết quả trong hai 4s.) Hơn nữa, nếu đầu vào là nói [7,30,30]sau đó [7,2,2]sẽ là không hợp lệ nhưng [7,2,3][7,3,2]giữa những người khác sẽ làm việc.
Jonathan Allan

Câu trả lời:


5

05AB1E , 13 byte

Ò.»â€˜ʒ÷DÙQ}θ

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

Một cổng của câu trả lời Pyth của tôi.

  • Òđược thực tế chính Ò rs của mỗi.
  • nếp gấp một lệnh cặp đôi, â(c â rtesi â n sản phẩm) giữa mỗi hai yếu tố trong danh sách từ phải sang trái với quyền / toán hạng trái ngược lại.
  • €˜làm phẳng ach.
  • ʒ...}lọc ʒ rs những thỏa mãn điều kiện sau:
    • ÷ chia số nguyên theo cặp với đầu vào.
    • D D uplicate (đẩy hai bản sao của mục vào ngăn xếp).
    • Ùloại bỏ các phần tử trùng lặp, giữ sự xuất hiện Ù niq Ù e của mỗi phần tử.
    • Qkiểm tra cho e Q uality.
  • θ được yếu tố cuối cùng.

4

Thạch ,  15  14 byte

³:ŒQẠ
ÆfŒpÇÐfṪ

Một chương trình đầy đủ chấp nhận một đối số, một danh sách các số và in một đại diện cho một danh sách các số khác hoặc 0nếu nhiệm vụ là không thể.

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

Làm sao?

³:ŒQẠ - Link 1, unique after division?: list of primes, Ps   e.g. [7,2,2]  or  [7,3,3]
³     - program's first input                                e.g. [7,8,8]  or  [7,9,30]
 :    - integer division by Ps                                    [1,4,4]      [1,3,10]
  ŒQ  - distinct sieve                                            [1,1,0]      [1,1,1]
    Ạ - all truthy?                                               0            1

ÆfŒpÇÐfṪ - Main link: list of coin stack sizes, Bs   e.g. [7,8,12]
Æf       - prime factorisation (vectorises)               [[7],[2,2,2],[2,2,3]]
  Œp     - Cartesian product                              [[7,2,2],[7,2,2],[7,2,3],[7,2,2],[7,2,2],[7,2,3],[7,2,2],[7,2,2],[7,2,3]]
     Ðf  - filter keep if:
    Ç    -   call last link (1) as a monad                 1       1       0       1       1       0       1       1       0
         -                                                [[7,2,2],[7,2,2],[7,2,2],[7,2,2],[7,2,2],[7,2,2]]
       Ṫ - tail (note: tailing an empty list yields 0)    [7,2,2]
         - implicit print

+1 Haha, tôi nghĩ µ⁼Qsẽ hoạt động như một giải pháp thay thế cho sàng riêng biệt lạ mắt, nhưng công việc tốt!
Ông Xcoder

2

Bình thường , 15 byte

ef{I/VQT.nM*FPM

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

Làm sao?

ef {I / VQT.nM * FPM | Chương trình đầy đủ, mà bỏ qua kích thước.
                |
             Chiều | Hệ số nguyên tố của từng số nguyên.
           * F | Gấp sản phẩm Cartesian qua danh sách các số nguyên tố.
        .nM | Làm phẳng từng cái.
 f | Bộ lọc.
  {Tôi / VQT | Điều kiện lọc (sử dụng biến T).
    / V | Phân chia số nguyên ...
      QT | Trong đầu vào và các mục hiện tại.
  {Tôi | Là bất biến trên sự trùng lặp (loại bỏ trùng lặp)?
e | Lấy yếu tố cuối cùng.
                | Kết quả đầu ra ngầm.
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.