La sfida
Ti viene dato:
- un elenco non vuoto, non ordinato h di numeri interi positivi (il pagliaio)
- un numero intero positivo n (l'ago)
Il tuo compito è di restituire l'elenco di tutte le concatenazioni decimali uniche di permutazioni di h la cui rappresentazione binaria contiene la rappresentazione binaria di n .
Esempi
h = [1, 2, 3]
n = 65C'è solo una concatenazione corrispondente, quindi l'output previsto è
[321]
.h = [1, 2, 3]
n = 7Questa volta, ci sono tre concatenazioni che contengono il modello binario 111 . L'output previsto è
[123, 231, 312]
.h = [12, 3]
n = 7Sono disponibili solo due permutazioni ed entrambe corrispondono. L'output previsto è
[123, 312]
.h = [1, 2, 2]
n = 15L'unica concatenazione corrispondente è 122 ( 1111010 in binario, che contiene 1111 ), quindi l'output previsto è
[122]
. Nota che due permutazioni effettivamente portare a 122 ma siete senza possibile eseguire l'output[122, 122]
.
Chiarimenti e regole
- Puoi prendere l'ago come un numero intero (
65
), una stringa che rappresenta un valore decimale ("65"
) o una stringa che rappresenta un valore binario ("1000001"
). - Puoi prendere il pagliaio come un array / oggetto / set nativi di numeri interi (
[11,12,13]
), un array / oggetto / set di stringhe nativi che rappresentano valori decimali (["11","12","13"]
) o una stringa delimitata di valori decimali ("11 12 13"
o"11,12,13"
). Puoi anche optare per una variante usando matrici di cifre (come[[1,1],[1,2],[1,3]]
). - L'output deve seguire uno dei formati sopra descritti per il pagliaio, ma non necessariamente lo stesso.
- Non dovresti gestire covoni di fieno la cui concatenazione decimale più alta è maggiore dell'intero senza segno più alto rappresentabile nella tua lingua.
- A parte questo, il tuo codice dovrebbe teoricamente supportare qualsiasi input, supponendo che abbia abbastanza tempo e memoria.
- Questo è
SPARTA!code-golf , quindi vince la risposta più breve in byte!
Casi test
Haystack | Needle | Output
---------------------+----------+-----------------------------------
[ 1, 2, 3 ] | 65 | [ 321 ]
[ 1, 2, 3 ] | 7 | [ 123, 231, 312 ]
[ 12, 3 ] | 7 | [ 123, 312 ]
[ 1, 2, 2 ] | 15 | [ 122 ]
[ 1, 2 ] | 7 | []
[ 12, 34, 56 ] | 21 | [ 125634, 341256, 345612, 563412 ]
[ 1, 2, 3, 4, 5 ] | 511 | [ 53241 ]
[ 1, 3, 5, 7, 9 ] | 593 | [ 37519, 51793, 75913, 75931 ]
[ 11, 12, 13, 14 ] | 12141311 | [ 12141311 ]
[ 1, 2, 1, 2, 1, 2 ] | 1015 | [ 221112 ]
["12","3"]
e ["1","23"]
sono due pagliai distinti.
set([(1, 2, 2)])
. È valido o dovrei sbarazzarmi diset
?