เล่นกอล์ฟหมายเลขอดิศัย


46

คำนิยาม

  • หมายเลขพีชคณิตคือจำนวนที่เป็นศูนย์ของพหุนามที่ไม่เป็นศูนย์ที่มีสัมประสิทธิ์จำนวนเต็ม ยกตัวอย่างเช่นรากที่สองของเป็นพีชคณิตเพราะมันเป็นศูนย์2x^2 - 2
  • จำนวนอดิศัยคือจำนวนจริงซึ่งไม่เกี่ยวกับพีชคณิต

งาน

คุณต้องเลือกหมายเลขอดิศัย

จากนั้นเขียนโปรแกรม / ฟังก์ชั่นที่รับจำนวนเต็มบวกnและส่งออกตัวเลขทศนิยมที่n -th หลังจากจุดทศนิยมของตัวเลขยอดเยี่ยมที่คุณเลือก คุณต้องระบุอย่างชัดเจนในการส่งของคุณซึ่งจะใช้หมายเลขยอดเยี่ยม

คุณสามารถใช้ดัชนี 0 หรือดัชนี 1 ดัชนี

ตัวอย่าง

e^2=7.389056098...เป็นจำนวนยอดเยี่ยม สำหรับหมายเลขนี้:

n output
1 3
2 8
3 9
4 0
5 5
6 6
7 0
8 9
9 8
...

โปรดทราบว่าการเริ่มต้น7จะถูกละเว้น

ดังที่ฉันได้กล่าวไว้ข้างต้นคุณสามารถเลือกหมายเลขยอดเยี่ยมอื่น ๆ

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

นี่คือรหัสกอล์ฟคะแนนต่ำสุดเป็นไบต์ชนะ


คำตอบที่แตกต่างกันจัดการกับความจริงที่ว่ามีจำนวน จำกัด จำนวนเต็มที่สามารถใช้เป็นอาร์กิวเมนต์ได้อย่างไร 0 จะเป็นคำตอบที่ยอมรับได้เนื่องจากมีจำนวนอดิศัยซึ่งมีตัวเลข maxInteger ตัวแรกคือ 0
WNG

1
@WNG Languages ​​มีความแม่นยำตามอำเภอใจ ไม่มี maxinteger
Leun Nun

1
@WNG คุณสามารถนึกถึงดัชนีอินพุตเป็นสตริงไม่ใช่จำนวนเต็มในภาษาที่ไม่มีประเภทตัวเลขขนาดใหญ่โดยพลการ
isaacg

คำตอบ:


112

Python 3 ไบต์

min

ลองออนไลน์!

ใช้สตริงตัวเลขส่งออกตัวเลขที่เล็กที่สุดเป็นอักขระที่เล็กที่สุด ยกตัวอย่างเช่นให้254 2ทศนิยมด้วยตัวเลขเหล่านี้เริ่มต้น

0.0123456789011111111101222222220123333333012344444401234555550123456666012345678801234567

นี่คือOEIS A054054

การอ้างสิทธิ์:หมายเลขนี้cเป็นยอดเยี่ยม

หลักฐาน: โปรดทราบว่าcมีเบาบางมาก: ตัวเลขเกือบทั้งหมดเป็นศูนย์ นั่นเป็นเพราะขนาดใหญ่nมีความน่าจะเป็นสูงที่nมีตัวเลขศูนย์ทำให้มีหน่วยเป็นนาที นอกจากนี้ยังcมีศูนย์ติดต่อกันเป็นเวลานาน เราใช้ผลลัพธ์ที่มีอยู่ซึ่งระบุว่าวิธีการcนี้ยอดเยี่ยม

ต่อไปนี้คำถาม math.SEให้Z(k)แทนตำแหน่งของk'TH ไม่ใช่ศูนย์หลักcและปล่อยให้c_kเป็นไปได้ว่าเป็นศูนย์หลักจำนวนทั้งระหว่างและ1 9จากนั้นเราจะแสดงการขยายตัวของทศนิยมcแต่เพียงการตัวเลขภัณฑ์เช่นเป็นผลรวมในช่วงของk=1,2,3,...c_k/10^Z(k)

เราใช้ผลลัพธ์ของจุดที่ 4 ของคำตอบนี้โดย George Lowther นั่นcคือยอดเยี่ยมถ้ามีจำนวนศูนย์ที่มีจำนวนไม่น้อยที่มีค่าคงที่ของจำนวนหลักอย่างต่อเนื่อง อย่างเป็นทางการจะต้องมีε>0เพื่อให้สำหรับหลายอย่างมากมายZ(k+1)/Z(k) > 1+ε kเราจะใช้ε=1/9

สำหรับจำนวนตัวเลขใด ๆdใช้kกับZ(k) = 99...99กับdเก้า มีkอยู่เช่นนี้เพราะเลขนี้ในcคือ9และไม่ใช่ศูนย์ นับเพิ่มขึ้นจากตัวเลขเหล่านี้ทั้งหมดมีศูนย์หลักดังนั้นจึงเครื่องหมายจุดเริ่มต้นของระยะยาวของศูนย์ใน99...99 cภัณฑ์หลักต่อไปคือไม่ได้จนกว่าZ(k+1) = 1111...11กับd+1คน อัตราส่วนเล็กน้อยเกินกว่าZ(k+1)/Z(k)1+1/9

สิ่งนี้เป็นไปตามเงื่อนไขสำหรับทุกคนdซึ่งหมายถึงผลลัพธ์


ฉันค่อนข้างตื่นเต้นที่จะเห็นหลักฐาน
Leun Nun

1
ได้รับอนุญาตหรือไม่ minตัวเองไม่ได้ป้อนข้อมูลใด ๆ และไม่ได้ให้ผลลัพธ์ใด ๆ ซึ่งเป็นคำถามที่ต้องการ แน่นอนว่ามันเป็นฟังก์ชั่นหลักในภาพรวม แต่มันไม่ได้ทำอะไรเลยหากไม่มีเครื่องกำเนิดและพิมพ์คำสั่งที่ปรากฏใน 'ลองใช้งานออนไลน์'
เสา

6
@Mast ใช่ปัญหาคือการส่งออกตัวเลข n'th ที่กำหนดให้ไม่ใช่เพื่อสร้างทศนิยม รหัสทดสอบคือการแสดงลำดับของตัวเลข และการแสดงออกที่ประเมินฟังก์ชั่นรวมทั้งฟังก์ชั่นที่แท้จริงคือการส่งฟังก์ชั่นที่ถูกต้อง
xnor

1
เจริญตาเจริญใจ :)))
ก๋วยเตี๋ยว 9

38

Pyth, 1 ไบต์

h

อินพุตและเอาต์พุตเป็นสตริง ฟังก์ชั่นใช้ตัวเลขแรกของดัชนี จำนวนอดิศัยที่เกิดขึ้นดูเหมือนว่า:

0.0123456789111111111122222222223 ...

นี่คือยอดเยี่ยมเพราะมันเป็น1/9บวกจำนวนที่มีศูนย์ของความยาวอย่างน้อยเศษส่วนคงที่ของจำนวน ขึ้นอยู่กับคำตอบ math.stackexchange นี้ซึ่งหมายความว่าจำนวนเป็นยอดเยี่ยม

มีศูนย์ของเลขศูนย์จากหลัก100 ... 000ถึง199 ... 999ดังนั้นอัตราส่วนของZ(k+1)ถึงZ(k)2 มักจะอนันต์

ดังนั้นจำนวนเหนือลบ1/9คือยอดเยี่ยมและดังนั้นหมายเลขข้างต้นเป็นยอดเยี่ยม


1
โปรดทราบว่าคำถามที่ถามในโพสต์ M.SE ที่เชื่อมโยงใช้ไม่ได้กับหมายเลขนี้ แต่จุดที่ 4 ของคำตอบโดย George Lowther
Henning Makholm

16

Python 2 , 19 ไบต์

lambda n:1>>(n&~-n)

n THหลักคือ1ถ้าnเป็นอำนาจของ2และ0มิฉะนั้น

ลองออนไลน์!


3
ฉันจะตอบคำถามนี้ แต่ฉันไม่พบข้อพิสูจน์เรื่องการมีชัย อะไรทำให้คุณเชื่อว่าจำนวนนี้ยอดเยี่ยม n&~-n>0สั้นลงตามวิธี
orlp


1
หมายเลข @orlp Fredholm
Leaky Nun

@ หรือฉันจะต้องถาม OP ว่า Booleans ดีไหม
Dennis


11

brainfuck, 2 ไบต์

,.

ในทำนองเดียวกันกับคำตอบอื่น ๆ ให้ส่งกลับทศนิยมหลักแรกและละเว้นส่วนที่เหลือ



5

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

1!`.

ส่งคืนตัวเลขแรกของหมายเลขอินพุต เนื่องจากพอร์ตนั้นน่าเบื่อดังนั้นนี่จึงมีพอร์ตเพิ่มเติม:

O`.
1!`.

(8 ไบต์) ส่งคืนตัวเลขต่ำสุดของตัวเลขอินพุต

.+
$*
+`^(11)+$
$#1$*
^1$

(25 ไบต์) ส่งคืน 1 ถ้าหมายเลขอินพุตคือกำลังของ 2

.+
$*_

$.`
+1`.(\d*)_
$1
1!`.

(30 bytes) ค่าคงที่ของ Champernowne


4

Brachylog 2, 7 ไบต์

⟦₁c;?∋₎

ลองออนไลน์!

คำนวณตัวเลขของค่าคงที่ของ Champernowne (อาจคูณด้วยกำลังสิบเนื่องจากปัญหาการจัดทำดัชนีซึ่งเห็นได้ชัดว่าไม่สำคัญที่นี่) โดยทั่วไปนี้เพียงแค่เชื่อมกันจำนวนเต็มและจากนั้นจะใช้เวลาที่ nหลัก


ทำไมคุณต้อง⟦₁?
Leun Nun

@LeakyNun: เพราะไม่เช่นนั้นเราจะเริ่มเชื่อมตัวเลขด้วย 0 และคุณทำไม่ได้เพราะ0123ไม่ใช่ตัวเลข (มันมีเลขนำหน้าซึ่งไม่ตรงกับแนวคิดของ Brachylog ว่าตัวเลขนั้นคืออะไร)

4

Python 2, 13 ไบต์

อินพุตและเอาต์พุตเป็นสตริง

lambda n:n[0]

ตัวเลขที่ n ของตัวเลขเป็นเลขที่สำคัญที่สุดของ n เมื่อเขียนเป็นทศนิยม


4
คุณควรระบุว่าเพราะเหตุใดตัวเลขนี้จึงเยี่ยมยอด
orlp

2
@orlp ดูเหมือนว่าการอ้างอิงของ xnor สามารถนำมาใช้ได้อย่างง่ายดายเช่นกัน - ลบ 1/9 จากจำนวนแล้ว Z (n + 1) / Z (n) ~ = 2 อนันต์บ่อยครั้ง (ระหว่าง 10 ^ x และ 2 * 10 ^ x )
feersum

4

MATL , 7 ไบต์

4YA50<A

วิธีนี้ใช้ตัวเลขสองตัวแรกที่ให้ไว้ที่นี่หารด้วย 3 (ซึ่งคงไว้ซึ่งวิชชา ):

1.100110000000000110011 ...

อินพุตเป็นแบบอิง 1 ลองออนไลน์! หรือดู 20 ทศนิยมแรก

คำอธิบาย

4YA     % Convert to base 4 using chars '0', '1', '2', '3' as digits
50<A    % Are all digits less than '2'? Gives 0 (false) or 1 (true) 

3

จาวาสคริปต์, 51 ไบต์

ฟังก์ชั่นนี้คำนวณnตัวเลข th ของค่าคงตัวของ Champernowne เพิ่มที่จุดเริ่มต้นและเรียกเช่นf= f(arg)โปรดทราบว่าnมีการจัดทำดัชนี 1

n=>[..."1".repeat(n)].map((c,i)=>c*++i).join``[n-1]

คำอธิบาย

nฟังก์ชั่นนี้จะใช้เวลาในอาร์กิวเมนต์เดียว จากนั้นสร้างnสตริงของอักขระ 1-long ที่ซ้ำซ้อน จากนั้นแยกสตริงนั้นออกเป็น Array of 1s หลังจากนั้นมันวนซ้ำทุกองค์ประกอบของอาเรย์และทวีคูณพวกมันด้วยดัชนีในอาเรย์ที่เพิ่มขึ้น 1 จากนั้นมันจะรวมอาเรย์เข้าด้วยกันเหนือ""(สตริงว่าง) เพื่อสร้างสตริง ในที่สุดก็ส่งคืนnองค์ประกอบที่สามของสตริงที่ได้รับ

หมายเหตุ: ประเภทของค่าที่ส่งกลับอยู่เสมอสตริง

ตัวอย่างการทดสอบ

let f =

n=>[..."1".repeat(n)].map((c,i)=>c*++i).join``[n-1]

i.oninput = e => o.innerHTML = f(parseInt(e.target.value,10));
<input id=i><pre id=o></pre>


3

Python 2, 43 ไบต์

ค่าคงที่ของ Champernowne

lambda n:"".join(`i`for i in range(n+1))[n]

ทำไมคุณต้องn+1?
Leun Nun

@LeakyNun เพราะฉันได้รับข้อผิดพลาดในการทำดัชนีสำหรับ n <= 1
orlp

คุณสามารถใช้การจัดทำดัชนี 1 รายการ
Leun Nun

@LeakyNun n <= 1.
orlp

ฉันคิดว่าคุณต้องระบุ Python 2 สำหรับอันนี้
numbermaniac

3

APL (Dyalog) 3 ไบต์

2|⍴

ลองออนไลน์! (ชุดทดสอบสร้างช่วงของตัวเลขจาก1ถึง10000แปลงเป็นสตริงแล้วนำไปใช้กับรถไฟ2|⍴)

ใช้เวลาจำนวนการป้อนข้อมูลที่เป็นสตริงและส่งกลับความยาวพอควร 2. มันดังนั้น123=> =>3 mod 21

ลำดับเริ่มต้นดังนี้:

1  1  1  1  1  1  1  1  1  0  0  0  0  0  0  ...

ดังนั้นนี่จึงเป็นลักษณะโดยทั่วไปเช่น: 9 1s 90 0s 900 1s ...

การคูณจำนวนนี้ด้วย 9 จะทำให้เรามีหมายเลข Liouvilleซึ่งพิสูจน์แล้วว่าเป็นยอดเยี่ยม


ฉันไม่คิดว่านี่เป็นหมายเลข Liouville - ไม่ชัดเจนสำหรับฉันที่คุณจะได้ n> 10 มันไม่พอดีกับทฤษฎีบทแข็งแกร่งคนอื่น ๆ ที่นี่ได้ใช้ แต่
Ørjan Johansen

@ ØrjanJohansenคุณสามารถแสดงได้1 - 10^-9 + 10^-99 - 10^-999 + 10^-9999 - 10^-99999 + ...ดังนั้นจึงเป็นหมายเลข Liouville
Leun Nun

@LeakyNun เศษส่วนของเลขชี้กำลังต่อเนื่องอยู่ที่ประมาณ 10 แต่เพื่อให้พอดีกับคำจำกัดความของวิกิพีเดียมันจำเป็นต้องมีขอบเขต - นั่นเป็นสาเหตุที่ดัชนี 1 ค่าคงที่ของ Liouville ดั้งเดิมใช้แฟคทอเรียลและไม่ใช่เลขชี้กำลัง
Ørjan Johansen

3

Haskell, 25 ไบต์ 17 ไบต์

(!!)$concat$map show[1..]

ค่าคงที่ของ Champernowneสามารถเป็นดัชนี 0 หรือ 1 เนื่องจาก C10 * .01 ยังคงยอดเยี่ยม

แก้ไข: ตามความคิดเห็นของ nimis คุณสามารถใช้รายการ monad เพื่อลดสิ่งนี้เป็น

(!!)$show=<<[1..]

2
=<<จากรายการ monad คือconcat.map: (!!)$show=<<[1..].
nimi

2

JavaScript, 73 ไบต์

นี่คือโปรแกรมที่คำนวณตัวเลขnth ของ Liouville Constant ซึ่งnเป็นหมายเลขอินพุตที่กำหนดโดยการเรียกใช้ฟังก์ชันgเป็นg(arg)(และnถูกทำดัชนี 1 รายการ) โปรดทราบว่าจำเป็นต้องขึ้นบรรทัดใหม่ในรหัส

f=n=>n<1?1:n*f(n-1);g=(n,r=0)=>{for(i=0;i<=n;i++)if(f(i)==n)r=1
return r}

คำอธิบาย

โปรแกรมประกอบด้วยสองฟังก์ชั่นและf เป็นฟังก์ชั่นคำนวณแบบเรียกซ้ำและเป็นหน้าที่หลักของโปรแกรม ถือว่าจะมีอาร์กิวเมนต์เดียว มันกำหนดอาร์กิวเมนต์เริ่มต้นมีค่าเป็น 0 มันแล้ว iterates กว่าทุกจำนวนเต็มจาก 0 ถึงและในแต่ละซ้ำตรวจสอบไม่ว่าจะเป็นฟังก์ชั่นใช้กับ(ดัชนีปัจจุบัน) เท่ากับคือไม่ว่าจะเป็นปัจจัยของ หากเป็นกรณีนี้ค่าของจะถูกตั้งค่าเป็น 1 ในตอนท้ายของฟังก์ชั่นจะถูกส่งกลับgfgg nrnfinnirr

ตัวอย่างสำหรับการทดสอบ

f=n=>n<1?1:n*f(n-1);g=(n,r=0)=>{for(i=0;i<=n;i++)if(f(i)==n)r=1
return r}

i.oninput = e => o.innerHTML = g(parseInt(e.target.value,10))
<input id=i><pre id=o></pre>

คำเตือน: อย่าใส่ค่าที่มีขนาดใหญ่มากในกล่องอินพุตของตัวอย่าง! มิฉะนั้นอุปกรณ์ของคุณอาจค้าง!


1

Pyth, 7 5 4 ไบต์

@jkS

ลองออนไลน์!

ใช้ค่าคงที่ของ Champernowne

บันทึก2 3 ไบต์ขอบคุณ Leaky Nun


1
คุณสามารถใช้jkเพื่อแทนที่sm`dฉันเชื่อว่า
Leun Nun

1
คุณสามารถใช้Sแทนได้Uhหรือไม่?
Leun Nun

ฉันคิดว่าพวกเขามีคุณสมบัติเหมือนกันดังนั้นใช่ ฉันอ่านเอกสารทั้งหมด>.>
ตบมือ

มันไม่ทำงานเหมือนกัน Sเริ่มต้นด้วย1และเริ่มต้นด้วยU 0
Leun Nun

ทำไมคุณกลับคืนการแก้ไขของคุณ? จำนวนผลลัพธ์ยังคงยอดเยี่ยม
Leun Nun

1

Java 8, 18 ไบต์

เช่นเดียวกับคำตอบของเดนนิสสำหรับงูหลาม 2ที่จำนวน Fredholm

n->(n&(n-1))>0?0:1

(n-1)สามารถ~-nหรือ--nเพื่อบันทึก 2 ไบต์ หรือคุณสามารถมีเดียวกันกับเดนนิสคำตอบ: หรือn->1>>(n&~-n) 1>>(n&--n)
Kevin Cruijssen


1

Charcoal , 24 ไบต์ (ไม่ใช่การแข่งขัน)

NαAIUVN⟦UGPi⁺α¹⟧β§β⁺α›α⁰

ลองออนไลน์!

หมายเหตุ:ณ เวลาที่โพสต์ไม่ทำงานสำหรับnที่ nเป็นบวกหลาย 14

คำอธิบาย

Nα                             Input number to a
   A                  β        Assign to b
     I                         Cast
       UVN                    Evaluate variable N
            ⟦UGPi⁺α¹⟧         With arguments GetVariable(Pi) and a+1
                        §β⁺α›α⁰ Print b[a+(a>0)]

GetVariable(Pi)? ดังนั้นจึงไม่มีπตัวแปรที่กำหนดไว้ล่วงหน้า?
Neil

@ Neil ยังไม่ได้และฉันไม่ได้ตั้งใจที่จะทำให้πเท่ากับ Pi เพราะนี่เป็นภาษาเชิง ASCII ไม่ใช่ภาษาเชิงคณิตศาสตร์
ASCII- เท่านั้น

1

Japt , 3 1 + 1 = 2 1 ไบต์

ท่าเรืออีกวิธีการแก้ปัญหาของ feersum

รับอินพุตเป็นสตริง

g

ลองออนไลน์


คำอธิบาย

   :Implicit input of string U
g  :The first character of the string

การป้อนข้อมูลสามารถสตริงเพื่อให้คุณสามารถทำg1 ไบต์ :)
โอลิเวอร์

ความท้าทายไม่ได้กล่าวถึงการป้อนข้อมูลสตริง @obarakon ดังนั้นฉันจึงใช้จำนวนเต็มในพอร์ต JSของฉันแล้วหันมาที่นี่
Shaggy

อ้า gotcha คำตอบอื่น ๆ จำนวนมากใช้อินพุตสตริง แต่คุณพูดถูก OP ไม่ได้พูดถึงเรื่องความท้าทาย
Oliver

1

TI-BASIC ขนาด 16 ไบต์

โดยทั่วไปจะทดสอบว่าอินพุตN(ทำดัชนี 1 รายการ) เป็นตัวเลขสามเหลี่ยมหรือไม่ นี่ก็เหมือนกับการคืนค่าNตัวเลขหลักที่ 0.1010010001 …ซึ่งได้รับการพิสูจน์แล้วว่ายอดเยี่ยม ลำดับของตัวเลขเป็นOEIS A010054

Input N
int(√(2N
2N=Ans(Ans+1

0

ฟูริเยร์, 16 ไบต์

I~NL~S10PS~XN/Xo

ลองออนไลน์!

เช่นเดียวกับคำตอบอื่น ๆ ที่ทำไปแล้วผลลัพธ์ของตัวเลขแรกของอินพุต

คำอธิบายของรหัส:

N = User Input
S = log(N)
X = 10 ^ S
Print (N/X)

0

JavaScript (ES6)

เพียงไม่กี่พอร์ตของโซลูชั่นอื่น ๆ


โซลูชัน Python ของ feersumขนาด 12 ไบต์

n=>(""+n)[0]


โซลูชัน Python ของเดนนิสขนาด 13 ไบต์

n=>1>>(n&--n)


โซลูชัน Python ของ xnorขนาด 20 ไบต์

n=>Math.min(...""+n)



0

05AB1E , 3 1 ไบต์

แก้ไข : การใช้การพิสูจน์จากคำตอบอื่น ๆ จะคืนค่าตัวเลขแรกของอินพุต

¬

สร้างดัชนี 1 รายการสำหรับπ (สูงสุด 100000 หลักเท่านั้น)

žs¤

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

žs  # Implicit input. Gets n digits of pi (including 3 before decimal)
  ¤ # Get last digit

หรือหากคุณต้องการ e (ยังคงเป็น 1 ดัชนี) (สูงสุด 10,000 หลักเท่านั้น)

žt¤

ลองออนไลน์!


0

J, 2 ไบต์

โซลูชันเดียวกันที่ทุกคนใช้คือ:

{.

ส่งคืนตัวเลขแรกของ n IO อยู่ในสตริง

Liouville's Constant ขนาด 9 ไบต์

(=<.)!inv

ส่งคืน1หากอินพุตเป็นแฟคทอเรียลของจำนวนเต็ม

Pi, 13 ไบต์

{:":<.@o.10x^

ตัวเลขที่ไม่ใช่ทศนิยมสุดท้ายของ pi คูณ 10 ^ n





0

ภาษาการเขียนโปรแกรมของเช็คสเปียร์ , 76 ไบต์

,.Ajax,.Ford,.Act I:.Scene I:.[Enter Ajax and Ford]Ford:Open mind.Speak thy.

ลองออนไลน์!


คุณมีตัวละครพิเศษที่นั่น
Jo King

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