เอาท์พุต Cuboids ปัจจัยที่แตกต่าง


14

เอาท์พุต Cuboids ปัจจัยที่แตกต่าง

งานในวันนี้นั้นง่ายมาก: เนื่องจากเป็นจำนวนเต็มบวกเอาท์พุทตัวแทนของแต่ละคิวบ์ที่สามารถจัดรูปแบบโดยปัจจัย

คำอธิบาย

ปริมาตรทรงลูกบาศก์เป็นผลคูณของความยาวสามด้าน ยกตัวอย่างเช่นลูกบาศก์ 4 ของปริมาณที่มีความยาวด้านเป็นจำนวนเต็มสามารถมีด้าน[1, 1, 4], [1, 2, 2], [1, 4, 1], [2, 1, 2], หรือ[2, 2, 1] [4, 1, 1]อย่างไรก็ตามบางส่วนของสิ่งเหล่านี้เป็นตัวแทนของลูกบาศก์เดียวกัน: เช่น[1, 1, 4]และ[4, 1, 1]จะหมุนลูกบาศก์เดียวกัน มีเพียงสองรูปทรงสี่เหลี่ยมที่แตกต่างกันมีปริมาณที่ 4 และจำนวนเต็มด้าน: และ[1, 1, 4] [1, 2, 2]เอาต์พุตสามารถเป็นตัวแทนของคิวบอยแรกและการแสดงใด ๆ ของคิวบอยที่สอง

อินพุต

โปรแกรมของคุณจะต้องใช้เวลาบวกเดียวจำนวนเต็ม21n2311

เอาท์พุต

คุณจะต้องส่งออกลูกบาศก์ที่เป็นไปได้ทั้งหมดในรายการหรือวิธีอื่น ๆ ที่ยอมรับได้ เช่น

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]]

รายการย่อยไม่จำเป็นต้องเรียงลำดับตราบเท่าที่ยังไม่ซ้ำกัน

เกณฑ์การให้คะแนน

นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดจึงจะชนะ ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม

นี่คือเครื่องกำเนิดไฟฟ้ากรณีทดสอบ

ลีดเดอร์

นี่เป็นตัวอย่างข้อมูลเพื่อสร้างทั้งกระดานผู้นำปกติและภาพรวมของผู้ชนะตามภาษา

เพื่อให้แน่ใจว่าคำตอบของคุณปรากฏขึ้นโปรดเริ่มคำตอบด้วยหัวข้อโดยใช้เทมเพลต Markdown ต่อไปนี้:

# Language Name, N bytes

ที่Nมีขนาดของส่งของคุณ หากคุณปรับปรุงคะแนนของคุณคุณสามารถเก็บคะแนนเก่าไว้ในบรรทัดแรกโดยการตีพวกเขาผ่าน ตัวอย่างเช่น

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

หากคุณต้องการรวมหลายตัวเลขไว้ในส่วนหัวของคุณ (เช่นเนื่องจากคะแนนของคุณคือผลรวมของสองไฟล์หรือคุณต้องการแสดงรายการการลงโทษการตั้งค่าสถานะของล่ามแยกต่างหาก) ตรวจสอบให้แน่ใจว่าคะแนนจริงเป็นตัวเลขสุดท้ายในส่วนหัว:

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

นอกจากนี้คุณยังสามารถตั้งชื่อภาษาให้เป็นลิงค์ซึ่งจะปรากฏในตัวอย่างกระดานแต้มนำ:

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



ความท้าทายที่เกี่ยวข้อง
Arnauld

คำตอบ:


4

เยลลี่ขนาด 7 ไบต์

œċ3P⁼¥Ƈ

ลิงก์ monadic ยอมรับจำนวนเต็มบวกซึ่งให้รายการของ 3 รายการของจำนวนเต็มบวก

ลองออนไลน์!

อย่างไร?

œċ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 ไบต์

พิมพ์ cuboids ไปที่ STDOUT

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

ลองออนไลน์!

แสดงความคิดเห็น

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 ไบต์

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

ลองออนไลน์!

สิ่งอันดับอยู่ในลำดับจากมากไปน้อย "3" ดูเหมือนจะเป็นจำนวนน้อยพอที่การเขียน 3 ลูปนั้นสั้นกว่าสิ่งทั่วไปที่ฉันจะได้รับ


ฉันชอบ meta-obfuscation ของการเรียก tuples เนื้อหาของรายการที่ส่งคืน
Jonathan Frech


4

เยลลี่ 11 ไบต์

ÆDṗ3Ṣ€QP=¥Ƈ

ลองออนไลน์!

ลิงก์ monadic ที่ใช้จำนวนเต็มเป็นอาร์กิวเมนต์และส่งคืนรายการของจำนวนเต็ม

คำอธิบาย

Æ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

เรติน่า 59 ไบต์

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

ลองออนไลน์! ลิงค์มีชุดทดสอบ คำอธิบาย:

.+
*

แปลงเป็นเอก

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

ทำซ้ำสองครั้งแบ่งตัวเลขสุดท้ายของแต่ละบรรทัดออกเป็นคู่ของปัจจัยที่เป็นไปได้ทั้งหมด lookbehind นั้นโลภและอะตอมดังนั้นเมื่อมันจับคู่กับคำนำหน้าของหมายเลขสุดท้ายมันจะไม่ย้อนกลับ สิ่งนี้สร้างการเรียงสับเปลี่ยนที่เป็นไปได้ทั้งหมดในสามปัจจัย

A`_(_+) \1\b

ลบบรรทัดที่ปัจจัยไม่ได้เรียงตามลำดับ

_+
$.&

แปลงเป็นทศนิยม





โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.