มีขนาดเล็กที่สุดที่มองไม่เห็น แต่ไม่มีการแบ่งปันตัวเลข!


28

ท้าทาย

ที่ PPCG เราแน่ใจว่าชอบลำดับของเราดังนั้นนี่คือความสนุกอีกอัน

ลองกำหนดa(n)ว่าเป็นจำนวนเต็มไม่ใช่ลบที่เล็กที่สุดXที่ไม่เท่ากับa(k)( 0 < k < n) ใด ๆและa(n-1)และXไม่แชร์ทศนิยมหลักใด ๆa(0) = 0

รับอินพุตn > 0เอาต์พุตเช่นa(n)นั้น

ตัวอย่างเช่นสำหรับการป้อนข้อมูลn = 13ที่เรามีa(13) = 20ตั้งแต่a(12) = 11และ20เป็นที่ไม่ใช่เชิงลบจำนวนเต็มเล็กที่สุดเราไม่ได้เห็นเลยว่าไม่ได้เปิดเผยตัวเลขทศนิยมใด ๆ 11กับ

ลำดับ

ต่อไปนี้เป็นคำศัพท์ 20 คำแรกที่ให้คุณเริ่มต้นได้ นี่คือลำดับA067581บน OEIS

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 22, 11, 20, 13, 24, 15, 23, 14, 25

กฎระเบียบ

  • อินพุตและเอาต์พุตสามารถสันนิษฐานว่าเหมาะสมกับชนิดจำนวนเต็มดั้งเดิมของภาษาของคุณ
  • อินพุตและเอาต์พุตจะได้รับในรูปแบบที่สะดวกใด
  • คุณสามารถเลือก 0 ดัชนีอย่างที่ฉันเป็นในตัวอย่างของฉันหรือ 1 ดัชนีสำหรับการส่งของคุณ โปรดระบุสิ่งที่คุณกำลังทำ
  • ยอมรับได้ทั้งโปรแกรมหรือฟังก์ชั่น หากฟังก์ชั่นคุณสามารถส่งคืนผลลัพธ์มากกว่าการพิมพ์
  • หากเป็นไปได้โปรดใส่ลิงค์ไปยังสภาพแวดล้อมการทดสอบออนไลน์เพื่อให้ผู้อื่นสามารถลองใช้รหัสของคุณได้!
  • ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
  • นี่คือเพื่อให้ใช้กฎการตีกอล์ฟตามปกติทั้งหมดและรหัสที่สั้นที่สุด (เป็นไบต์) ชนะ

เราสามารถรับn > 1(หรือn ≥ 2) เป็นอินพุตได้หรือไม่ (การจัดทำดัชนี 1 รายการ)
Erik the Outgolfer

@EriktheOutgolfer แน่นอนว่าใช้ได้ เห็นได้ชัดว่าฉันพลาดกระสุนที่จุดเมื่อคัดลอกวางเพราะนั่นคือมาตรฐานของความท้าทายของฉัน
AdmBorkBork

5
แปลงกระจายแน่ใจว่าดูดี :)
flawr

คำตอบ:



7

Japt , 18 ไบต์

@A{!ZøA «As oX}a}g

ทดสอบออนไลน์! ฉันเพิ่งเพิ่มgคุณสมบัติที่ใช้ที่นี่ แต่มันเป็นสิ่งที่ฉันตั้งใจจะเพิ่มเป็นเวลานาน (และสิ่งนี้ทำให้ฉันเกินขอบเพราะไม่ใช่gโซลูชันของฉันมีขนาดประมาณ 35 ไบต์)

คำอธิบาย

@   A{!ZøA «  As oX}a}g
XYZ{A{!ZøA &&!As oX}a}gU
                           Implicit: U = input integer
   {                 }gU   Starting with [0, 1], return the U'th item generated by
XYZ{                 }     this function: (X = previous item, Y = index, Z = full array)
    A{             }a        Return the smallest non-negative integer A where
      !ZøA &&                  Z does not contain A (A is not yet in the sequence), and
             !As oX            A.toString() does not contain any of the same chars as X.
                           Implicit: output result of last expression

นี่ทำให้ฉันปวดหัว! แต่แล้วฉันก็แทบจะไม่เหลียวมองวิธีการฟังก์ชั่นใด ๆ ใน Japt
ปุย

ไม่ใช่กฎเริ่มต้นที่คุณไม่สามารถเพิ่มบางสิ่งลงในภาษาหลังจากที่คำถามได้รับหรือไม่ มันจะไม่สำคัญเลยที่จะสร้างบิวด์อินใหม่ขึ้นมาเพื่อแก้ไขความท้าทายทำให้มันสั้นทั้งหมดโดยพลการ
trlkly

@trlkly ฉันเชื่อว่ามันได้รับอนุญาตในการตัดสินที่ดี ในตัวฉันเพิ่มเป็นวัตถุประสงค์ทั่วไปมากขึ้นกว่าเพียงแค่คำตอบเดียวนี้ ฉันคิดว่าบางคนอาจเพิ่มสิ่งที่มีอยู่ภายในซึ่งสามารถแก้ปัญหาได้ทั้งหมด แต่คำตอบเช่นนั้นจะต้องได้รับการตอบรับที่แย่มาก
ETHproductions


3

Haskell, 79 ไบต์

f 0=0
f x=[i|i<-[1..],all((/=i).f)[1..x-1],all(`notElem`show(f$x-1))$show i]!!0

รหัสไม่มีประสิทธิภาพอย่างน่ากลัว ในการคำนวณค่าที่มากกว่าเช่น> 12 ให้เพิ่มf x|x<11=xระหว่างสองบรรทัด (นำไปใช้gในลิงก์ TIO)

ลองออนไลน์!


1

JavaScript (ES6), 82 ไบต์

0 การจัดทำดัชนี

f=(n,x=[1,p=0])=>n--?f(x[(g=k=>x[k]||(k+'').match(`[${p}]`)?g(k+1):p=k)(0)]=n,x):p

การสาธิต


1

Husk , 18 ไบต์

!¡₁;0
ḟȯ¬V€d→⁰d-⁰N

วิธีแก้ปัญหา 1 ดัชนี ลองออนไลน์!

แก้ไข:แก้ไขข้อบกพร่องสำหรับ +1 ไบต์

คำอธิบาย

ฟังก์ชันการวนซ้ำภายในตัวของ Husk ¡มีความหมายมากมาย ที่นี่ฉันใช้ "สร้างรายการที่ไม่มีที่สิ้นสุดโดยการผนวกองค์ประกอบใหม่ที่คำนวณจากรายการที่มีอยู่ซ้ำ ๆ " บรรทัดที่สองคือฟังก์ชันตัวช่วยซึ่งคำนวณองค์ประกอบใหม่:

ḟȯ¬V€d→⁰d-⁰N  Takes a list of existing elements, e.g. x = [0,1,...,10]
           N  The positive integers
         -⁰   with elements of x removed:        [11,12,13,...
ḟȯ            Find an element n of this list that satisfies:
        d     Digits of n.
   V          Is any of them
    €         an element of
     d        the digits of
      →⁰      the last element of x?
  ¬           Negate.
              Returns 22.

บรรทัดแรกคือฟังก์ชั่นหลัก:

!¡₁;0  Takes an integer k.
 ¡     Iterate adding new elements to the list
   ;0  [0]
  ₁    using the helper function,
!      take k'th element of result.

ฉันเพิ่ม Husk ลงในรายการภาษาการเล่นกอล์ฟแล้ว โปรดแจ้งให้เราทราบหากฉันมีรายละเอียดที่ไม่ถูกต้อง
ETHproductions

1

Haskell, 78 ไบต์

n!k|r:_<-[j|j<-[1..],all(/=j)k,all(`notElem`show n)$show j]=n:r!(r:k)
(0![]!!)

มันจะมีประสิทธิภาพมากขึ้นถ้าการโต้แย้งครั้งที่สอง!จะไม่เป็นรายการของตัวเลขที่เห็น แต่เป็นตัวเลขที่มองไม่เห็น แต่ฉันไม่สามารถทำได้โดยไม่ต้องใช้ไบต์มากขึ้น

ลองออนไลน์!


0

Mathematica 115 ไบต์

ยังคงมีพื้นที่สำหรับเล่นกอล์ฟนี้ - และอาจใช้การเรียกซ้ำ (ดังนั้นจึงเร่งความเร็ว)

(For[z={0};i=1,Length@z<#,
For[i=1,!FreeQ[z,i]||!DisjointQ@@IntegerDigits/@{l,i},i++];
z~AppendTo~i;l=Last@z;
];l)&

รหัส verbose ดั้งเดิมที่มีแนวคิดพื้นฐานเดียวกัน:

MakeSequenceA067581[n_]:=Module[{list={0}, innerCounter=1},

While[Length@list<n,
innerCounter=1;
(* inner loop *)While[Or[MemberQ[list,innerCounter],Intersection[IntegerDigits[Last@list],IntegerDigits[innerCounter]]!={}],innerCounter++];
AppendTo[list,innerCounter];
];
list
]
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.