Definiamo un binarray come un array che soddisfa le seguenti proprietà:
- non è vuoto
- il primo valore è a
1
- l'ultimo valore è a
1
- tutti gli altri valori sono
0
o1
Ad esempio, l'array [ 1, 1, 0, 1 ]
è un binarray valido .
L'obiettivo
Dato un array non vuoto A di numeri interi non negativi e un numero intero positivo N , il tuo compito è trovare un binarray B di lunghezza N che consenta di generare A sommando un numero illimitato di copie di B , spostato da un numero illimitato di posizioni.
Esempio
A = [ 1, 1, 2, 4, 1, 2, 2, 1, 0, 1, 0, 1, 1, 0, 1 ]
N = 4
Per questo input, il binarray B = [ 1, 1, 0, 1 ]
sarebbe una risposta valida perché possiamo fare:
[ 1, 1, 0, 1 ]
+ [ 1, 1, 0, 1 ]
+ [ 1, 1, 0, 1 ]
+ [ 1, 1, 0, 1 ]
+ [ 1, 1, 0, 1 ]
+ [ 1, 1, 0, 1 ]
-----------------------------------------------
= [ 1, 1, 2, 4, 1, 2, 2, 1, 0, 1, 0, 1, 1, 0, 1 ]
Regole
- L'input può essere preso in qualsiasi formato ragionevole.
- L'output può essere una matrice nativa (ad esempio
[1, 1, 0, 1]
) o una stringa binaria con o senza un separatore (ad esempio"1,1,0,1"
o"1101"
) - Ti viene richiesto solo di stampare o restituire un binarray valido . In alternativa, puoi scegliere di stamparli o restituirli tutti quando esistono diverse soluzioni.
- Non è necessario supportare input che non portano a nessuna soluzione.
- La somma può includere gli zeri impliciti che non si sovrappongono con qualsiasi copia di B . Il secondo zero nella somma sopra è uno zero implicito.
- Si può presumere che la dimensione massima di A sia 100 e la dimensione massima di B sia 30.
- Questo è code-golf, quindi vince la risposta più breve in byte. Sono vietate le scappatoie standard.
Casi test
Input : N = 1 / A = [ 1, 2, 3, 4, 5 ]
Output: [ 1 ]
Input : N = 2 / A = [ 1, 2, 100, 99 ]
Output: [ 1, 1 ]
Input : N = 3 / A = [ 1, 1, 1 ]
Output: [ 1, 1, 1 ]
Input : N = 3 / A = [ 1, 1, 3, 2, 2 ]
Output: [ 1, 1, 1 ]
Input : N = 3 / A = [ 1, 0, 2, 1, 1, 1, 0, 0, 1, 0, 1 ]
Output: [ 1, 0, 1 ]
Input : N = 4 / A = [ 1, 2, 2, 2, 1 ]
Output: [ 1, 1, 1, 1 ]
Input : N = 4 / A = [ 1, 1, 2, 4, 1, 2, 2, 1, 0, 1, 0, 1, 1, 0, 1 ]
Output: [ 1, 1, 0, 1 ]
Input : N = 4 / A = [ 1, 1, 0, 2, 1, 0, 1 ]
Output: [ 1, 0, 0, 1 ] or [ 1, 1, 0, 1 ]
Input : N = 5 / A = [ 1, 3, 6, 9, 8, 6, 3, 4 ]
Output: [ 1, 1, 1, 0, 1 ]
Input : N = 8 / A = [ 2, 1, 0, 2, 3, 3, 1, 2, 1 ]
Output: [ 1, 0, 0, 1, 1, 1, 0, 1 ]
Input : N = 10 / A = [ 1, 2, 1, 2, 2, 1, 3, 3, 3, 2, 3, 0, 2, 1, 1, 0, 1 ]
Output: [ 1, 1, 0, 1, 0, 1, 1, 1, 0, 1 ]
Input : N = 13 / A = [ 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1 ]
Output: [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ]
Input : N = 5 / A = [ 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 ]
Output: [ 1, 1, 1, 1, 1 ]
Input : N = 6 / A = [ 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 ]
Output: [ 1, 0, 0, 0, 0, 1 ]
Input : N = 7 / A = [ 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 ]
Output: [ 1, 1, 0, 0, 0, 1, 1 ]
Input : N = 9 / A = [ 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 ]
Output: [ 1, 0, 1, 0, 1, 0, 1, 0, 1 ]
N=4, A = [ 1, 1, 2, 4, 1, 2, 2, 2, 1, 2, 2, 1, 2, 0, 1 ]
, si ottiene 30459 che è divisibile per entrambi 11 e ancora 13 solo uno di [ 1, 1, 0, 1 ]
ed [ 1, 0, 1, 1 ]
è una risposta valida.
N
che dovrebbe essere ragionevolmente supportato?