ลำดับของ Szekeres


9

คำนิยาม

  • a(1) = 1
  • a(2) = 2
  • a(n)เป็นจำนวนที่น้อยที่สุดk>a(n-1)ที่หลีกเลี่ยงการใด ๆ ที่ก้าวหน้าเลขคณิต 3 a(1), a(2), ..., a(n-1), kระยะใน
  • ในคำอื่น ๆa(n)เป็นจำนวนที่น้อยที่สุดk>a(n-1)เช่นว่ามีไม่ได้อยู่x, yที่และ0<x<y<na(y)-a(x) = k-a(y)

ทำงานออกมาเป็นตัวอย่าง

สำหรับn=5:

เรามี a(1), a(2), a(3), a(4) = 1, 2, 4, 5

หากa(5)=6แล้ว2, 4, 6รูปแบบการก้าวหน้าเลขคณิต

หากa(5)=7แล้ว1, 4, 7รูปแบบการก้าวหน้าเลขคณิต

หากa(5)=8แล้ว2, 5, 8รูปแบบการก้าวหน้าเลขคณิต

หากa(5)=9แล้ว1, 5, 9รูปแบบการก้าวหน้าเลขคณิต

หากa(5)=10ไม่พบความก้าวหน้าทางเลขคณิต

a(5)=10ดังนั้น

งาน

ได้รับการส่งออกna(n)

รายละเอียด

  • n จะเป็นจำนวนเต็มบวก
  • คุณสามารถใช้ดัชนี 0 แทนดัชนี 1 ดัชนีซึ่งในกรณีนี้nสามารถเป็น0ได้ โปรดระบุในคำตอบของคุณหากคุณใช้ดัชนี 0

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

เนื่องจากเราพยายามหลีกเลี่ยงการดำเนินการทางคณิตศาสตร์ 3 คำและ 3 เป็นจำนวนน้อยรหัสของคุณควรมีขนาดเล็ก (เช่นสั้น) ที่สุดเท่าที่จะเป็นไปได้ในแง่ของจำนวนไบต์

Testcases

การทดสอบมีการจัดทำดัชนี 1 ชุด คุณสามารถใช้ดัชนี 0 แต่โปรดระบุไว้ในคำตอบของคุณหากคุณทำเช่นนั้น

1     1
2     2
3     4
4     5
5     10
6     11
7     13
8     14
9     28
10    29
11    31
12    32
13    37
14    38
15    40
16    41
17    82
18    83
19    85
20    86
10000 1679657

อ้างอิง


2
ที่เกี่ยวข้อง (ถ้าฉันเข้าใจการท้าทายของคุณอย่างถูกต้อง)
Martin Ender

@MartinEnder คุณเข้าใจความท้าทายของฉันถูกต้องแล้ว
Leun Nun

คำตอบ:


8

เยลลี่ 4 ไบต์

Bḅ3‘

ลองออนไลน์! หรือตรวจสอบกรณีทดสอบทั้งหมด

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

สิ่งนี้ใช้การจัดทำดัชนีแบบอิง 0 และข้อกำหนดหลักจากOEIS :

ลำดับของ Szekeres: a (n) -1ใน ternary = n-1ในไบนารี

Bḅ3‘  Main link. Argument: n

B     Convert n to binary.
 ḅ3   Convert from ternary to integer.
   ‘  Increment the result.

6

Haskell, 37 36 32 ไบต์

การใช้สูตรที่กำหนดในรายการ OEIS โดยใช้ดัชนีที่อิง 0 ขอบคุณ @nimi สำหรับ 4 ไบต์!

a 0=1;a m=3*a(div m 2)-2+mod m 2

3

Python 3, 28 ไบต์

lambda n:int(bin(n)[2:],3)+1

ฟังก์ชันที่ไม่ระบุตัวตนที่รับอินพุตผ่านอาร์กิวเมนต์และส่งคืนผลลัพธ์ นี่คือดัชนีที่ศูนย์

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

lambda n    Anonymous function with input zero-indexed term index n
bin(n)      Convert n to a binary string..
...[2:]     ...remove `0b` from beginning...
int(...,3)  ...convert from base-3 to decimal...
...+1       ...increment...
:...        and return

ลองใช้กับ Ideone





0

Java 8, 52 46 ไบต์

0 จัดทำดัชนีแล้ว

i->Integer.valueOf(Integer.toString(i,2),3)+1;

คุณไม่ต้องการreturnแต่คุณต้องการเซมิโคลอนหลังจากนั้น
Leaky Nun

คำตอบที่บอกว่าเครื่องหมายอัฒภาคไม่ถูกนับ ฉันสามารถเปลี่ยนได้ทั้งสองวิธี แต่นับเซมิโคลอนเป็นเอกฉันท์หรือไม่
Justin

เอ๊ะนั่นคือสิ่งที่พวกเขาบอกฉัน ฉันไม่รู้ว่าฉันทามติเป็นเช่นนี้หรือไม่
Leun Nun

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