PowerShell, 420 बाइट्स (ayyyyyyyyy) 378 बाइट्स
param($n);[int[]]$p="03141592653589793238462643383279502884197169399375"-Split'';$a=@(0,3,4);for($i=3;$i-lt50;$i++){$a+=$a[$i-1]+$a[$i-2]};$c=[char[]]"00001010111010111010111011111010111110111010111011111011111010111110111";$b=@(0);for($i=4;$i-le70;$i++){if($c[$i]-eq'1'){$b+=$i}};[double]$r=$a[$n]/$b[$n];$q=$p[$n+1];$s="";(0..($q-1))|%{$s+="0"};([math]::Round($r,$q,[MidpointRounding]::AwayFromZero)).ToString("0.$s")
41 बाइट्स बचाने के लिए इसाॅक का धन्यवाद , यह गणना करने के लिए कि प्रश्न कैसे राउंडिंग करता है। इसका मतलब है कि मुझे भयावह को शामिल नहीं करना [MidpointRounding]::AwayFromZero
था और स्पष्ट रूप से एक के रूप में डालने की आवश्यकता नहीं थी [double]
।
यह एक बहुत मजेदार था!
विस्तारित:
# Take input N
param($n)
# First digits of pi, stored as integer array
[int[]]$p="03141592653589793238462643383279502884197169399375"-Split''
# Fibonacci sequence A(N)
$a=@(0,3,4)
for($i=3;$i-lt50;$i++){
$a+=$a[$i-1]+$a[$i-2]
}
# Zero-indexed bitmask for if the n-th integer is composite (1) or not (0)
$c=[char[]]"00001010111010111010111011111010111110111010111011111011111010111110111"
# Populate B(N) as an array using the $c mask
$b=@(0)
for($i=4;$i-le70;$i++){
if($c[$i]-eq'1'){
$b+=$i
}
}
# Calculation Time!
$r=(a($n))/$b[$n]
# A small golf, as $p[$n+1] gets used a couple times
$q=$p[$n+1]
# Need to generate a string of zeroes for padding
$s=""
(0..($q-1))|%{$s+="0"}
# Round the number, then send it to a string so we get the necessary number of zeroes
([math]::Round($r,$q)).ToString("0.$s")
PowerShell में पुनरावर्तन है ... धीमा, हम कहेंगे, इसलिए हमें A(N)
दूसरी दिशा का निर्माण करना होगा और इसे एक सरणी में संग्रहीत करना होगा, फिर इसे अनुक्रमित करना होगा।
पुराना
इसके अलावा, पवित्र गाय, क्या उत्पादन आवश्यकताओं ने इसे मार दिया। PowerShell एक / k / एक बैंकर के राउंडिंग को निकटतम करने के लिए चूक करता है, जो राउंडिंग शैलियों[MidpointRounding]::AwayFromZero
को स्विच करने के लिए असाधारण रूप से क्रिया का उपयोग करने की आवश्यकता है । उस के शीर्ष पर, हमें तब जीरो पैड पैडिंग की आवश्यकता होती है, यदि कोई हो। उन दो आवश्यकताओं को 20 बाइट्स से अंतिम बाइट्स को 102 बाइट्स (से ) तक करने के लिए संयुक्त ... वाह। [math]::Round($r,$q)
$s=""
+$s)
C(n)
अंक कहते हैं , तो क्या हमें 0 की अनुगामी शामिल करना है?