एक घन में बहुभुज

Oct 22 2020

भव्य दृश्य "हटना" साक्ष्यों और इस विषय में मेरी सामान्य रुचि पर इस Mathologer वीडियो के भाग से प्रेरित होकर , इस चुनौती से आपको 3 डी में पूर्णांक निर्देशांक के साथ नियमित बहुभुज की गणना होगी।

आपको एक इनपुट प्रदान किया जाएगा n, जो एक गैर-नकारात्मक पूर्णांक है। आपके कार्यक्रम को \ _ के सबसेट की संख्या का पता लगाना चाहिए$\{0, 1, \dots, n\}^3\$इस तरह कि अंक एक नियमित बहुभुज के कोने हैं। यही कारण है, कोने से गैर नकारात्मक पूर्णांकों के साथ 3 डी निर्देशांक कम हो या करने के लिए बराबर होना चाहिए \$n\$।

उदाहरण

के लिए \$n = 4\$, वहाँ हैं \$2190\$नियमित बहुभुज: \$1264\$समबाहु त्रिभुज, \ _$810\$वर्ग, और \$116\$नियमित षट्भुज। प्रत्येक का एक उदाहरण:

  • त्रिकोण: \$(1,0,1), (0,4,0), (4,3,1)\$
  • वर्ग: \$(1,0,0), (4,3,0), (3,4,4), (0,1,4)\$
  • षट्कोण: \ _$(1,1,0), (0,3,1), (1,4,3), (3,3,4), (4,1,3), (3,0,1)\$

(शून्य-अनुक्रमित) अनुक्रम शुरू होता है:

0, 14, 138, 640, 2190, 6042, 13824, 28400, 53484, 94126, 156462, 248568, 380802, 564242, 813528, 1146472, 1581936, 2143878, 2857194, 3749240, 4854942, 6210442

नियमों

ब्रूट-फोर्सिंग के सबसे भोले और अबाध प्रकार को रोकने के लिए, आपके प्रोग्राम को \ _ को संभालने में सक्षम होना चाहिए$a(5) = 6042\$TIO पर ।

यह एक कोड-गोल्फ चुनौती है, इसलिए सबसे छोटा कोड जीतता है।


यह अब A338323 के रूप में इंटेगर सीक्वेंस के ऑन-लाइन इनसाइक्लोपीडिया पर है ।

जवाब

7 cardboard_box Oct 26 2020 at 04:15

पायथन 2 , 330 313 बाइट्स

import numpy as N,itertools as I
L=list
D=N.dot
n=input()
def G((a,b,c)):
 A=a
 while 1:
	u=b-a;v=c-b;d=D(v,v)
	if D(u,u)-d:return 0
	p=2*D(u,v)*v
	a,b,c=b,c,c+a-b+p/d
	if(p%d|(c<0)|(c>n)).any()or L(a)<L(A):return 0
	if L(a)==L(A):return 1
print sum(map(G,I.permutations(N.indices((n+1,)*3).reshape(3,-1).T,3)))/2

इसे ऑनलाइन आज़माएं!

टीआईओ ने 36.893 sगणना करने में खर्च किया a(5) = 6042, इसलिए यह समाधान काफी तेज है।

एक नियमित बहुभुज के 3 लगातार बिंदुओं को देखते हुए a,b,c, अगला बिंदु d = c + a - b + 2*proj(b-a, c-b)(जहां projवेक्टर प्रक्षेपण है)। मेरा समाधान सभी प्रकार के बिंदुओं से गुजरता है और निर्धारित करता है कि क्या वे इस सूत्र का उपयोग करके बहुभुज बनाते हैं।

a(7) = 28400मेरी मशीन पर सत्यापित ।

-17 बाइट्स ओव्स से