PHP, 323 बाइट्स
अन्य तरीके से समान तरीके से सिक्कों को तब तक गिनते हैं जब तक कि दो अंतिम तत्व सरणी में न हों
<?function t($g){rsort($g);$m=array_slice($g,1);for($y=1,$i=$g[0];$i<$g[0]+$m[0];$i++){$a=$b=$i;$p=0;$r=$s=[];while($a||$b){$o=$n=0;$g[$p]<=$a?$a-=$r[]=$g[$p]:$o=1;($m[$p]??1)<=$b?$b-=$s[]=$m[$p]:$n=1;$p+=$o*$n;}$y*=count($r)<=count($s);}return$y;}for($i=0,$t=1;++$i<count($a=$_GET[a]);)$t*=t(array_slice($a,0,$i+1));echo$t;
मेरा सबसे अच्छा और सबसे लंबा जवाब मुझे विश्वास है> 370 बाइट्स
मैं केवल एक विस्तारित संस्करण देता हूं क्योंकि यह लंबे समय तक है तो मेरा जवाब पहले
for($x=1,$n=0,$f=[];++$n<count($a)-1;){
$z=array_slice($a,0,$n+1);
$q=$a[$n]-$a[$n-1];
$i=array_fill(1,$c=max($a[$n+1]??1,11),"X");#$q*$a[$n]
$f=range($a[$n],$c,$q);
$f[]=2*$a[$n];
for($d=[$z[$n]],$j=0;$j<$n;){
$f[]=$a[$n]+$d[]=$z[$n]-$z[$j++];
}
while($f){
$i[$t=array_pop($f)]="T";
foreach($d as $g)
if(($l=$t+$g)<=$c)$f[]=$l;
}
foreach($i as$k=>$v){
if(in_array($k,$z))$i[$k]="S";
}
#var_dump($i);
if($i[$a[$n+1]]=="X")$x*=0;
}
echo$x;
इस उत्तर के लिए स्पष्टीकरण
ऑनलाइन संस्करण
सभी को सरणी में गलत == X पर सेट करें
आपके द्वारा S को नियंत्रित की गई सरणी में सभी संख्याएँ सेट करें
अंतिम S और अन्य S या 0 के बीच अंतर पाया गया
सरणी में अंतिम S पर प्रारंभ करें
सभी संख्याओं को सभी अंतरों में से एक, जहां डी लास्ट एस + में सेट करें
सभी डी पर शुरू करें
सरणी में D मानों के लिए "T" सेट करें
गोटो 5 इसे सभी डीआई के साथ दोहराएं यह वास्तव में कोड में नहीं था
अगर अगले आइटम में ऐरे में X है तो यह एक और गलत मामला है
अतिरिक्त चरण अंतर स्निपेट में मामले में 3 है 1 और 4 के बीच 2 एक्स हैं इसका मतलब है कि आपको चरण 5 द्वारा दूसरे डी की आवश्यकता है। इस मामले में इस मूल्य के बाद 10 सभी मामले सच हैं मैं अब तक देख सकता था कि एक रिश्ता है अंतर और सरणी में गिनती के बीच आप गणना करते हैं कि अंतिम झूठे मामले को खोजने से पहले आपको कितना डी (चरण 5) प्राप्त करने की आवश्यकता है।
आप अंतिम आइटम से सीधे सही पर कई मान सेट करते हैं। ये पॉइंट्स यह तय करने के लिए एक अंतर बना सकते हैं कि क्या यह हो सकता है कि अगले मूल्य वाले सिक्कों की लालची गिनती समान हो तो सरणी में अंतिम के कई। दूसरे रास्ते पर आप दुश्मन को सेट कर सकते हैं
1 + अंतिम एस पर पहला दुश्मन सेट करें
इस बिंदु से अगले दुश्मनों को सेट करने के लिए सरणी में प्रत्येक मान जोड़ें
अंतिम दुश्मन गोटो 2 से शुरू करें
यदि आपके पास अब शत्रु और सच्चे मामले हैं, तो संभावना बढ़ती है कि गिनती अधिक हो सकती है और अधिक डी के साथ संभावना डूब जाती है।
table{width:80%}
td,th{width:45%;border:1px solid blue;}
<table>
<caption>Working [1,4]</caption>
<tr><th>Number</th><th>Status</th></tr>
<tr><td>1</td><td>S</td></tr>
<tr><td>2</td><td>X</td></tr>
<tr><td>3</td><td>X</td></tr>
<tr><td>4</td><td>S</td></tr>
<tr><td>5</td><td>X</td></tr>
<tr><td>6</td><td>X</td></tr>
<tr><td>7</td><td>D3</td></tr>
<tr><td>8</td><td>D4</td></tr>
<tr><td>9</td><td>X</td></tr>
<tr><td>10</td><td>D3D3</td></tr>
<tr><td>11</td><td>D4D3</td></tr>
<tr><td>12</td><td>D4D4</td></tr>
<tr><td>13</td><td>D3D3D3</td></tr>
<tr><td>14</td><td>D4D3D3</td></tr>
<tr><td>15</td><td>D4D4D4</td></tr>
<tr><td>16</td><td>D4D4D3</td></tr>
</table>
<ul>
<li>S Number in Array</li>
<li>D Start|End point TRUE sum Differences from last S</li>
<li>X False</li>
</ul>
प्लस? बाइट्स शुक्रिया @JonathanAllan मुझे गलत टेस्ट केस देने के लिए
262 बाइट्स लगभग नहीं लेकिन काफी अच्छे हैं 4 पल में गलत टेस्टकेस
झूठे के बाद सच होने से पहले परीक्षण मामलों [1,16,256]
<?for($q=[1],$i=0,$t=1,$w=[0,1];++$i<count($a=$_GET[v]);$w[]=$a[$i],$q[]=$m)($x=$a[$i]-$a[$i-1])>=($y=$a[$i-1]-$a[$i-2])&&((($x)%2)==(($m=(($a[$i]+$x)*$a[$i-1])%$a[$i])%2)&&$m>array_sum($q)||(($x)%2)==0&&(($a[$i]-$a[$i-2])*2%$y)==0||in_array($m,$w))?:$t=0;echo$t;
आरोही का क्रम
व्याख्या
for($q=[1],$i=0,$t=1,$w=[0,1] # $t true case $q array for modulos $w checke values in the array
;++$i<count($a=$_GET[v]) #before loop
;$w[]=$a[$i],$q[]=$m) # after loop $q get the modulo from the result and fill $w with the checked value
($x=$a[$i]-$a[$i-1])>=($y=$a[$i-1]-$a[$i-2])
# First condition difference between $a[i] and $a[$i-1] is greater or equal $a[$i-1] and $a[$i-2]
# if $a[$-1] == 1 $a[$i-2] will be interpreted as 0
&& ## AND Operator with the second condition
(
(($x)%2)== # See if the difference is even or odd
(($m=(($a[$i]+$x)*$a[$i-1])%$a[$i])%2)&&$m>array_sum($q)
# After that we multiply the result with the lower value *$a[$i-1]
# for this result we calculate the modulo of the result with the greater value %$a[$i]
# if the difference and the modulo are both even or odd this belongs to true
# and the modulo of the result must be greater as the sum of these before
# Ask me not why I have make try and error in an excel sheet till I see this relation
||
(($x)%2)==0&&(($a[$i]-$a[$i-2])*2%$y)==0 # or differce modulator is even and difference $a[$i],$a[$i-1] is a multiple of half difference $a[$i-1],$a[$i-2]
||
in_array($m,$w) # if the modulo result is equal to the values that we have check till this moment in the array we can also neglect the comparison
)
?:$t=0; # other cases belongs to false
echo$t; #Output
ऐसा लगता है कि मैंने जो तालिका देखी है उसमें [1,2,3,4,5,6] से मान शामिल हैं और मैं केवल अंतिम आइटम को 9 तक बदलता हूं। 2to3 और 4to5 के लिए हम निम्न मान का मान बनाते हैं। modulo गणना
table{width:95%;}th,td{border:1px solid}
<table><tr><th>difference</th><td></td><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td></tr>
<tr><th>difference modulo 2</th><td></td><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td></tr>
<tr><th>value</th><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td></tr>
<tr><th>result</th><td></td><td>3</td><td>8</td><td>15</td><td>24</td><td>35</td></tr>
<tr><th>modulo value great</th><td></td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td></tr>
<tr><th>modulo 2</th><td></td><td>1</td><td>0</td><td>1</td><td>0</td><td>1</td></tr>
<tr><th></th><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>difference</th><td></td><td>1</td><td>1</td><td>1</td><td>1</td><td>2</td></tr>
<tr><th>difference modulo 2</th><td></td><td>1</td><td>1</td><td>1</td><td>1</td><td>0</td></tr>
<tr><th>value</th><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>7</td></tr>
<tr><th>result</th><td></td><td>3</td><td>8</td><td>15</td><td>24</td><td>45</td></tr>
<tr><th>modulo value great</th><td></td><td>1</td><td>2</td><td>3</td><td>4</td><td>3</td></tr>
<tr><th>modulo 2</th><td></td><td>1</td><td>0</td><td>1</td><td>0</td><td>1</td></tr>
<tr><th></th><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>difference</th><td></td><td>1</td><td>1</td><td>1</td><td>1</td><td>3</td></tr>
<tr><th>difference modulo 2</th><td></td><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td></tr>
<tr><th>value</th><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>8</td></tr>
<tr><th>result</th><td></td><td>3</td><td>8</td><td>15</td><td>24</td><td>55</td></tr>
<tr><th>modulo value great</th><td></td><td>1</td><td>2</td><td>3</td><td>4</td><td>7</td></tr>
<tr><th>modulo 2</th><td></td><td>1</td><td>0</td><td>1</td><td>0</td><td>1</td></tr>
<tr><th></th><td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><th>difference</th><td></td><td>1</td><td>1</td><td>1</td><td>1</td><td>4</td></tr>
<tr><th>difference modulo 2</th><td></td><td>1</td><td>1</td><td>1</td><td>1</td><td>0</td></tr>
<tr><th>value</th><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>9</td></tr>
<tr><th>result</th><td></td><td>3</td><td>8</td><td>15</td><td>24</td><td>65</td></tr>
<tr><th>modulo value great</th><td></td><td>1</td><td>2</td><td>3</td><td>4</td><td>2</td></tr>
<tr><th>modulo 2</th><td></td><td>1</td><td>0</td><td>1</td><td>0</td><td>0</td></tr></table>