ผู้ปกครองกระจัดกระจายน้อยที่สุด


20

ไม้บรรทัดมาตรฐานที่มีความยาวnมีเครื่องหมายระยะทางที่ตำแหน่ง 0, 1, ... , n (ในหน่วยใดก็ตาม) ไม้บรรทัดเบาบางมีส่วนย่อยของเครื่องหมายเหล่านั้น ไม้บรรทัดสามารถวัดระยะทางkถ้ามีเครื่องหมายที่ตำแหน่งPและQกับP - Q = k

ความท้าทาย

ป.ร. ให้ไว้เป็นจำนวนเต็มบวกnผลผลิตจำนวนขั้นต่ำของเครื่องหมายที่จำเป็นในการเป็นผู้ปกครองเบาบางของความยาวnเพื่อที่จะสามารถวัดระยะทางทั้งหมด 1, 2, ... , n

นี่คือOEIS A046693

ตัวอย่างเช่นสำหรับอินพุต 6 เอาต์พุตคือ 4 คือไม้บรรทัดที่มีเครื่องหมายที่ 0, 1, 4, 6 ทำงานเป็น 1 works0 = 1, 6−4 = 2, 4−1 = 3, 4−0 = 4, 6−1 = 5, และ 6−0 = 6

กฎเพิ่มเติม

  • อัลกอริทึมที่ควรจะเป็นที่ถูกต้องสำหรับขนาดใหญ่โดยพลn อย่างไรก็ตามเป็นที่ยอมรับได้หากโปรแกรมนั้นถูก จำกัด ด้วยข้อ จำกัด ด้านหน่วยความจำเวลาหรือชนิดข้อมูล
  • อินพุต / เอาต์พุตสามารถนำ / ผลิตโดยใด ๆวิธีการที่เหมาะสม
  • โปรแกรมหรือฟังก์ชั่นที่ได้รับอนุญาตในการเขียนโปรแกรมภาษา ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
  • รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ

กรณีทดสอบ

1   ->   2
2   ->   3
3   ->   3
4   ->   4
5   ->   4
6   ->   4
7   ->   5
8   ->   5
9   ->   5
10  ->   6
11  ->   6
12  ->   6
13  ->   6
14  ->   7
15  ->   7
16  ->   7
17  ->   7
18  ->   8
19  ->   8
20  ->   8
21  ->   8
22  ->   8
23  ->   8
24  ->   9
25  ->   9
26  ->   9
27  ->   9
28  ->   9
29  ->   9
30  ->  10
31  ->  10 
32  ->  10

คำตอบ:


2

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

ŒcIQL
‘ŒPÇÐṀḢL

ลิงก์ monadic ที่รับและส่งคืนจำนวนเต็มที่ไม่เป็นลบ

ลองออนไลน์! (15 ค่าแรกที่นี่ - ไม่มีประสิทธิภาพ)

อย่างไร?

ค้นหาผู้ปกครองทุกคนที่สามารถใช้เครื่องหมาย 1 ถึง n + 1 (ชุดกำลังของ [1, n + 1]) ซึ่งได้รับคำสั่งจากการนับจำนวนครั้งและเก็บเฉพาะที่สร้างระยะทางที่วัดได้สูงสุด (ความยาวของ ชุดความแตกต่างระหว่างเครื่องหมายคู่ที่ได้รับคำสั่งทั้งหมด) จากนั้นส่งคืนความยาวของเครื่องหมายแรก (เช่น [หนึ่งใน] หนึ่งสั้นที่สุด [s])

ŒcIQL - Link 1: number of measurable distances: list of numbers, ruler  e.g. [1,2,3,7]
Œc    - all pairs                                [[1,2],[1,3],[1,7],[2,3],[2,7],[3,7]]
  I   - incremental differences                                          [1,2,6,1,5,4]
   Q  - de-duplicate                                                       [1,2,6,5,4]
    L - length                                                                      5

‘ŒPÇÐṀḢL - Main link: number, n              e.g. 4
‘        - increment                              5
 ŒP      - power-set (implicit range of input)   [[],[1],[2],[3],[4],[5],[1,2],[1,3],[1,4],[1,5],[2,3],[2,4],[2,5],[3,4],[3,5],[4,5],[1,2,3],[1,2,4],[1,2,5],[1,3,4],[1,3,5],[1,4,5],[2,3,4],[2,3,5],[2,4,5],[3,4,5],[1,2,3,4],[1,2,3,5],[1,2,4,5],[1,3,4,5],[2,3,4,5],[1,2,3,4,5]]
    ÐṀ   - keep those maximal under:
   Ç     -   call the last link (1) as a monad   [[1,2,3,5],[1,2,4,5],[1,3,4,5],[1,2,3,4,5]]
      Ḣ  - head                                  [1,2,3,5]
       L - length                                 4



5

Pyth , 14 ไบต์

lh.Ml{-M^Z2ySh

ลองที่นี่!

Pyth , 21 19 ไบต์

hlMf!-SQmaFd.cT2ySh

ลองที่นี่!

มันทำงานอย่างไร

ฉันจะอัปเดตสิ่งนี้หลังจากเล่นกอล์ฟ

hSlMfqSQS {maFd.cT2ySh ~ โปรแกรมเต็มรูปแบบ Q = อินพุต

                   Sh ~ ช่วงจำนวนเต็ม [1, Q + 1]
                  y ~ Powerset
    f ~ Filter (ใช้ตัวแปร T)
              .cT2 ~ ชุดสององค์ประกอบทั้งหมดของ T
          m ~ แผนที่
           aFd ~ ลดความแตกต่างอย่างแน่นอน
        S {~ ซ้ำซ้อนเรียงลำดับ
     qSQ ~ เท่ากับช่วงจำนวนเต็ม [1, Q] หรือไม่
  lM ~ แผนที่ที่มีความยาว
hS ~ ขั้นต่ำ

ขอบคุณisaacgสำหรับการบันทึกไบต์สำหรับแนวทางที่สองของฉันและสร้างแรงบันดาลใจให้ฉันเล่นกอล์ฟ 3 ไบต์จากแนวทางปัจจุบันของฉัน!


ตั้งแต่ powerset จะได้รับคำสั่งจากความยาวเป็นครั้งแรกSที่ไม่จำเป็น
isaacg

@isaacg ขอบคุณ! คำตอบที่ยอดเยี่ยมของคุณ (+1) ทำให้ฉันเป็นแรงบันดาลใจให้ประหยัด 3 ไบต์จากวิธีการใหม่ของฉันซึ่งทำให้ 14 ไบต์
Mr. Xcoder


4

Husk , 20 18 ไบต์

λ▼mLfȯ≡⁰u´×≠tṖ⁰)…0

ขอบคุณ @ H.PWiz สำหรับ -2 ไบต์!

ลองออนไลน์!

คำอธิบาย

λ               )…0  -- lambda with argument ⁰ as [0..N]
              Ṗ⁰     -- all subsets of [0..N]
             t       -- tail (remove empty subset)
    f(      )        -- filter by following function:
           ≠         --   absolute differences
         ´×          --   of all pairs drawn from itself
        u            --   remove duplicates
      ≡⁰             --   "equal" to [0..N]
  mL                 -- map length
 ▼                   -- minimum

oa-เป็นเช่นเดียวกับ
H.PWiz

@ H.PWiz มันเป็นเรื่องสำคัญที่ความยาวเท่ากันเพราะไม่มีความแตกต่างใด ๆ นอกช่วง [0..N]
Martin Ender

คุณอาจจะได้ใช้
Martin Ender

4

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

‘ŒPµạþ`FQḊṫ³µÐfḢL

ลองออนไลน์!

บันทึก 1 ไบต์ขอบคุณJonathan Allan !


The-ชุดกำลังจะเรียงลำดับจากที่สั้นที่สุดเพื่อที่ยาวที่สุดดังนั้นฉันคิดว่าḢLควรจะตกลง ..
โจนาธานอัลลัน

3

Pyth, 15 ไบต์

lhf!-SQ-M^T2yUh

ชุดทดสอบ

มันทำงานอย่างไร

lhf!-SQ-M^T2yUh
             Uh    [0, 1, ... n]
            y      Powerset - all possible rulers
  f                Filer rulers on
         ^T2       All pairs of marks, in both orders
       -M          Differences - (a)
     SQ            [1, ... n], the desired list of differences - (b)
    -              Remove (a) from (b)
   !               Check that there's nothing left.
 h                 The first remaining ruler (powerset is ordered by size)
l                  Length

3

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

_þ`ẎQṢw
‘ŒPçÐfRḢL

ลองออนไลน์!

ยืมเคล็ดลับจากคำตอบของ Mr. Xcoder สำหรับ -1
-1 ขอบคุณที่โจนาธานอัลลัน


The-ชุดกำลังจะเรียงลำดับจากที่สั้นที่สุดเพื่อที่ยาวที่สุดดังนั้นฉันคิดว่าḢLควรจะตกลง ..
โจนาธานอัลลัน

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