Các nhân tố khác biệt đầu ra


13

Các nhân tố khác biệt đầu ra

Nhiệm vụ ngày nay rất đơn giản: đưa ra một số nguyên dương, xuất ra một đại diện của mỗi hình khối có thể hình thành bởi các yếu tố của nó.

Giải thích

Thể tích của một hình khối là sản phẩm của ba chiều dài của nó. Ví dụ, một cuboid khối lượng 4 mà bên dài là các số nguyên có thể có mặt [1, 1, 4], [1, 2, 2], [1, 4, 1], [2, 1, 2], [2, 2, 1], hoặc [4, 1, 1]. Tuy nhiên, một số trong số này đại diện cho cùng một hình khối: ví dụ [1, 1, 4][4, 1, 1]là cùng một hình khối được xoay. Chỉ có hai hình khối riêng biệt có thể tích 4 và số nguyên: [1, 1, 4][1, 2, 2]. Đầu ra có thể là bất kỳ đại diện nào của hình khối thứ nhất và bất kỳ hình đại diện nào của hình khối thứ hai.

Đầu vào

Chương trình của bạn phải mất một dương tính đơn nguyên 1n231-1 .

Đầu ra

Bạn sẽ cần xuất tất cả các hình khối có thể có trong một danh sách hoặc bất kỳ cách nào được chấp nhận khác. Ví dụ

Input  Output
  1    [[1, 1, 1]]
  2    [[1, 1, 2]]
  3    [[1, 1, 3]]
  4    [[1, 1, 4], [1, 2, 2]]
  8    [[1, 1, 8], [1, 2, 4], [2, 2, 2]]
 12    [[1, 1, 12], [1, 2, 6], [1, 3, 4], [2, 2, 3]]
 13    [[1, 1, 13]]
 15    [[1, 1, 15], [1, 3, 5]]
 18    [[1, 1, 18], [1, 2, 9], [1, 3, 6], [2, 3, 3]]
 23    [[1, 1, 23]]
 27    [[1, 1, 27], [1, 3, 9], [3, 3, 3]]
 32    [[1, 1, 32], [1, 2, 16], [1, 4, 8], [2, 2, 8], [2, 4, 4]]
 36    [[1, 1, 36], [1, 2, 18], [1, 3, 12],[1, 4, 9], [1, 6, 6], [2, 2, 9], [2, 3, 6], [3, 3, 4]]

Danh sách phụ không cần phải được sắp xếp, miễn là chúng là duy nhất.

Chấm điểm

Đây là mã golf, vì vậy câu trả lời ngắn nhất trong byte thắng. Sơ hở tiêu chuẩn bị cấm.

Dưới đây là một trình tạo trường hợp thử nghiệm

Bảng xếp hạng

Dưới đây là một Stack Snippet để tạo cả bảng xếp hạng thông thường và tổng quan về người chiến thắng theo ngôn ngữ.

Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu câu trả lời của bạn bằng một tiêu đề, sử dụng mẫu Markdown sau:

# Language Name, N bytes

nơi Nlà kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh chúng qua. Ví dụ:

# Ruby, <s>104</s> <s>101</s> 96 bytes

Nếu ở đó bạn muốn bao gồm nhiều số trong tiêu đề của mình (ví dụ: vì điểm của bạn là tổng của hai tệp hoặc bạn muốn liệt kê riêng các hình phạt cờ phiên dịch), hãy đảm bảo rằng điểm thực tế là số cuối cùng trong tiêu đề:

# Perl, 43 + 2 (-p flag) = 45 bytes

Bạn cũng có thể đặt tên ngôn ngữ thành liên kết sau đó sẽ hiển thị trong đoạn trích bảng xếp hạng:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes



Câu trả lời:


4

Thạch , 7 byte

œċ3P⁼¥Ƈ

Một liên kết đơn nguyên chấp nhận một số nguyên dương mang lại danh sách 3 danh sách các số nguyên dương.

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

Làm sao?

œċ3P⁼¥Ƈ - Link: positive integer, N
  3     - literal three
œċ      - all combinations (of [1..N]) of length (3) with replacement
           i.e. [[1,1,1],[1,1,2],...,[1,1,N],[1,2,2],[1,2,3],...,[1,2,N],...,[N,N,N]]
      Ƈ - filter keep those for which:
     ¥  -   last two links as a dyad:
   P    -     product
    ⁼   -     equals (N)?

5

JavaScript (V8) ,  61  60 byte

In các hình khối thành STDOUT.

n=>{for(z=n;y=z;z--)for(;(x=n/y/z)<=y;y--)x%1||print(x,y,z)}

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

Đã bình luận

n => {                // n = input
  for(                // outer loop:
    z = n;            //   start with z = n
    y = z;            //   set y to z; stop if we've reached 0
    z--               //   decrement z after each iteration
  )                   //
    for(              //   inner loop:
      ;               //     no initialization code
      (x = n / y / z) //     set x to n / y / z
      <= y;           //     stop if x > y
      y--             //     decrement y after each iteration
    )                 //
      x % 1 ||        //     unless x is not an integer,
      print(x, y, z)  //     print the cuboid (x, y, z)
}                     //

5

Haskell , 52 byte

f n=[[a,b,c]|a<-[1..n],b<-[1..a],c<-[1..b],a*b*c==n]

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

Tuples theo thứ tự giảm dần. "3" dường như là một con số đủ nhỏ để viết ra 3 vòng lặp ngắn hơn bất kỳ thứ gì tôi có thể nghĩ ra.


Tôi thích sự xáo trộn của việc gọi các bộ nội dung của danh sách được trả về.
Jonathan Frech


4

Thạch , 11 byte

ÆDṗ3Ṣ€QP=¥Ƈ

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

Một liên kết đơn âm lấy một số nguyên làm đối số của nó và trả về một danh sách các danh sách số nguyên.

Giải trình

ÆD          | Divisors
  ṗ3        | Cartesian power of 3
    Ṣ€      | Sort each list
      Q     | Unique
         ¥Ƈ | Keep only where the following is true (as a dyad, using the original argument as right argument)
       P    | - Product
        =   | - Is equal (to original argument)


2

Võng mạc , 59 byte

.+
*
2+%L$`(?<=(_+))(?=(\1)*$)
$` _$#2*
A`_(_+) \1\b
_+
$.&

Hãy thử trực tuyến! Liên kết bao gồm bộ kiểm tra. Giải trình:

.+
*

Chuyển đổi sang unary.

2+%L$`(?<=(_+))(?=(\1)*$)
$` _$#2*

Lặp lại hai lần, chia số cuối cùng trên mỗi dòng thành tất cả các cặp yếu tố có thể có của nó. Cái nhìn có vẻ tham lam và nguyên tử, vì vậy một khi nó khớp với tiền tố của số cuối cùng thì nó sẽ không quay lại. Điều này tạo ra tất cả các hoán vị có thể có của ba yếu tố.

A`_(_+) \1\b

Xóa các dòng trong đó các yếu tố không theo thứ tự tăng dần.

_+
$.&

Chuyển đổi thành số thập phân.


2

Pyth , 11 byte

fqQ*FT.CSQ3

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

        SQ  #              range(1, Q+1)          # Q = input
      .C  3 # combinations(             , 3)
f           # filter(lambda T: vvv, ^^^)
 qQ         # Q == 
   *FT      #      fold(__operator_mul, T) ( = product of all elements)


2

05AB1E , 8 byte

Ò3.ŒP€{ê
Ò               # prime factors of the input
 3.Œ            # all 3-element partitions
    P           # take the product of each inner list
     €{         # sort each inner list
       ê        # sort and uniquify the outer list

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



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.