PHP, 323 byte
Come altri contano le monete fino alla somma degli ultimi due elementi dell'array
<?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;
La mia risposta migliore e più lunga credo> 370 byte
Fornisco solo una versione espansa perché è più lunga della mia risposta prima
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;
Spiegazione per questa risposta
Versione online
Impostare tutto nell'array su false == X
Impostare tutti i numeri nell'array che si controlla su S
Trovate differenze tra l'ultima S e l'altra S o 0
Inizia alla fine S nell'array
Impostare tutto il numero su D dove ultimo S + una di tutte le differenze
Inizia a tutti D
IMPOSTARE i valori da "T" a D nell'array
GOTO 5 Ripetilo con tutti i DI trovati non lo ha fatto davvero nel codice
Se l'elemento successivo nell'array ha X, si tratta di un caso falso altrimenti True
Passaggi aggiuntivi La differenza è nel caso dello snippet 3 Tra 1 e 4 sono 2 X Ciò significa che è necessario il secondo D al passaggio 5. Dopo questo valore in questo caso 10 sono tutti i casi veri che ho potuto vedere così lontano che esiste una relazione tra differenza e conteggio nell'array che controlli per calcolare la quantità di D (passaggio 5) necessaria per ottenere il punto prima di trovare l'ultimo caso falso.
È possibile impostare più valori dall'ultimo elemento direttamente su true. Questi punti possono fare la differenza per decidere se il conteggio avido di monete con il valore successivo sia lo stesso del multiplo dell'ultimo dell'array. D'altra parte puoi impostare il nemico
Metti il primo nemico a 1 + Ultima S
Da questo punto aggiungi ogni valore nell'array per impostare i nemici successivi
Inizia con l'ultimo nemico Vai a 2
Se ora hai nemici e casi reali, aumenta la probabilità che i conteggi possano essere gli stessi Con più D la probabilità affonda.
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>
più? Byte Grazie @JonathanAllan per darmi casi di test errati
262 Bytes Quasi ma non abbastanza bene 4 testcase errati nel momento
i casi test [1,16.256] prima dovrebbero essere veri dopo falsi
<?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;
Ordine ascendente dell'array
Spiegazione
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
Sembra che ciò che ho visto nella tabella contenga valori da [1,2,3,4,5,6] e cambio solo l'ultimo elemento fino a 9. per 2to3 e 4to5 creiamo il valore del valore più basso nella calcolo del 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>