जावास्क्रिप्ट (ईएस 6), 123 118 115 111 104 96 बाइट्स
सहेजे गए 4 बाइट्स @Arnauld का धन्यवाद
G=n=>n?G(n>>1,++a[n%2]):a.some(n=>(P=x=>n%--x?P(x):x)(n)-1)
F=n=>F(n-1,G(n,a=[0,0,n])||alert(n))
तीन विशिष्ट पुनरावर्ती कार्यों का एक संयोजन। अनुक्रम को रिवर्स ऑर्डर में अलर्ट करता है और "बहुत अधिक पुनरावृत्ति" त्रुटि पर समाप्त होता है।
टेस्ट स्निपेट
(पृष्ठ के आउटपुट में संशोधित)
alert = s => O.textContent += s + "\n"
G=n=>n?G(n>>1,++a[n%2]):a.some(n=>(P=x=>n%--x?P(x):x)(n)-1)
F=n=>F(n-1,G(n,a=[0,0,n])||alert(n))
F(1000)
<pre id=O></pre>
मुख्य कार्य 104 बाइट्स के लिए एक सरणी लौटा सकता है:
G=n=>n?G(n>>1,++a[n%2]):a.some(n=>(P=x=>n%--x?P(x):x)(n)-1)
F=n=>n?F(n-1).concat(G(n,a=[0,0,n])?[]:n):[]
यह किसी अन्य बाइट की कीमत पर गैर-पुनरावर्ती भी हो सकता है:
G=n=>n?G(n>>1,++a[n%2]):a.some(n=>(P=x=>n%--x?P(x):x)(n)-1)
n=>[for(_ of Array(n))if(!G(--n,a=[0,0,n]))n]
यहाँ मैं एक के साथ शुरू कर दिया है: (@Arnauld के लिए 6 बाइट्स धन्यवाद)
P=(n,x=n)=>n>1&--x<2||n%x&&P(n,x)
G=n=>n?G(n>>1,o+=n%2,t++):P(o)&P(t-o)
F=n=>n?F(n-1).concat(P(n)&G(n,o=t=0)?n:[]):[]
मैंने इसे और आगे बढ़ाने की कोशिश की और इसे 104 बाइट्स में करने में कामयाब रहा- तब मुझे महसूस हुआ कि मुझे पहले ही इसका समाधान मिल गया है (यह जवाब के निचले भाग में है)। क्या ऐसा होने पर आपको इससे नफरत नहीं है? : पी
मुख्य समारोह में एक गैर-पुनरावर्ती प्रयास (फिर से, वही बाइट गिनती):
n=>[for(i of Array(n))if(P(--n)&G(n,o=t=0))n]
यह बाइनरी प्रतिनिधित्व में कितने 0 और 1 की गिनती का आसान मार्ग लेता है:
F=n=>n?F(n-1).concat([n,(G=x=>n.toString(2).split(x).length-1)(0),G(1)].some(n=>(P=x=>n%--x?P(x):x)(n)-1)?[]:n):[]
एक सरणी समझ के साथ एक ही बात:
n=>[for(_ of Array(n))if(![--n,(G=x=>n.toString(2).split(x).length-1)(0),G(1)].some(n=>(P=x=>n%--x?P(x):x)(n)-1))n]
यह एक ही काम करने के लिए थोड़ा कठिन मार्ग लेता है:
F=n=>n?F(n-1).concat([n,(G=(x,w=n)=>w&&G(x,w>>1)+(w%2==x))(0),G(1)].some(n=>(P=x=>n%--x?P(x):x)(n)-1)?[]:n):[]
और यह एक और संबंधित मार्ग लेता है जो मूल के रूप में छोटा है:
F=n=>n?F(n-1).concat([n,o=(G=x=>x&&x%2+G(n>>++t))(n,t=0),t-o].some(n=>(P=x=>n%--x?P(x):x)(n)-1)?[]:n):[]
फिर, आप 8 बाइट्स को रिवर्स ऑर्डर में अनुक्रम को सचेत करके गोल्फ कर सकते हैं:
F=n=>F(n-1,[n,o=(G=x=>x&&x%2+G(n>>++t))(n,t=0),t-o].some(n=>(P=x=>n%--x?P(x):x)(n)-1)||alert(n))