หนึ่ง OEIS หลังจากนั้นอีกหนึ่ง


95

ในฐานะของ 13/03/2018 16:45 UTC, ผู้ชนะคือตอบ # 345โดยScrooble ซึ่งหมายความว่าการแข่งขันจะสิ้นสุดลงอย่างเป็นทางการ แต่คุณสามารถโพสต์คำตอบได้ต่อไปตราบใดที่พวกเขาปฏิบัติตามกฎ

เช่นกันเพียงแค่ตะโกนสั้น ๆ ถึงสามอันดับแรกในแง่ของจำนวนคำตอบ:

1. NieDzejkob - 41 คำตอบ

2. KSmarts - 30 คำตอบ

3. Hyper Neutrino - 26 คำตอบ


นี่เป็นคำถามคำตอบการเชื่อมโยงที่ใช้ลำดับจาก OEIS และความยาวของการส่งก่อนหน้า

คำถามคำตอบการผูกมัดนี้จะทำงานในวิธีต่อไปนี้:

  • ฉันจะโพสต์คำตอบแรก โซลูชันอื่นทั้งหมดต้องเกิดจากสิ่งนั้น
  • ผู้ใช้รายถัดไป (เรียกว่าผู้ใช้ userA) จะพบลำดับ OEIS ที่หมายเลขดัชนี (ดูด้านล่าง) จะเหมือนกับความยาวของรหัสของฉัน
  • การใช้ลำดับนั้นจะต้องใช้รหัสในภาษาที่ไม่ได้ใช้โปรแกรมที่ใช้จำนวนเต็มเป็นอินพุต n และส่งออกตัวเลขที่ n ในลำดับนั้น
  • ถัดไปพวกเขาโพสต์โซลูชันของพวกเขาหลังจากของฉันและผู้ใช้ใหม่ (userB) จะต้องทำซ้ำสิ่งเดียวกัน

nระยะ TH ลำดับเป็นครั้งระยะ n หลังจากที่ครั้งแรกกับการทำงานกับค่าแรกถูกค่าแรกที่ระบุบนหน้า OEIS ของมัน ในคำถามนี้เราจะใช้การจัดทำดัชนี 0สำหรับลำดับเหล่านี้ ตัวอย่างเช่นกับA000242และn = 3ผลที่ถูกต้องจะเป็น25

แต่!

นี่ไม่ใช่ดังนั้นรหัสที่สั้นที่สุดไม่สำคัญ แต่ความยาวของรหัสของคุณยังคงมีผลกระทบ เพื่อป้องกันการทำสำเนาของลำดับที่bytecount ของคุณจะต้องไม่ซ้ำกัน ซึ่งหมายความว่าไม่มีโปรแกรมอื่นที่ส่งมาที่นี่สามารถมีความยาวเท่ากันเป็นไบต์ของคุณ

หากไม่มีลำดับความยาวของโพสต์ล่าสุดลำดับของโพสต์ของคุณจะเป็นลำดับที่ไม่ได้ใช้ต่ำสุด ซึ่งหมายความว่าลำดับที่ใช้จะต้องไม่ซ้ำกันและลำดับนั้นไม่สามารถเหมือนกันกับจำนวน bytecount ของคุณ

หลังจากโพสต์คำตอบแล้วและไม่มีคำตอบใหม่โพสต์เกินกว่าหนึ่งสัปดาห์คำตอบก่อนโพสต์ล่าสุด ( คำตอบที่ไม่ทำลายโซ่) จะชนะ

อินพุตและเอาต์พุต

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

การจัดรูปแบบ

เช่นเดียวกับส่วนใหญ่โปรดจัดรูปแบบคำตอบของคุณเช่นนี้

# N. language, length, [sequence](link)

`code`

[next sequence](link)

*anything else*

กฎระเบียบ

  • คุณต้องรออย่างน้อย 1 ชั่วโมงก่อนโพสต์คำตอบหลังจากโพสต์แล้ว
  • คุณไม่สามารถโพสต์สองครั้ง (หรือมากกว่า) ในแถว
  • หมายเลขดัชนีของลำดับคือหมายเลขหลังชิ้นAส่วนและนำเลขศูนย์ออก (เช่นA000040หมายเลขดัชนีคือ 40)
  • คุณสามารถสันนิษฐานได้ว่าทั้งอินพุตและเอาต์พุตที่ต้องการจะไม่อยู่นอกช่วงตัวเลขภาษาของคุณ แต่โปรดอย่าใช้สิ่งนี้ในทางที่ผิดโดยเลือกภาษาที่สามารถใช้ตัวเลข 1 เท่านั้น
  • หากความยาวของการส่งของคุณมีความยาวมากกว่า 65536 ตัวอักษรโปรดระบุลิงก์ไปยังวิธีการเข้าถึงรหัส (ตัวอย่างเช่น pastebin)
  • n จะไม่ใหญ่กว่า 1,000 หรือเกินขอบเขตสำหรับลำดับเพียงเพื่อป้องกันความคลาดเคลื่อนที่แม่นยำจากการหยุดภาษาจากการแข่งขัน
  • ทุก 150 คำตอบ (ถูกต้อง) จำนวนครั้งที่ภาษาอาจถูกใช้เพิ่มขึ้น ดังนั้นหลังจากมีการโพสต์โซลูชั่น 150 รายการทุกภาษาอาจถูกนำมาใช้สองครั้ง ตัวอย่างเช่นเมื่อโพสต์ 150 คำตอบ Python 3 อาจถูกนำมาใช้สองครั้ง แต่เนื่องจากมีการใช้งานครั้งเดียวแล้วหมายความว่าสามารถใช้งานได้อีกครั้งจนกว่าจะมีการโพสต์คำตอบ 300 ครั้ง
  • โปรดเป็นประโยชน์และโพสต์ลิงก์ไปยังลำดับถัดไปที่จะใช้ สิ่งนี้ไม่จำเป็น แต่เป็นข้อเสนอแนะ
  • รุ่นที่แตกต่างของภาษาเช่นงูหลาม 2 และ Python 3 ภาษาที่แตกต่างกัน ตามกฎทั่วไปหากทั้งสองเวอร์ชันมีให้บริการใน Try It Online พวกเขาเป็นภาษาต่าง ๆ แต่โปรดจำไว้ว่านี่เป็นกฎทั่วไปและไม่ใช่คำตอบที่เข้มงวด
  • มันไม่ได้ถูกแบน แต่โปรดอย่าคัดลอกรหัสจากหน้า OEIS และพยายามแก้ไขมัน
  • อนุญาตให้ใช้ Hardcoding เฉพาะในกรณีที่ลำดับมี จำกัด โปรดทราบว่าคำตอบที่แจ้งนี้ ( # 40 ) เป็นข้อยกเว้นของกฎ คำตอบเล็ก ๆ น้อย ๆ ในช่วงต้นของ hardcode ลูกโซ่ แต่สิ่งเหล่านี้สามารถถูกเพิกเฉยได้เนื่องจากไม่มีวิธีที่ดีในการลบ chain ถึง # 100

ตัวอย่างคำตอบของห่วงโซ่


ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ได้รับการย้ายไปแชท
เดนนิส

มันตกลงไหมถ้าโปรแกรมต้องการความแม่นยำของ floating-point ที่ดีกว่าสำหรับ builtin float/ doubletype เพื่อสร้างค่าที่มากขึ้นn?
NieDzejkob

1
@Giuseppe ไม่ในขณะที่คุณกำลังสร้างตัวเลขด้วยการทำคณิตศาสตร์มากกว่าแค่วางมันลงในอาร์เรย์ / สตริง
caird coinheringaahing

2
@cairdcoinheringaahing ในความคิดของฉันมันเป็นการเข้ารหัสค่าคงที่แกมม่า มันไม่ทำงาน "ในทางทฤษฎี" สำหรับจำนวนที่มากขึ้น
user202729

คำตอบ:


4

345. brainfuck , 162 ไบต์, A000301

+<<,[>>[>]<<[>>+>+<<<-]>>>[<<<+>>>-]<<[>+>+<<-]>>[<<+>>-]<[<]<-]>>[>]+<[-]++<[>[>>+>+<<<-]>>>[<<<+>>>-]<<[>[>+>+<<-]>>[<<+>>-]<<<-]>[-]>[<<+>>-]<<<<-]>>too golfy.

ลองออนไลน์!

ลำดับต่อไป!

สิ่งนี้จะเป็นการป้อนตัวอักษรที่มีรหัสจุดn(ตามข้อกำหนดของ BF) และเอาท์พุทในลักษณะเดียวกัน หากต้องการดูตัวเลขที่ผมขอแนะนำให้ใช้ @ Timwi ของEsotericIDE

คำอธิบาย:

+<<,                                  Initialize the tape with the first two Fibonacci numbers. Take loop counter from input.
[                                     n times:
  >>[>]                                 Move to the end of the tape. 
  <<[>>+>+<<<-]>>>[<<<+>>>-]            Add fib(n-2)...
  <<[>+>+<<-]>>[<<+>>-]                 and fib(n-1). Store on the end of the tape.
  <[<]<-                                Move back to start of tape. Update loop counter.
]                                     End loop.
>>[>]+<[-]++<                         Delete the extra Fibonacci number and prepare for exponentiation. 
[                                     fib(n) times:
  >[>>+>+<<<-]>>>[<<<+>>>-]<<           Copy the base (2) to preserve it.
  [>[>+>+<<-]>>[<<+>>-]<<<-]            Multiply what started as a 1 by the base.
  >[-]>[<<+>>-]<<<<-                    Clean up and update loop counter.
]                                     End loop.
>>too golfy.                          Add some bytes, for all sequences <162 had been used. Print result. 

เนื่องจากสิ่งนี้เก็บตัวเลขทั้งหมดของฟีโบนักชีถึงหมายเลขที่สำคัญมันจะล้มเหลวสำหรับการป้อนข้อมูลขนาดใหญ่จริงๆบนเทปที่มีขอบเขต

สิ่งนี้สามารถย่อให้สั้นลงได้อย่างมากโดยการเข้ารหัสฐาน (2) แต่ความเป็นกอล์ฟไม่ได้เป็นปัญหาเลย


ในฐานะที่เป็นคำตอบต่อไป (# 346) ทำลายโซ่คำตอบของคุณคือผู้ชนะ!
caird coinheringaahing

1
@cairdcoinheringaahing ขอบคุณสำหรับความท้าทายที่น่าทึ่งนี้ มันทำให้ฉันเศร้าใจว่ามันควรจะจบลง แต่สิ่งที่ดีทั้งหมดในโลกนี้ก็จบลงด้วย ตอนนี้เพื่อเล่นกอล์ฟแก้ตัวที่ไม่ดีสำหรับรหัสเพราะตอนนี้มันเป็นคำตอบแรกที่ทุกคนจะเห็นและมันจะต้องสั้นอย่างน่าประทับใจ ...
Khuldraeseth na'Barya

@Scrooble คุณเปลี่ยนความยาวไม่ได้จริงๆ ...
NieDzejkob

@NieDzejkob ใช่ แต่ฉันสามารถเล่นกอล์ฟและเพิ่มช่องว่างเพิ่มเติมเพื่อให้มีความยาวเท่ากัน
Khuldraeseth na'Barya

@cairdcoinheringaahing "ทำลายโซ่" หรือไม่? นั่นหมายความว่าอย่างไร?
Magic Octopus Urn

40

22. FiM ++ , 982 ไบต์, A000024

หมายเหตุ : หากคุณกำลังอ่านสิ่งนี้คุณอาจต้องการเรียงลำดับโดย "เก่าที่สุด"

Dear PPCG: I solved A000024!

I learned how to party to get a number using the number x and the number y.
Did you know that the number beers was x?
For every number chug from 1 to y,
  beers became beers times x!
That's what I did.
Then you get beers!
That's all about how to party.

Today I learned how to do math to get a number using the number n.
Did you know that the number answer was 0?
For every number x from 1 to n,
  For every number y from 1 to n,
    Did you know that the number tmp1 was how to party using x and 2?
    Did you know that the number tmp2 was how to party using y and 2?
    Did you know that the number max was how to party using 2 and n?
    tmp2 became tmp2 times 10!
    tmp1 became tmp1 plus tmp2!
    If tmp1 is more than max then: answer got one more.
  That's what I did.
That's what I did.
Then you get answer!
That's all about how to do math.

Your faithful student, BlackCap.

PS:  This is the best answer
PPS: This really is the best answer

ลำดับถัดไป


10
ฮ่าฮ่าฮ่าหัวเราะหนักมากทั้งเรื่อง +1 สำหรับตัวเลือกภาษา :-)
ETHproductions

น่าทึ่งลอง
โหวต

22

1. สามเหลี่ยม 10 ไบต์A000217

$\:_%i/2*<

ลองออนไลน์!

ลำดับถัดไป

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

รหัสจัดรูปแบบเป็นสามเหลี่ยมนี้

   $
  \ :
 _ % i
/ 2 * <

เมื่อ IP เริ่ม$และเคลื่อนที่ไปทางตะวันออกเฉียงใต้ (SE, heh) จะทำงานดังนี้:

$            Take a numerical input (n);     STACK = [n]
 :           Duplicate it;                   STACK = [n, n]
  i          Increment the ToS;              STACK = [n, n+1]
   <         Set IP to W;                    STACK = [n, n+1]
    *        Multiply ToS and 2ndTos;        STACK = [n(n+1)]
     2       Push 2;                         STACK = [n(n+1), 2]
      /      Set IP to NE;                   STACK = [n(n+1), 2]
       _     Divide ToS by 2ndToS;           STACK = [n(n+1)/2]
        \    Set IP to SE (heh);             STACK = [n(n+1)/2]
         %   Output ToS as number;           STACK = [n(n+1)/2]
          *  Multiply ToS by 2ndToS (no op); STACK = [n(n+1)/2]

13
1. สามเหลี่ยม 10 ไบต์ A000217 * ตามลิงค์ * A000217 Triangular numbers...
MD XF

22

73. Starry , 363 ไบต์, A000252

, +      + *     '.     `
 + + + +  *  *  *  +     
 +`      +*       +    ` 
 + +   +  + +   + *  '   
   +   '  ####`  + +   + 
 + +    ####  +*   +    *
    '  #####  +      + ' 
  `    ######+  + +   +  
+ +   + #########   * '  
 +   +  + #####+ +      +
*  +      + * +  *  *   +
   +  *  + + + +  *  *   
+   +  +   *   + `  + +  
 +  + +   + *'    +    +.

ลองออนไลน์!

ลำดับถัดไป

ใช้สูตร " a(n) = n^4 * product p^(-3)(p^2 - 1)*(p - 1)ซึ่งผลิตภัณฑ์อยู่เหนือจำนวนเฉพาะทั้งหมดที่แบ่ง n" จาก OEIS

ดวงจันทร์เป็นสิ่งที่ไม่ต้องทำอะไรเลย แต่เดี๋ยวก่อนนี่ไม่ใช่โค้ดกอล์ฟ


ดวงดาวในดวงจันทร์? hmmm
betseg

19

97. Python 3 (PyPy) , 1772 ไบต์, A000236

ก่อนอื่นขอขอบคุณดร. Max Alekseyev ที่อดทนกับฉัน ฉันโชคดีมากที่ฉันสามารถติดต่อเขาทางอีเมลเพื่อทำความเข้าใจกับความท้าทายนี้ คำตอบทางคณิตศาสตร์ของเขาที่นี่ช่วยฉันได้มาก ขอบคุณ Wheat Wizard ที่ช่วยฉันเช่นกัน :)

plist = []

def primes(maximal = -1): # Semi-efficient prime number generator with caching up to a certain max.
	index = plist and plist[-1] or 2
	for prime in plist:
		if prime <= maximal or maximal == -1: yield prime
		else: break
	while index <= maximal or maximal == -1:
		composite = False
		for prime in plist:
			if index % prime == 0:
				composite = True
				break
		if not composite:
			yield index
			plist.append(index)
		index += 1

def modinv(num, mod): # Multiplicative inverse with a modulus
	index = 1
	while num * index % mod != 1: index += 1
	return index

def moddiv(num, dnm, mod):
	return num * modinv(dnm, mod) % mod

def isPowerResidue(num, exp, mod):
	for base in range(mod):
		if pow(base, exp, mod) == num:
			return base
	return False

def compute(power, prime):
	for num in range(2, prime):
		if isPowerResidue(moddiv(num - 1, num, prime), power, prime):
			return num - 1
	return -1

# file = open('output.txt', 'w')

def output(string):
	print(string)
	# file.write(str(string) + '\n')

def compPrimes(power, count):
	maximum = 0
	index = 0
	for prime in getValidPrimes(power, count):
		result = compute(power, prime)
		if result > maximum: maximum = result
		index += 1
		# output('Computed %d / %d = %d%% [result = %d, prime = %d]' % (index, count, (100 * index) // count, result, prime))
	return maximum

def isValidPrime(power, prime):
	return (prime - 1) % power == 0

def getValidPrimes(power, count):
	collected = []
	for prime in primes():
		if isValidPrime(power, prime):
			collected.append(prime)
		if len(collected) >= count:
			return collected
		# output('Collected %d / %d = %d%% [%d]' % (len(collected), count, (100 * len(collected)) // count, prime))

power = int(input()) + 2

output(compPrimes(power, 100))

# file.close()

ลองออนไลน์!

ถ้ามันให้ผลที่ผิดให้เพิ่ม 100 ให้ใหญ่ขึ้น ฉันคิดว่า 10,000 จะใช้งานได้สำหรับ 4 แต่ฉันจะปล่อยให้คอมพิวเตอร์ของฉันทำงานข้ามคืนเพื่อยืนยัน อาจใช้เวลาสองสามชั่วโมงกว่าจะเสร็จ

โปรดทราบว่าส่วน (PyPy) เป็นเพียงเพื่อให้ฉันสามารถใช้ Python อีกครั้ง ฉันไม่รู้ภาษาอื่น ๆ อีกมากมายจริง ๆ และฉันจะไม่ลองพอร์ตนี้กับ Java และเสี่ยงที่จะไม่เสร็จทันเวลา

ลำดับต่อไป (และโปรดอย่าทำสิ่งคณิตศาสตร์ที่บ้าคลั่งอีกต่อไปฉันไม่มีรุ่น Python เหลือไว้ดังนั้นคนอื่นจะต้องบันทึกความท้าทายนี้ D :)



15

107. TrumpScript , 1589 ไบต์, A000047

My cat hears everything really well
because with me every cat is a safe cat
Everybody knows that one is 1000001 minus 1000000
but only most of you that two is, one plus one;
As always nothing is, one minus one;
My dog is one year old.
I promise you that as long as you vote on me, nothing will be less cool than a cat;:
Much dog is, dog times two;
Dead cat is, cat minus one;!
I will make dog feel good, food for dog plus one;
Roads can be made using different things. Asphalt is one of them.
As long as Hillary jailed, I love asphalt less than my dog;:
Roads are, always made using asphalt plus one of other things;
I promise my roadways are, two times asphalt than you want;
My roadways are great, always roadways plus one;
Vladimir is nothing more than my friend.
Name of Putin is Vladimir.
As long as, Putin eat less roadways;:
China is nothing interesting.
We all know people speaking Chinese are from China.
As long as, Chinese makes less roads;:
I will make economy, for Putin - Chinese will love me;
If it will mean, economy is asphalt in Russia?;:
I will make cat feel good, cat plus one dollar on food;
Make Vladimir roadways to help Russia economy.
Never make china roads!
I show you how great China is, China plus one; You can add numbers to China.
Like Chinese is, China times China makes sense;
Like Chinese is, two times Chinese letter;!
Make Vladimir happy, Vladimir plus one million dollars;
I also show you how great Putin is, Vladimir times Vladimir; You can do number stuff to Putin too!
I will make asphalt roads a lot!
Everybody say cat. You did it? America is great.

ลองออนไลน์!

การเขียนโปรแกรมครั้งแรกใน TrumpScript เป็นไปได้ที่ฉันจะสร้างล้อใหม่สองสามครั้ง - มี 4 บรรทัดสำหรับการคำนวณ 2 ^ n ฉันพยายามทำให้มันดูเหมือนสิ่งที่ (เมา) ทรัมป์สามารถพูดได้ เป็นโบนัสนี่เป็นสคริปต์ Python ที่ฉันเขียนเพื่อยืนยันว่าฉันทำทุกอย่างถูกต้อง มีความแตกต่างบางประการกับโปรแกรมข้างต้น แต่ส่วนใหญ่จะเทียบเท่าโดยตรง

cat = int(input())
dog = 2 ** cat + 1
asphalt = 1
cat = 0
while asphalt < dog:
    roads = asphalt + 1
    roadways = 2 * asphalt + 1
    vladimir = 0
    putin = vladimir
    while putin < roadways:
        china = 0
        chinese = china
        while chinese < roads:
            chair = putin - chinese
            if chair == asphalt:
                cat += 1
                vladimir = roadways
                china = roads
            china += 1
            chinese = 2 * china * china
        vladimir += 1
        putin = vladimir * vladimir
    asphalt = roads
print(cat)

ลำดับต่อไป!


3
I will make cat feel goodO_O
Business Cat

น่าเศร้าที่ใช้I will make Business Cat feel goodไม่ได้ ...
NieDzejkob

14

30. Python 1 , 1112 bytes, A000046

def rotations(array):
	rotations = []
	for divider_index in range(len(array)):
		rotations.append(array[divider_index:] + array[:divider_index])
	return rotations

def next(array):
	for index in range(len(array) - 1, -1, -1):
		array[index] = 1 - array[index]
		if array[index]: break
	return array

def reverse(array):
	reversed = []
	for index in range(len(array) - 1, -1, -1):
		reversed.append(array[index])
	return reversed

def primitive(array):
	for index in range(1, len(array)):
		if array == array[:index] * (len(array) / index): return 1
	return 0

def necklaces(size):
	previous_necklaces = []
	array = [0] * size
	necklaces = 0
	for iteration in range(2 ** size):
		if not primitive(array) and array not in previous_necklaces:
			necklaces = necklaces + 1
			for rotation in rotations(array):
				complement = []
				for element in rotation:
					complement.append(1 - element)
				previous_necklaces.append(rotation)
				previous_necklaces.append(complement)
				previous_necklaces.append(reverse(rotation))
				previous_necklaces.append(reverse(complement))
		array = next(array)
	return necklaces

ลองออนไลน์!

ไม่แม้แต่จะไปตีกอล์ฟนี้ นี่ไม่ใช่คำตอบที่ยาวที่สุดของ Python ในเว็บไซต์นี้!

ลำดับถัดไป


1
ขอแสดงความยินดีกับการถอดรหัสคณิตศาสตร์: D
Leun Nun


@LeakyNun อย่างที่ฉันพูดฉันไม่ได้สนใจที่จะตีกอล์ฟฮ่า ๆ ๆ นอกจากนี้ยังไม่ใช่คำตอบของ Python ที่ยาวที่สุดของฉันบนเว็บไซต์นี้ดังนั้น idc: P แต่ดี
HyperNeutrino

@LeakyNun และขอบคุณ: D ฉันใช้เวลาสักครู่เพื่อทำความเข้าใจกับมันทั้งหมดฮ่า ๆ ๆ
HyperNeutrino

@LeakyNun 309 ไบต์เนื่องจากค่าจริงของ_ไม่เกี่ยวข้อง เราต้องทำซ้ำหลาย ๆ ครั้ง
HyperNeutrino

13

2. Haskell, 44 ไบต์, A000010

f k|n<-k+1=length.filter(==1)$gcd n<$>[1..n]

ลองออนไลน์!

ลำดับถัดไป


12
ชื่อของลำดับถัดไปแม้ว่า ...
สิ้นเชิงมนุษย์

@Totallyhuman ผู้น่าสงสารกระต่าย ...
Erik the Outgolfer

เราควรลิงก์ไปยังโพสต์ก่อนหน้าหรือไม่
Leun Nun

มันทำให้ฉันเจ็บปวดที่ฉันไม่สามารถตีกอล์ฟได้ในตอนนี้ ฉันต้องเป็นคนแรกที่คุณเห็น
BlackCap

ลำดับถัดไปคืออะไร ฉันไม่เข้าใจสามสิ่งนี้: P
เบต้าสลายตัว

13

9. Pyth , 19 ไบต์, A000025

?>Q0sm@_B1-edld./Q1

ชุดทดสอบ

ลำดับถัดไป

a (n) = จำนวนพาร์ติชันของ n ที่มีเลขคู่ติดลบด้วยอันดับคี่ อันดับของพาร์ติชันคือส่วนที่ใหญ่ที่สุดลบด้วยจำนวนชิ้นส่วน


สำหรับคนที่รู้จัก Pyth ฉันตั้งใจจะใช้>Q0แทนที่จะเป็นQลำดับเพื่อรู้ว่ามีลำดับถัดไปเป็น A000019
Leun Nun

1
จากหน้า OEISKeywords: easy,nice
BlackCap

@LeakyNun Yeah ตั้งแต่นั้นฉันต้องแก้ A000017 ... ขั้นต้น
Erik the Outgolfer


12

206. Proton , 3275 bytes, A000109

# This took me quite a while to write; if it's wrong, please tell me and I'll try to fix it without changing the byte count..

permutations = x => {
	if len(x) == 0 return [ ]
	if len(x) == 1 return [x]
	result = []
	for index : range(len(x)) {
		for permutation : permutations(x[to index] + x[index + 1 to]) {
			result.append([x[index]] + permutation)
		}
	}
	return result
}

adjacency = cycles => {
	cycles = cycles[to]
	size = cycles.pop()
	matrix = [[0] * size for i : range(size)]
	for cycle : cycles {
		i, j, k = cycle[0], cycle[1], cycle[2]
		matrix[i][j] = matrix[i][k] = matrix[j][i] = matrix[j][k] = matrix[k][i] = matrix[k][j] = 1
	}
	return matrix
}

transform = a => [[a[j][i] for j : range(len(a[i]))] for i : range(len(a))]

isomorphic = (a, b) => {
	return any(sorted(b) == sorted(transform(A)) for A : permutations(transform(a)))
}

intersection = (a, b) => [x for x : a if x in b]

union = (a, b) => [x for x : a if x not in b] + list(b)

validate = graph => {
	matrix = adjacency(graph)
	rowsums = map(sum, matrix)
	r = 0
	for s : rowsums if s + 1 < graph[-1] r++
	return 2 || r
}

graphs = nodes => {
	if nodes <= 2 return []
	if nodes == 3 return [[(0, 1, 2), 3]]
	result = []
	existing = []
	for graph : graphs(nodes - 1) {
		graph = graph[to]
		next = graph.pop()
		for index : range(len(graph)) {
			g = graph[to]
			cycle = g.pop(index)
			n = g + [(cycle[0], cycle[1], next), (cycle[1], cycle[2], next), (cycle[2], cycle[0], next), next + 1]
			N = sorted(adjacency(n))
			if N not in existing {
				existing += [sorted(transform(a)) for a : permutations(transform(adjacency(n)))]
				result.append(n)
			}
			for secondary : index .. len(graph) - 1 {
				g = graph[to]
				c1 = g.pop(index)
				c2 = g.pop(secondary)
				q = union(c1, c2)
				g = [k for k : g if len(intersection(k, intersection(c1, c2))) <= 1]
				if len(intersection(c1, c2)) == 2 {
					for i : range(3) {
						for j : i + 1 .. 4 {
							if len(intersection(q[i, j], intersection(c1, c2))) <= 1 {
								g.append((q[i], q[j], next))
							}
						}
					}
				}
				g.append(next + 1)
				N = sorted(adjacency(g))
				if N not in existing {
					existing += [sorted(transform(a)) for a : permutations(transform(adjacency(g)))]
					result.append(g)
				}
				for tertiary : secondary .. len(graph) - 2 {
					g = graph[to]
					c1 = g.pop(index)
					c2 = g.pop(secondary)
					c3 = g.pop(tertiary)
					q = union(union(c1, c2), c3)
					g = [k for k : g if len(intersection(k, intersection(c1, c2))) <= 1 and len(intersection(k, intersection(c2, c3))) <= 1]
					if len(q) == 5 and len(intersection((q1 = intersection(c1, c2)), (q2 = intersection(c2, c3)))) <= 1 and len(q1) == 2 and len(q2) == 2 {
						for i : range(4) {
							for j : i + 1 .. 5 {
								if len(intersection(q[i, j], q1)) <= 1 and len(intersection(q[i, j], q2)) <= 1 {
									g.append((q[i], q[j], next))
								}
							}
						}
						g.append(next + 1)
						N = sorted(adjacency(g))
						if N not in existing {
							existing += [sorted(transform(a)) for a : permutations(transform(adjacency(g)))]
							result.append(g)
						}
					}
				}
			}
		}
	}
	return [k for k : result if max(sum(k[to -1], tuple([]))) + 1 == k[-1] and validate(k)]
}

x = graphs(int(input()) + 3)
print(len(x))

ลองออนไลน์!

ลำดับถัดไป


เดี๋ยวก่อนคุณทำจริงเหรอ? หากคุณไม่ได้เขียนบทความด้วยโปรแกรมประหลาดเหล่านี้และไปคุยกับอาจารย์บางคนคุณจะพบกับสิ่งดีๆ: P
Stephen

@Stephen กำลังแก้ไขข้อผิดพลาดฮ่า ๆ
HyperNeutrino

นี่เป็นวิธีแยกสามเหลี่ยมสามเหลี่ยมและ pentagons ตาม plantri หรือไม่ ดูเหมือนว่าอาจจะเป็น แต่บางส่วนของไวยากรณ์ที่ไม่คุ้นเคย
Peter Taylor

1
@PeterTaylor สมมติว่าฉันเข้าใจวิธีการที่คุณอธิบายใช่มันจะหารูปสามเหลี่ยมและวางจุดยอดที่อยู่ติดกับทั้งสามยอดหรือสองรอบที่อยู่ติดกันและลบขอบที่พบบ่อยและวางจุดสุดยอดที่อยู่ติดกับทั้งสามสามเหลี่ยมเหมือนกัน บนรูปห้าเหลี่ยม ฉันคิดว่านั่นคือสิ่งที่คุณกำลังอธิบาย
HyperNeutrino


12

308. ENIAC (ตัวจำลอง) , 3025 ไบต์, A006060

pseudocode:

repeat{
    M←input
    N←-M
    A←1
    B←253
    while(N<0){
        C←60
        C←C-A
        repeat(194){
            C←C+B
        }
        A←B
        B←C
        N←N+1
    }
    output←A
}

ไม่มีโปรแกรมจำลองออนไลน์ผลการดำเนินการ: อินพุตเครื่องอ่านบัตร ออกบัตรเจาะ

ลงทะเบียนและค่าคงที่:

A: 1-2
B: 3-4
C: 5-6
M: 7
N: 8

input: const. A
253: const. J
60: const. K
194: Master programmer decade limit 1B

การไหลของสัญญาณโปรแกรมและการไหลของข้อมูล: การไหลของสัญญาณโปรแกรมและแผนภูมิการไหลของข้อมูล

"code" เต็มรูปแบบใน pastebin หรือในความคิดเห็น HTML ในมาร์กอัพของคำตอบนี้เพื่อป้องกัน linkrot และคำตอบที่ยาวมากในการเลื่อนดูในเวลาเดียวกัน นี้คือความสนุก!

ลำดับถัดไป


คุณสามารถเพิ่มลิงก์ไปยังลำดับต่อไปได้
ไหม

@ Zacharýลิงค์อยู่ในโพสต์ ฉันจะย้ายไปที่ส่วนท้ายของโพสต์เพื่อให้ง่ายต่อการค้นหา
leo3065

12

15. CJam, 85 ไบต์, A000060

{ee\f{\~\0a*@+f*}:.+}:C;2,qi:Q,2f+{_ee1>{~2*\,:!X*X<a*~}%{CX<}*W=+}fX_0a*1$_C.- .+Q)=

การสาธิตออนไลน์

ลำดับถัดไป

การผ่า

OEIS ให้

Gf: S (x) + S (x ^ 2) -S (x) ^ 2 โดยที่ S (x) เป็นฟังก์ชันสร้างสำหรับ A000151 - Pab Ter, 12 ต.ค. 2548

ที่ไหน

S(x)=xi11(1xi)2s(i)=xi1(1+xi+x2i+)2s(i)
{           e# Define a block to convolve two sequences (multiply two polynomials)
  ee\f{     e#   Index one and use the other as an extra parameter for a map
    \~\0a*  e#     Stack manipulations; create a sequence of `index` 0s
    @+f*    e#     Shift the extra parameter poly and multiply by the coefficient
  }
  :.+       e#   Fold pointwise add to sum the polys
}:C;        e# Assign the block to C (for "convolve")
2,          e# Initial values of S: S(0) = 0, S(1) = 1
qi:Q        e# Read integer and assign it to Q
,2f+{       e# For X = 2 to Q+1
  _ee1>     e#   Duplicate accumulator of S, index, and ditch 0th term
  {         e#   Map (over notional variable i)
    ~2*\    e#     Double S(i) and flip i to top of stack
    ,:!     e#     Create an array with a 1 and i-1 0s
    X*X<    e#     Replicate X times and truncate to X values
            e#     This gives g.f. 1/(1-x^i) to the first X terms
    a*~     e#     Create 2S(i) copies of this polynomial
  }%
  {CX<}*    e#   Fold convolution and truncation to X terms
  W=+       e#   Append the final coefficient, which is S(X), to the accumulator
}fX
_0a*        e# Pad a copy to get S(X^2)
1$_C        e# Convolve two copies to get S(X)^2
.-          e# Pointwise subtraction
 .+         e# Pointwise addition. Note the leading space because the parser thinks
            e# -. is an invalid number
Q)=         e# Take the term at index Q+1 (where the +1 adjusts for OEIS offset)

ข้างหน้าฉัน 1 นาทีและ 33 วินาที ... ขณะที่ฉันกำลังพิมพ์คำอธิบาย
Leaky Nun

11

67. LOLCODE , 837 ไบต์, A000043

HAI 1.2
  CAN HAS STDIO?

  I HAS A CONT ITZ 0
  I HAS A ITRZ ITZ 1
  I HAS A NUMBAH
  GIMMEH NUMBAH
  NUMBAH R SUM OF NUMBAH AN 1

  IM IN YR GF
    ITRZ R SUM OF ITRZ AN 1

    I HAS A PROD ITZ 1
    IM IN YR MOM UPPIN YR ASS WILE DIFFRINT ITRZ AN SMALLR OF ITRZ AN ASS
      PROD R PRODUKT OF PROD AN 2
    IM OUTTA YR MOM
    PROD R DIFF OF PROD AN 1

    I HAS A PRAIME ITZ WIN
    I HAS A VAR ITZ 1
    IM IN YR MOM
      VAR R SUM OF VAR AN 1
      BOTH SAEM VAR AN PROD, O RLY?
        YA RLY, GTFO
      OIC
      BOTH SAEM 0 AN MOD OF PROD AN VAR, O RLY?
        YA RLY
          PRAIME R FAIL
          GTFO
      OIC
    IM OUTTA YR MOM

    BOTH SAEM PRAIME AN WIN, O RLY?
      YA RLY, CONT R SUM OF CONT AN 1
    OIC

    BOTH SAEM NUMBAH AN CONT, O RLY?
      YA RLY, GTFO
    OIC
  IM OUTTA YR GF

  VISIBLE ITRZ
KTHXBYE

ปุ่ม capslock ของฉันถูกผูกไว้เพื่อหลบหนีดังนั้นฉันจึงเขียนทั้งหมดนี้ในขณะที่กดปุ่ม Shift ค้างไว้ ..

ลองออนไลน์!

ลำดับถัดไป


+1 เมื่อใช้PRAIME
Leaky Nun

3
คุณเป็นโปรแกรมเมอร์คุณสามารถเขียนสิ่งนี้แล้วเรียกใช้ผ่านสคริปต์ Python ที่upper'd it -.-
Stephen

5
@ StepHen หรือเพียงแค่gggUGในกลุ่มที่ฉันเขียนมัน แต่ฉันไม่ฉลาดที่
BlackCap

10

10. Magma, 65 bytes, A000019

f:=function(n);return NumberOfPrimitiveGroups(n+1);end function;

ลองที่นี่

lol builtin

ลำดับถัดไป


@ETHproductions :) ไม่มีปัญหาขอบคุณหน้า OEIS เพราะ cuz มันมี builtin ที่แน่นอน lol
HyperNeutrino

4
; _; ฉันแก้ไข A000064 แล้วคุณก็เปลี่ยนมัน downvoted
Leun Nun

เอ้ยฉันแบ่งพาร์ติชันมากมาย
ETHproductions

ฉันแก้ไขA007317โดยไม่ได้ตั้งใจขณะพยายามทำสิ่งนี้ใน Python ( TIO ): P
ETHproductions



9

121. Pip , 525 ไบต์, A000022

n:(a+1)//2
t:[[0]RL(3*a+3)PE1]
Fh,n{
  m:([0]RL(3*a+3))
  Fi,(a+1){
    Fj,(a+1){
      Fk,(a+1)m@(i+j+k)+:(t@h@i)*(t@h@j)*(t@h@k)
      m@(i+2*j)+:3*(t@h@i)*(t@h@j)
    }
    m@(3*i)+:2*(t@h@i)
  }
  t:(tAE(m//6PE1))
}
k:t@n
o:0
Fh,aFi,aFj,aI(h+i+j<a)o+:(k@h)*(k@i)*(k@j)*k@(a-1-h-i-j)
Fh,((a+1)//2){
  Fi,aI(2*h+i<a){o+:6*(k@h)*(k@i)*(k@(a-1-2*h-i))}
  I(a%2=1)o+:3*(k@h)*(k@((a-1-2*h)//2))
}
Fh,((a+2)//3)o+:8*(k@h)*(k@(a-1-3*h))
I(a%4=1)o+:6*k@(a//4)
o//:24
Ia(o+:t@n@a)
Fh,nFj,(a+1)o-:(t@(h+1)@j-t@h@j)*(t@(h+1)@(a-j))
o

การสาธิตออนไลน์

ลำดับถัดไป

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

สิ่งนี้นำไปใช้กับฟังก์ชั่นการสร้างที่อธิบายไว้ใน EM Rains และ NJA Sloane ในการแจกแจง Alkanes ของ Cayley (หรือต้นไม้ 4 ต้นวาเลนไทน์) , Journal of Integer Sequences, Vol. 2 (1999), นำจำนวนรวมสำหรับเงื่อนไขมากเท่าที่จำเป็นสำหรับค่าสัมประสิทธิ์ th ที่จะแก้ไขแล้วเหลื่อมสามในสี่ของผลรวม โดยเฉพาะอย่างยิ่งการเหลื่อมครึ่งแรกนั้นหมายความว่าจะต้องใช้ดัชนีวัฏจักรของสิ่งใดสิ่งหนึ่งแทนค่าดัชนีทั้งหมดCknS4Th

รหัสแบ่งลงเป็น

; Calculate the relevant T_h
t:[[0]RL(3*a+3)PE1]
Fh,n{
  m:([0]RL(3*a+3))
  Fi,(a+1){
    Fj,(a+1){
      Fk,(a+1)m@(i+j+k)+:(t@h@i)*(t@h@j)*(t@h@k)
      m@(i+2*j)+:3*(t@h@i)*(t@h@j)
    }
    m@(3*i)+:2*(t@h@i)
  }
  t:(tAE(m//6PE1))
}

; Calculate the cycle index of S_4 applied to the last one
k:t@n
o:0
Fh,aFi,aFj,aI(h+i+j<a)o+:(k@h)*(k@i)*(k@j)*k@(a-1-h-i-j)
Fh,((a+1)//2){
  Fi,aI(2*h+i<a){o+:6*(k@h)*(k@i)*(k@(a-1-2*h-i))}
  I(a%2=1)o+:3*(k@h)*(k@((a-1-2*h)//2))
}
Fh,((a+2)//3)o+:8*(k@h)*(k@(a-1-3*h))
I(a%4=1)o+:6*k@(a//4)
o//:24

; Handle the remaining convolution,
; pulling out the special case which involves T_{-2}
Ia(o+:t@n@a)
Fh,nFj,(a+1)o-:(t@(h+1)@j-t@h@j)*(t@(h+1)@(a-j))

โปรดทราบว่านี่เป็นโปรแกรม Pip ครั้งแรกของฉันดังนั้นอาจไม่เป็นไปในทางที่ผิด


ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ได้รับการย้ายไปแชท
Dennis

9

156. C # (ขาวดำ), 2466 ไบต์, A000083

หมายเหตุ: คะแนนคือ 2439 ไบต์สำหรับรหัส 27 -reference:System.Numericsและธงคอมไพเลอร์

using Num = System.Numerics.BigInteger;
namespace PPCG
{
    class A000083
    {
        static void Main(string[] a)
        {
            int N = int.Parse(a[0]) + 1;

            var phi = new int[N + 1];
            for (int i = 1; i <= N; i++)
                phi[i] = 1;
            for (int p = 2; p <= N; p++)
            {
                if (phi[p] > 1) continue;
                for (int i = p; i <= N; i += p)
                    phi[i] *= p - 1;
                int pa = p * p;
                while (pa <= N)
                {
                    for (int i = pa; i <= N; i += pa)
                        phi[i] *= p;
                    pa *= p;
                }
            }

            var aik = new Num[N + 1, N + 1];
            var a035350 = new Num[N + 1];
            var a035349 = new Num[N + 1];
            aik[0, 0] = aik[1, 1] = a035350[0] = a035350[1] = a035349[0] = a035349[1] = 1;
            for (int n = 2; n <= N; n++)
            {
                // A000237 = EULER(A035350)
                Num nbn = 0;
                for (int k = 1; k < n; k++)
                    for (int d = 1; d <= k; d++)
                        if (k % d == 0) nbn += d * a035350[d] * aik[1, n - k];
                aik[1, n] = nbn / (n - 1);

                // Powers of A000237 are used a lot
                for (int k = 2; k <= N; k++)
                    for (int i = 0; i <= n; i++)
                        aik[k, n] += aik[k - 1, i] * aik[1, n - i];

                // A035350 = BIK(A000237)
                Num bn = 0;
                for (int k = 1; k <= n; k++)
                {
                    bn += aik[k, n];
                    if (k % 2 == 1)
                        for (int i = n & 1; i <= n; i += 2)
                            bn += aik[1, i] * aik[k / 2, (n - i) / 2];
                    else if (n % 2 == 0)
                        bn += aik[k / 2, n / 2];
                }
                a035350[n] = bn / 2;

                // A035349 = DIK(A000237)
                Num dn = 0;
                for (int k = 1; k <= n; k++)
                {
                    // DIK_k is Polyà enumeration with the cyclic group D_k
                    // The cycle index for D_k has two parts: C_k and what Bower calls CPAL_k
                    // C_k
                    Num cikk = 0;
                    for (int d = 1; d <= k; d++)
                        if (k % d == 0 && n % d == 0)
                            cikk += phi[d] * aik[k / d, n / d];
                    dn += cikk / k;

                    // CPAL_k
                    if (k % 2 == 1)
                        for (int i = 0; i <= n; i += 2)
                            dn += aik[1, n - i] * aik[k / 2, i / 2];
                    else
                    {
                        Num cpalk = 0;
                        for (int i = 0; i <= n; i += 2)
                            cpalk += aik[2, n - i] * aik[k / 2 - 1, i / 2];
                        if (n % 2 == 0)
                            cpalk += aik[k / 2, n / 2];
                        dn += cpalk / 2;
                    }
                }
                a035349[n] = dn / 2;
            }

            // A000083 = A000237 + A035350 - A000237 * A035349
            var a000083 = new Num[N + 1];
            for (int i = 0; i <= N; i++)
            {
                a000083[i] = aik[1, i] + a035349[i];
                for (int j = 0; j <= i; j++) a000083[i] -= aik[1, j] * a035350[i - j];
            }

            System.Console.WriteLine(a000083[N - 1]);
        }
    }
}

สาธิตออนไลน์ นี่เป็นโปรแกรมเต็มรูปแบบซึ่งรับอินพุตจากบรรทัดคำสั่ง

ลำดับถัดไป

การผ่า

ฉันทำตามความคิดเห็นของ Bowen ใน OEIS ว่าฟังก์ชั่นA000083(x) = A000237(x) + A035349(x) - A000237(x) * A035350(x)การสร้างที่ฟังก์ชั่นการสร้างส่วนประกอบที่เกี่ยวข้องโดยการแปลงเป็น

  • A000237(x) = x EULER(A035350(x))
  • A035350(x) = BIK(A000237(x))
  • A035349(x) = DIK(A000237(x))

ฉันใช้คำจำกัดความของBIKและDIKจากhttps://oeis.org/transforms2.htmlแต่สูตรดูเหมือนจะมีคำผิดจำนวนมาก ฉันได้รับการแก้ไขLPALโดยไม่ยากมากและเป็นอิสระมาสูตรสำหรับการDIKอยู่บนพื้นฐานของการใช้Pólyaแจงนับกับดัชนีวัฏจักรของกลุ่มไดฮีดรั ระหว่าง # 121 ถึง # 156 ฉันได้เรียนรู้มากมายเกี่ยวกับการแจงนับPólya ฉันได้ส่งerrataบางอย่างซึ่งอาจเป็นประโยชน์กับคนอื่น ๆ หากการเปลี่ยนแปลงเหล่านี้เกิดขึ้นอีกครั้งในห่วงโซ่



8

13. VB.NET (.NET 4.5), 1246 ไบต์, A000131

Public Class A000131
    Public Shared Function Catalan(n As Long) As Long
        Dim ans As Decimal = 1
        For k As Integer = 2 To n
            ans *= (n + k) / k
        Next
        Return ans
    End Function
    Shared Function Answer(n As Long) As Long

        n += 7

        Dim a As Long = Catalan(n - 2)

        Dim b As Long = Catalan(n / 2 - 1)
        If n Mod 2 = 0 Then
            b = Catalan(n / 2 - 1)
        Else
            b = 0
        End If

        Dim c As Long = Catalan(n \ 2 - 1) ' integer division (floor)

        Dim d As Long
        If n Mod 3 = 0 Then
            d = Catalan(n / 3 - 1)
        Else
            d = 0
        End If

        Dim e As Long = Catalan(n / 4 - 1)
        If n Mod 4 = 0 Then
            e = Catalan(n / 4 - 1)
        Else
            e = 0
        End If

        Dim f As Long = Catalan(n / 6 - 1)
        If n Mod 6 = 0 Then
            f = Catalan(n / 6 - 1)
        Else
            f = 0
        End If

        Return (
                    a -
                    (n / 2) * b -
                    n * c -
                    (n / 3) * d +
                    n * e +
                    n * f
                ) /
                (2 * n)
    End Function
End Class

A001246

ลองออนไลน์!


8

91. Python 2 (PyPy) , 1733 ไบต์, A000066

import itertools

girth = int(input()) + 3

v = 4

r = range

def p(v):
	a = [0 for i in r(v)]
	k = int((v * 2) ** .5)
	a[k - 1] = a[k - 2] = a[k - 3] = 1
	j = len(a) - 1
	for i in r(1, 3):
		a[j] = 1
		j -= i
	yield [x for x in a]
	while not all(a):
		for index in r(len(a) - 1, -1, -1):
			a[index] ^= 1
			if a[index]: break
		yield [x for x in a]

def wrap_(p, v):
	m = [[0 for j in r(v)] for i in r(v)]
	k = 0
	for i in r(0, v - 1):
		for j in r(i + 1, v):
			m[i][j] = m[j][i] = p[k]
			k += 1
	return m

def completes_cycle(edgelist):
	if not edgelist or not edgelist[1:]: return False
	start = edgelist[0]
	edge = edgelist[0]
	e = [x for x in edgelist]
	edgelist = edgelist[1:]
	while edgelist:
		_edges = [_edge for _edge in edgelist if _edge[0] in edge or _edge[1] in edge]
		if _edges:
			edgelist.remove(_edges[0])
			if _edges[0][1] in edge: _edges[0] = (_edges[0][1], _edges[0][0])
			edge = _edges[0]
		else:
			return False
	flat = sum(e, ())
	for i in flat:
		if flat.count(i) != 2: return False
	return edge[1] in start

def powerset(a):
	return sum([list(itertools.combinations(a, t)) for t in r(len(a))], [])

while True:
	ps = (v * (v - 1)) // 2
	skip = False
	for Q in p(ps):
		m = wrap_(Q, v)
		output = [row + [0] for row in m]
		output.append([0 for i in r(len(m[0]))])
		for i in r(len(m)):
			output[i][-1] = sum(m[i])
			output[-1][i] = sum(row[i] for row in m)
		if all(map(lambda x: x == 3, map(sum, m))):
			edges = []
			for i in r(v):
				for j in r(i, v):
					if m[i][j]: edges.append((i, j))
			for edgegroup in powerset(edges):
				if completes_cycle(list(edgegroup)):
					if len(edgegroup) == girth:
						print(v)
						exit(0)
					else:
						skip = True
						break
		if skip: break
	v += 1

ลองออนไลน์!

ฉันหวังว่าการใช้ Python 2 PyPy จะนับเป็นรุ่นหลักอีกรุ่นหนึ่ง หากมีคนสามารถขอรับล่าม Python 0 ให้ฉันฉันก็สามารถใช้ล่ามได้เช่นกัน แต่ฉันหวังว่านี่จะใช้ได้

สิ่งนี้เริ่มต้นที่ 1 จุดสุดยอดและทำงานได้สร้างการแทนค่าเมทริกซ์ adjacency ของกราฟที่ไม่ได้บอกทิศทางทุกจุดที่มีจุดยอดจำนวนมาก ถ้ามันเป็นไตรวาเลนท์มันก็จะมองผ่านชุดพลังของขอบซึ่งจะถูกจัดเรียงตามความยาว หากรอบแรกที่พบนั้นสั้นเกินไปก็จะไปต่อ หากรอบแรกพบว่าตรงกับอินพุต (ชดเชยด้วย 3) จากนั้นมันจะเอาท์พุทการนับยอดที่ถูกต้องและยุติ

Next Sequence <- มีตัวแบ่งที่ง่ายจากตัวแบ่งเรื่องไร้สาระทางคณิตศาสตร์ทั้งหมด: D

แก้ไข : ฉันได้เพิ่มประสิทธิภาพบางอย่างเพื่อให้เร็วขึ้นเล็กน้อย (ยังไม่สามารถคำนวณคำศัพท์ที่สามภายในระยะเวลา 60 วินาทีของ TIO) โดยไม่ต้องเปลี่ยน bytecount


... และฉันคิดจริงจังว่า chain จะลงท้ายด้วยคำตอบ 90
pppery

1
@ppperry :) ฉันชอบความท้าทายที่หนักหน่วงเพราะคนส่วนใหญ่ไม่สามารถแม้แต่จะแก้ปัญหาได้ดังนั้นฉันไม่ต้องกังวลกับการที่ต้องออกนอกบ้าน :) (เช่นปัญหาห่วงโซ่คาร์บอน)
HyperNeutrino

นอกเสียจากว่าจะมีใครใช้วิธีแก้ปัญหาของคุณและแปลงเป็นภาษาผู้ใช้
ซ้ำซาก

@ คนที่เห็นด้วย o_O: P
HyperNeutrino

1
@HyperNeutrino ขอแสดงความยินดีกับการแก้ปัญหานั้น! ฉันเป็นห่วงว่าฉันทำโซ่ขาดและกำลังพิจารณาการเติมจำนวนไบต์ให้ชี้ไปยังลำดับที่แตกต่างกัน เยี่ยมมาก!
Scott Milner

8

232. Funky , 326 330 332 ไบต์, A000938

function gcd (a, b) {
    while (b != 0) {
        c = a % b;
        a = b;
        b = c;
    };
    return a;
}

function A000938 (n) {
    n = n + 2;
    ans = 0;
    for (m = 2; m <= n; ++m) {
        for (k = 2; k <= n; ++k) {
            ans = ans + (((n - k) + 1) * ((n - m) + 1) * gcd(k - 1, m - 1));
        }
    }
    ans = (2 * ans) - (
        (n*n) *
        ((n*n)-1) / 6
    );
    return ans;
}

ลองออนไลน์!

พูดได้หลายภาษากับ Javascript ลองออนไลน์!

ลำดับถัดไป


ใช้สูตรในหน้า OEIS สำหรับซับซ้อนแทนไร้เดียงสาO(n^2 log n)O(n^6)

คำอธิบายอย่างรวดเร็ว:

  • รหัสนี้ใช้สูตรที่a[n_] := 2*Sum[(n - k + 1)*(n - m + 1)*GCD[k - 1, m - 1], {m, 2, n}, {k, 2, n}] - n^2*((n^2 - 1)/6)อธิบายไว้ในส่วนรหัส Mathematica
  • สูตรพิสูจน์:

    • สูตรเทียบเท่ากับการนี้

    • m * kให้ขนาดของกล่องขอบเขตของสามจุดจะ พิจารณา 2 ราย:

      • k != 0และm != 0: มี 2 วิธีในการเลือกการวางแนวของสามจุด ( \หรือ/), gcd(k-1, m-1)-1วิธีเลือกจุดที่อยู่ระหว่าง 2 จุดอื่น ๆ , และ(n - k) × (n - m)วิธีเลือกตำแหน่งของกล่องขอบ
      • k == 0หรือm == 0: มี 2 วิธีในการเลือกการวางแนว ( |หรือ-) nวิธีการเลือกแถว / คอลัมน์ที่อยู่บนจุดและBinomial[n, 3] == (n*(n-1)*(n-2)) / 6วิธีเลือกจุดในแถว / คอลัมน์นั้น

หมายเหตุหลายภาษา:

  • returnขี้ขลาดไม่ได้จริงๆมีคำหลัก อย่างไรก็ตามตามที่ATaco อธิบาย [Funky] คิดว่าreturnเป็นตัวแปร ดังนั้นการแยกวิเคราะห์นิพจน์นั้นซึ่งไม่ทำอะไรเลยสะดวกแล้วแยกวิเคราะห์นิพจน์ถัดไป และนี่ใช้เป็นเอาท์พุท
  • Javascript ใช้^เป็น bitwise xor ซึ่งแตกต่างจาก Funky ซึ่งใช้^เป็นเลขชี้กำลัง ดังนั้นn*nจะต้องมีการใช้แทนn^2เพื่อให้แน่ใจว่า Javascript เข้ากันได้
  • ใน Funky, ผู้ประกอบการทั้งหมด ( +, -, *ฯลฯ ) มีความสำคัญเท่าเทียมกันและขวาเชื่อมโยงเพื่อให้การแสดงออกจะต้องมีวงเล็บอย่างถูกต้อง

1
+1 ไม่ได้คาดหวังว่ามีหลายภาษา
ATaco

ไม่มี Pentagony แต่ Hexagony เข้ากันได้ดี
NieDzejkob

จำนวน bytecount นี้ถูกใช้ไปแล้ว ... ลิงค์
NieDzejkob

ดังนั้นในการแก้ไขปัญหา bytecount คุณสามารถเพิ่มคำตอบนี้ให้ 330 ไบต์ได้หรือไม่? ฉันจะจัดการกับส่วนที่เหลือ
NieDzejkob

[คำตอบ padded ถึง 332 bytes เนื่องจากปัญหาความขัดแย้งของ bytecount ดูข้อความแชทนี้ ]
user202729

8

11. Pari / GP 64 ไบต์A000065

{a(n) = if( n<0, 0, polcoeff ( 1 / eta(x + x*O(x^n) ), n) - 1)};

ลองออนไลน์!

ลำดับถัดไป


อินพุตนั้นถูกต้องหรือไม่
Leun Nun

Didya ต้องรับ 64 ไบต์? : P
มนุษย์

@tallyallyhuman ใช่:;_; I solved A000064 and you changed it. Downvoted.
Stephen

@tallyallyhuman ประนีประนอมฮ่า ๆ ดูการแชท
HyperNeutrino


8

281. Java 5, 11628 bytes, A000947

// package oeis_challenge;

import java.util.*;
import java.lang.*;

class Main {

//  static void assert(boolean cond) {
//      if (!cond)
//          throw new Error("Assertion failed!");
//  }

    /* Use the formula a(n) = A000063(n + 2) - A000936(n).
    It's unfair that I use the formula of "number of free polyenoid with n
    nodes and symmetry point group C_{2v}" (formula listed in A000063)
    without understanding why it's true...
    */

    static int catalan(int x) {
        int ans = 1;
        for (int i = 1; i <= x; ++i)
            ans = ans * (2*x+1-i) / i;
        return ans / -~x;
    }

    static int A63(int n) {
        int ans = catalan(n/2 - 1);
        if (n%4 == 0) ans -= catalan(n/4 - 1);
        if (n%6 == 0) ans -= catalan(n/6 - 1);
        return ans;
    }

    static class Point implements Comparable<Point> {
        final int x, y;
        Point(int _x, int _y) {
            x = _x; y = _y;
        }

        /// @return true if this is a point, false otherwise (this is a vector)
        public boolean isPoint() {
            return (x + y) % 3 != 0;
        }

        /// Translate this point by a vector.
        public Point add(Point p) {
            assert(this.isPoint() && ! p.isPoint());
            return new Point(x + p.x, y + p.y);
        }

        /// Reflect this point along x-axis.
        public Point reflectX() {
            return new Point(x - y, -y);
        }

        /// Rotate this point 60 degrees counter-clockwise.
        public Point rot60() {
            return new Point(x - y, x);
        }

        @Override
        public boolean equals(Object o) {
            if (!(o instanceof Point)) return false;
            Point p = (Point) o;
            return x == p.x && y == p.y;
        }

        @Override
        public int hashCode() {
            return 21521 * (3491 + x) + y;
        }

        public String toString() {
            // return String.format("(%d, %d)", x, y);
            return String.format("setxy %d %d", x * 50 - y * 25, y * 40);
        }

        public int compareTo(Point p) {
            int a = Integer.valueOf(x).compareTo(p.x);
            if (a != 0) return a;
            return Integer.valueOf(y).compareTo(p.y);
        }

        /// Helper class.
        static interface Predicate {
            abstract boolean test(Point p);
        }

        static abstract class UnaryFunction {
            abstract Point apply(Point p);
        }

    }

    static class Edge implements Comparable<Edge> {
        final Point a, b; // guarantee a < b
        Edge(Point x, Point y) {
            assert x != y;
            if (x.compareTo(y) > 0) { // y < x
                a = y; b = x;
            } else {
                a = x; b = y;
            }
        }

        public int compareTo(Edge e) {
            int x = a.compareTo(e.a);
            if (x != 0) return x;
            return b.compareTo(e.b);
        }
    }

    /// A graph consists of multiple {@code Point}s.
    static class Graph {
        private HashMap<Point, Point> points;

        public Graph() {
            points = new HashMap<Point, Point>();
        }

        public Graph(Graph g) {
            points = new HashMap<Point, Point>(g.points);
        }

        public void add(Point p, Point root) {
            assert(p.isPoint());
            assert(root.isPoint());
            assert(p == root || points.containsKey(root));
            points.put(p, root);
        }

        public Graph map(Point.UnaryFunction fn) {
            Graph result = new Graph();
            for (Map.Entry<Point, Point> pq : points.entrySet()) {
                Point p = pq.getKey(), q = pq.getValue();
                assert(p.isPoint()) : p;
                assert(q.isPoint()) : q;
                p = fn.apply(p); assert(p.isPoint()) : p;
                q = fn.apply(q); assert(q.isPoint()) : q;
                result.points.put(p, q);
            }
            return result;
        }

        public Graph reflectX() {
            return this.map(new Point.UnaryFunction() {
                public Point apply(Point p) {
                    return p.reflectX();
                }
            });
        }

        public Graph rot60() {
            return this.map(new Point.UnaryFunction() {
                public Point apply(Point p) {
                    return p.rot60();
                }
            });
        }

        @Override
        public boolean equals(Object o) {
            if (o == null) return false;
            if (o.getClass() != getClass()) return false;
            Graph g = (Graph) o;
            return points.equals(g.points);
        }

        @Override
        public int hashCode() {
            return points.hashCode();
        }

        Graph[] expand(Point.Predicate fn) {
            List<Graph> result = new ArrayList<Graph>();

            for (Point p : points.keySet()) {
                int[] deltaX = new int[] { -1, 0, 1, 1,  0, -1};
                int[] deltaY = new int[] {  0, 1, 1, 0, -1, -1};
                for (int i = 6; i --> 0;) {
                    Point p1 = new Point(p.x + deltaX[i], p.y + deltaY[i]);
                    if (points.containsKey(p1) || !fn.test(p1)
                        || !p1.isPoint()) continue;

                    Graph g = new Graph(this);
                    g.add(p1, p);
                    result.add(g);
                }
            }

            return result.toArray(new Graph[0]);
        }

        public static Graph[] expand(Graph[] graphs, Point.Predicate fn) {
            Set<Graph> result = new HashSet<Graph>();

            for (Graph g0 : graphs) {
                Graph[] g = g0.expand(fn);
                for (Graph g1 : g) {
                    if (result.contains(g1)) continue;
                    result.add(g1);
                }
            }

            return result.toArray(new Graph[0]);
        }

        private Edge[] edges() {
            List<Edge> result = new ArrayList<Edge>();
            for (Map.Entry<Point, Point> pq : points.entrySet()) {
                Point p = pq.getKey(), q = pq.getValue();
                if (p.equals(q)) continue;
                result.add(new Edge(p, q));
            }
            return result.toArray(new Edge[0]);
        }

        /**
         * Check if two graphs are isomorphic... under translation.
         * @return {@code true} if {@code this} is isomorphic
         * under translation, {@code false} otherwise.
         */
        public boolean isomorphic(Graph g) {
            if (points.size() != g.points.size()) return false;
            Edge[] a = this.edges();
            Edge[] b = g.edges();
            Arrays.sort(a);
            Arrays.sort(b);

            // for (Edge e : b)
                // System.err.println(e.a + " - " + e.b);
            // System.err.println("------- >><< ");

            assert (a.length > 0);
            assert (a.length == b.length);
            int a_bx = a[0].a.x - b[0].a.x, a_by = a[0].a.y - b[0].a.y;
            for (int i = 0; i < a.length; ++i) {
                if (a_bx != a[i].a.x - b[i].a.x || 
                    a_by != a[i].a.y - b[i].a.y) return false;
                if (a_bx != a[i].b.x - b[i].b.x || 
                    a_by != a[i].b.y - b[i].b.y) return false;
            }

            return true;
        }

        // C_{2v}.
        public boolean correctSymmetry() {

            Graph[] graphs = new Graph[6];
            graphs[0] = this.reflectX();
            for (int i = 1; i < 6; ++i) graphs[i] = graphs[i-1].rot60();
            assert(graphs[5].rot60().isomorphic(graphs[0]));
            int count = 0;
            for (Graph g : graphs) {
                if (this.isomorphic(g)) ++count;
                // if (count >= 2) {
                    // return false;
                // }
            }
            // if (count > 1) System.err.format("too much: %d%n", count);
            assert(count > 0);
            return count == 1; // which is, basically, true
        }

        public void reflectSelfType2() {
            Graph g = this.map(new Point.UnaryFunction() {
                public Point apply(Point p) {
                    return new Point(p.y - p.x, p.y);
                }
            });

            Point p = new Point(1, 1);
            assert (p.equals(points.get(p)));

            points.putAll(g.points);

            assert (p.equals(points.get(p)));
            Point q = new Point(0, 1);
            assert (q.equals(points.get(q)));
            points.put(p, q);
        }

        public void reflectSelfX() {
            Graph g = this.reflectX();
            points.putAll(g.points); // duplicates doesn't matter
        }

    }

    static int A936(int n) {
        // if (true) return (new int[]{0, 0, 0, 1, 1, 2, 4, 4, 12, 10, 29, 27, 88, 76, 247, 217, 722, 638, 2134, 1901, 6413})[n];

        // some unreachable codes here for testing.
        int ans = 0;

        if (n % 2 == 0) { // reflection type 2. (through line 2x == y)
            Graph[] graphs = new Graph[1];
            graphs[0] = new Graph();

            Point p = new Point(1, 1);
            graphs[0].add(p, p);

            for (int i = n / 2 - 1; i --> 0;)
                graphs = Graph.expand(graphs, new Point.Predicate() {
                    public boolean test(Point p) {
                        return 2*p.x > p.y;
                    }
                });

            int count = 0;
            for (Graph g : graphs) {
                g.reflectSelfType2();
                if (g.correctSymmetry()) {
                    ++count;

                    // for (Edge e : g.edges())
                        // System.err.println(e.a + " - " + e.b);
                    // System.err.println("------*");

                    }
                // else System.err.println("Failed");
            }

            assert (count%2 == 0);

            // System.err.println("A936(" + n + ") count = " + count + " -> " + (count/2));

            ans += count / 2;

        }

        // Reflection type 1. (reflectX)

        Graph[] graphs = new Graph[1];
        graphs[0] = new Graph();

        Point p = new Point(1, 0);
        graphs[0].add(p, p);

        if (n % 2 == 0) graphs[0].add(new Point(2, 0), p);

        for (int i = (n-1) / 2; i --> 0;)
            graphs = Graph.expand(graphs, new Point.Predicate() {
                public boolean test(Point p) {
                    return p.y > 0;
                }
            });

        int count = 0;
        for (Graph g : graphs) {
            g.reflectSelfX();
            if (g.correctSymmetry()) {
                ++count;
                // for (Edge e : g.edges())

                    // System.err.printf(

                // "pu %s pd %s\n"
                // // "%s - %s%n"

                // , e.a, e.b);
                // System.err.println("-------/");

            }
            // else System.err.println("Failed");
        }

        if(n % 2 == 0) {
            assert(count % 2 == 0);
            count /= 2;
        }
        ans += count;

        // System.err.println("A936(" + n + ") = " + ans);

        return ans;
    }

    public static void main(String[] args) {

        // Probably
        if (! "1.5.0_22".equals(System.getProperty("java.version"))) {
            System.err.println("Warning: Java version is not 1.5.0_22");
        }

        // A936(6);

        for (int i = 0; i < 20; ++i)
            System.out.println(i + " | " + (A63(i+9) - A936(i+7)));
        //A936(i+2);
    }
}

ลองออนไลน์!


หมายเหตุด้านข้าง:

  1. ผ่านการทดสอบแบบโลคัลด้วย Java 5 (เช่นคำเตือนไม่ถูกพิมพ์ - ดูแท็บ TIO debug)
  2. อย่า เคย ใช้. ชวา 1. เป็น verbose มากกว่า Java โดยทั่วไป
  3. สิ่งนี้อาจทำลายโซ่
  4. ช่องว่าง (7 วันและ 48 นาที) คือไม่เกินช่องว่างที่สร้างขึ้นโดยคำตอบนี้ซึ่งเป็น 7 วัน 1 ชั่วโมง 25 นาทีต่อมากว่าหนึ่งก่อนหน้านี้
  5. สถิติใหม่ในจำนวนมหาศาล! เพราะฉัน (ผิดพลาด?) ใช้ช่องว่างแทนแท็บจำนวนไบต์จึงมีขนาดใหญ่เกินความจำเป็น บนเครื่องของฉันมันคือ9550ไบต์ (ในขณะที่เขียนการแก้ไขนี้)
  6. ลำดับถัดไป
  7. รหัสในรูปแบบปัจจุบันพิมพ์เฉพาะ 20 คำแรกของลำดับ แต่มันเป็นเรื่องง่ายที่จะเปลี่ยนเพื่อที่จะพิมพ์ 1000 รายการแรก (จากการเปลี่ยนแปลง20ในfor (int i = 0; i < 20; ++i)การ1000)

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


คำอธิบายด่วน

คำอธิบายของคำอธิบายลำดับ

ลำดับถามถึงจำนวนโพลินอยด์ nonplanar ฟรีที่มีกลุ่มสมมาตร C 2vโดยที่:

  • polyenoid: (แบบจำลองทางคณิตศาสตร์ของ polyene ไฮโดรคาร์บอน) ต้นไม้ (หรือในกรณีเลว, จุดสุดยอดเดียว) ด้วยสามารถฝังในตาข่ายหกเหลี่ยม

ตัวอย่างเช่นพิจารณาต้นไม้

      O                O           O      O       (3)
      |                 \         /        \
      |                  \       /          \
O --- O --- O             O --- O            O --- O
      |                                             \
      |                    (2)                       \
 (1)  O                                               O

อันแรกไม่สามารถฝังในตาข่ายหกเหลี่ยมได้ในขณะที่อันที่สองสามารถทำได้ การฝังนั้นจะถือว่าแตกต่างจากทรีที่สาม

  • nonplanar polyenoid: การฝังต้นไม้ดังกล่าวซึ่งมีจุดยอดสองจุดซ้อนทับกันอยู่

(2)และ(3)ต้นไม้ด้านบนเป็นภาพถ่าย อย่างไรก็ตามอันนี้ไม่ใช่ nonplanar:

   O---O O
  /       \
 /         \
O           O
 \         /
  \       /
   O --- O

(มี 7 จุดยอดและ 6 ขอบ)

  • ฟรีโพลินอยด์: ตัวแปรของโพลินอยด์หนึ่งตัวซึ่งสามารถหาได้จากการหมุนและการสะท้อนจะนับเป็นหนึ่ง

  • กลุ่มC 2v : โพลินอยด์จะนับเฉพาะเมื่อมีระนาบการสะท้อนตั้งฉาก 2 อันและไม่มีอีกต่อไป

ยกตัวอย่างเช่นตัวเดียวกับ 2 จุดยอด

O --- O

มี 3 ระนาบของการสะท้อน: หนึ่งในแนวนอน-, แนวตั้งหนึ่งและขนานหนึ่งไปยังหน้าจอคอมพิวเตอร์| นั่นมากเกินไป

ในทางกลับกันอันนี้

O --- O
       \
        \
         O

มี 2 ระนาบของการสะท้อน: และ/


คำอธิบายของวิธีการ

และตอนนี้วิธีการนับจำนวนจริง

ก่อนอื่นฉันใช้สูตรa(n) = A000063(n + 2) - A000936(n)(แสดงรายการในหน้า OEIS) เพื่อรับสิทธิ์ ฉันไม่ได้อ่านคำอธิบายในกระดาษ

[สิ่งที่ต้องแก้ไขส่วนนี้]

แน่นอนการนับภาพถ่ายเป็นเรื่องง่ายกว่าการนับ nonplanar นั่นคือสิ่งที่กระดาษทำเช่นกัน

(ไม่รวมจุดยอดที่ซ้อนทับกัน) จะถูกระบุด้วยการเขียนโปรแกรมคอมพิวเตอร์ ดังนั้นตัวเลขของโพลีโนไนด์ที่ไม่ใช่เชิงเรขาคณิตจึงสามารถเข้าถึงได้

ดังนั้น ... โปรแกรมนับจำนวนของโพลารอยด์ตามระนาบและลบออกจากยอดรวม

เพราะต้นไม้นั้นเป็นภาพถ่ายแนวราบมันจึงมีระนาบการสะท้อน ดังนั้นเงื่อนไขจึงลดลงเหลือ "นับจำนวนต้นไม้ด้วยแกนสะท้อนในการแสดงแบบ 2 มิติ"

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

ฟังก์ชั่นนี้public static Graph[] expand(Graph[] graphs, Point.Predicate fn)ใช้อาร์เรย์ของกราฟแต่ละnโหนดมีโหนดและส่งออกอาร์เรย์ของกราฟแต่ละn+1โหนดมีโหนดไม่เท่ากับซึ่งกันและกัน (ภายใต้การแปล) - ซึ่งโหนดที่เพิ่มเข้ามาจะต้องตอบสนองเพfnรดิเคต

พิจารณา 2 แกนของการสะท้อนที่เป็นไปได้: แนวที่ผ่านจุดสุดยอดและตรงกับขอบ ( x = 0) และหนึ่งแนวนั้นคือเส้นแบ่งครึ่งตั้งฉากของขอบ ( 2x = y) เราสามารถรับได้เพียงหนึ่งในนั้นเพราะกราฟที่สร้างขึ้นนั้นเป็นแบบมอร์ฟิคอยู่แล้ว

ดังนั้นสำหรับแกนแรกที่x = 0เราเริ่มต้นจากกราฟฐานประกอบด้วยโหนดเดียว(1, 0)(ในกรณีที่nเป็นเลขคี่) หรือสองโหนดกับขอบระหว่าง(1, 0) - (2, 0)(ในกรณีที่nเป็นคู่) y > 0และจากนั้นขยายโหนดดังกล่าวว่า สิ่งนี้ทำโดยส่วน "Reflection Type 1" ของโปรแกรมและจากนั้นสำหรับกราฟที่สร้างขึ้นแต่ละอันสะท้อน (mirror) ผ่านแกน X x = 0( g.reflectSelfX()) จากนั้นตรวจสอบว่ามีความสมมาตรที่ถูกต้องหรือไม่

อย่างไรก็ตามโปรดทราบว่าถ้าnหารด้วย 2 2x = y + 3โดยวิธีนี้เรานับกราฟแต่ละครั้งที่สองเพราะเรายังสร้างภาพสะท้อนของตนโดยแกน

(สังเกตสีส้ม 2 อัน)

คล้ายกับแกน2x = yหาก (และเฉพาะในกรณีที่) nเป็นเลขคู่เราเริ่มจากจุด(1, 1)สร้างกราฟเช่นนั้น2*x > yและสะท้อนแต่ละ2x = yแกนเหนือแกน ( g.reflectSelfType2()) เชื่อมต่อ(1, 0)ด้วย(1, 1)และตรวจสอบว่าสมมาตรถูกต้องหรือไม่ อย่าลืมหารด้วย 2 เช่นกัน


เนื่องจากฉันนอนหลับเมื่อโพสต์นี้ (และอีกโพสต์อื่น) ฉันจะให้คุณประโยชน์ของข้อสงสัยและยังไม่ยอมรับคำตอบ
caird coinheringaahing

2
@cairdcoinheringaahing คุณออนไลน์เมื่อ 3 นาทีก่อนถึงกำหนดส่ง ...
user202729

เอ่อโอเคลำดับต่อไปสามารถเข้ารหัสยาก ... (แม้ว่ามันจะไม่มีที่สิ้นสุด) ถ้าฉันอ่านมันอย่างถูกต้อง การคำนวณเองนั้น --- สวยมากง่ายมากดังนั้นอย่าทำ
user202729

7

6. R , 71 ไบต์, A000072

function(n)length(unique((t<-outer(r<-(0:2^n)^2,r*4,"+"))[t<=2^n&t>0]))

ลองออนไลน์!

ลำดับถัดไป


1
สำหรับความรักของพระเจ้าฉันไม่ได้ตรวจสอบลำดับต่อไปก่อนที่จะโพสต์คำตอบนี้
Leun Nun

ไม่ใช่เรื่องง่ายที่จะได้เปรียบเชิงกลยุทธ์หรือไม่?
BlackCap

@BlackCap พวกเขาไม่สามารถตอบได้สองครั้งติดต่อกันหรือน้อยกว่า 1 ชั่วโมงหลังจากตอบครั้งสุดท้าย
Erik the Outgolfer

@EriktheOutgolferthe answer before the last posted (the one who didn't break the chain) will win
BlackCap

@BlackCap ณ จุดนี้ที่จะไม่เกิดขึ้น
Stephen


7

26. TI-BASIC, 274 ไบต์ , A000183

.5(1+√(5→θ
"int(.5+θ^X/√(5→Y₁
"2+Y₁(X-1)+Y₁(X+1→Y₂
{0,0,0,1,2,20→L₁
Prompt A
Lbl A
If A≤dim(L₁
Then
Disp L₁(A
Else
1+dim(L₁
(~1)^Ans(4Ans+Y₂(Ans))+(Ans/(Ans-1))((Ans+1))-(2Ans/(Ans-2))((Ans-3)L₁(Ans-2)+(~1)^AnsY₂(Ans-2))+(Ans/(Ans-3))((Ans-5)L₁(Ans-3)+2(~1)^(Ans-1)Y₂(Ans-3))+(Ans/(Ans-4))(L₁(Ans-4)+(~1)^(Ans-1)Y₂(Ans-4→L₁(Ans
Goto A
End

ประเมินสูตรเรียกซ้ำที่พบในลิงก์ OEIS

ลำดับถัดไป


ฉันรู้ว่าเมื่อเว็บไซต์ลงมามันจะเป็นเรื่องบ้าคลั่งเมื่อมันกลับมา เอาชนะฉันไม่ได้เลย
Silvio Mayolo

ฉันไม่ทราบว่าไซต์ดังกล่าวลงไป ...
Scott Milner




7

76. คนแคระ , 4147 ไบต์, A000036

globaln: 0                                                                                           

Pi:: 3.141592653589793                                                                               

floor:: (number) {                                                                                   
    floatPart: number % 1                                                                            
    number >= 0 =>                                                                                   
    number - floatPart                                                                               
    number - floatPart - 1                                                                           
}                                                                                                    

fsqrt:: (number) {                                                                                   
    floor| number ^ 0.5                                                                              
}                                                                                                    

summation:: (f i imax) {                                                                             
    i > imax => 0                                                                                    
    (f| i) + summation| f, i + 1, imax                                                               
}                                                                                                    

absoluteValue:: (number) {                                                                           
    number < 0 => -number                                                                            
    number                                                                                           
}                                                                                                    

A:: (number) {                                                                                       
    globaln~: number                                                                                 
    1 + 4 * (fsqrt| number)                                                                          
       + 4 * (fsqrt| number / 2) ^ 2                                                                 
       + 8 * summation| (j){ fsqrt| globaln - j * j }, (fsqrt| number / 2) + 1, (fsqrt| number)      
}                                                                                                    

V:: (number) {                                                                  
    Pi * number                                                                      
}                                                                                    

P:: (number) {                                             
    (A| number) - (V| number)                               
}                                                           

recordMax: 0                                           
findRecord:: (searchIndex record recordCount) {                                    
    x: absoluteValue| P| searchIndex                                               
    (x > record && recordCount = recordMax - 1) => searchIndex                     
    x > record => findRecord| searchIndex + 1, x, recordCount + 1                  
    findRecord| searchIndex + 1, record, recordCount                               
}                                                                                  

A000099:: (number) {                                                                 
    recordMax~: number                                                              
    findRecord| 1, 0, 0                                                              
}                                                                               

A000035:: (number) {                                                                       
    floor| (P| (A000099| number)) + 0.5                                         
}                                                                               

ลำดับถัดไป

คุณสามารถเรียกใช้รหัสในหน้านี้ ตัวอย่างเช่นคุณสามารถรับหมายเลขลำดับที่ 10 โดยคัดลอกโค้ดด้านบนและเพิ่ม:

alert| A000035| 10

4
... ลำดับต่อไปไม่สามารถ
คำนวณได้

1
@HyperNeutrino ฉันรู้ว่า: PI ทำสิ่งนี้โดยเจตนา
Peter Olson

Evil ... >. <แต่ต่อไปฉันจะทำโค้ด 4 องค์ประกอบตามลำดับ xD OP นั้นง่ายพอที่จะอนุมัติ¯ \ _ (ツ) _ / ¯
HyperNeutrino
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.