Ingresso:
- Un numero intero
nnell'intervallo2 <= n <= 10 - Un elenco di numeri interi positivi
Produzione:
Converti gli interi nella loro rappresentazione binaria (senza zero iniziali) e uniscili tutti insieme.
Quindi determinare tutte le sottostringhe binarie che formano una 'recinzione binaria' utilizzando la nquantità di pali della recinzione. Gli spazi (zeri) tra ogni paletto sono irrilevanti (almeno 1), ma i paletti stessi devono essere tutti della stessa larghezza.
Qui le regex che le sottostringhe binarie devono corrispondere per ciascuna n:
n Regex to match to be a 'binary fence' Some examples
2 ^(1+)0+\1$ 101; 1100011; 1110111;
3 ^(1+)0+\10+\1$ 10101; 1000101; 110011011;
4 ^(1+)0+\10+\10+\1$ 1010101; 110110011011; 11110111100001111001111;
etc. etc. You get the point
Guardando gli n=4esempi:
1010101
^ ^ ^ ^ All fence posts have a width of one 1
^ ^ ^ with one or more 0s in between them
110110011011
^^ ^^ ^^ ^^ All fence posts have a width of two 1s
^ ^^ ^ with one or more 0s in between them
11110111100001111001111
^^^^ ^^^^ ^^^^ ^^^^ All fence posts have a width of four 1s
^ ^^^^ ^^ with one or more 0s in between them
Trasmettiamo quindi i numeri che usano cifre binarie delle "recinzioni binarie" corrispondenti.
Esempio:
Ingresso: n=4,L=[85,77,71]
La rappresentazione binaria di questi numeri interi uniti insieme è:
1010101 1001101 1000111(NOTA: gli spazi vengono aggiunti solo come chiarimento per l'esempio).
Poiché n=4, cerchiamo sottostringhe corrispondenti al regex (1+)0+\10+\10+\1, nel qual caso possiamo trovarne due:
1010101(nella posizione (1010101) 1001101 1000111); e 11001101100011(in posizione 101010(1 1001101 100011)1)
Il primo recinto binario utilizza solo cifre binarie da 85e il secondo recinto binario utilizza cifre binarie da tutti e tre i numeri interi. Quindi l'output in questo caso sarebbe:
[[85],[85,77,71]]
Regole della sfida:
- Anche se è anche menzionato nell'esempio sopra, l'ultima frase è importante: vengono visualizzati i numeri per i quali vengono utilizzate le cifre binarie nella sottostringa "binary fence".
- L'I / O è flessibile. L'input può essere un elenco / array / flusso di numeri interi, spazio / virgola / stringa delimitata da nuova riga, ecc. L'output può essere un elenco intero 2D, una singola stringa delimitata, un elenco di stringhe, una nuova riga stampata su STDOUT, ecc. Tutto a te, ma per favore, indica cosa hai usato nella tua risposta.
- L'ordine di output dell'elenco stesso è irrilevante, ma l'output di ciascun elenco interno è ovviamente nello stesso ordine dell'elenco di input. Quindi, con l'esempio sopra,
[[85,77,71],[85]]è anche un output valido, ma[[85],[77,85,71]]non lo è. - Come avrai già notato dall'esempio (il
85), le cifre binarie possono essere utilizzate più volte. - Le regex dovrebbero corrispondere interamente alla sottostringa. Quindi
110101o010101non sono mai valide 'recinzioni binarie' (10101è comunque iffn=3). - Gli elementi nella lista di output non sono univoci, solo le posizioni binarie delle "recinzioni binarie" sono uniche. Se è possibile creare più 'recinzioni binarie' con gli stessi numeri interi, li aggiungiamo più volte all'elenco di output.
Ad esempion=2,L=[109, 45](binario1101101 101101) può formare questi sottostringhe 'recinzione binario':11011(in posizione(11011)01 101101);101(in posizione1(101)101 101101);11011(in posizione110(1101 1)01101);101(in posizione1101(101) 101101);11011(in posizione110110(1 1011)01);101(in posizione1101101 (101)101);101(in posizione1101101 101(101)), quindi l'uscita sarebbe[[109],[109],[109,45],[109],[109,45],[45],[45]].
Un altro esempio:n=2,L=[8127](binario1111110111111) può formare questi sottostringhe 'recinzione binario':1111110111111(in posizione(1111110111111));11111011111(in posizione1(11111011111)1);111101111(in posizione11(111101111)11);1110111(in posizione111(1110111)111);11011(in posizione1111(11011)1111);101(in posizione11111(101)11111), quindi l'uscita sarebbe[[8127],[8127],[8127],[8127],[8127],[8127]]. - Se nessuna uscita valida è possibile, si può restituire un elenco vuoto o qualche altro tipo di output Falsey (
null,false, getta un errore, ecc Anche in questo caso, la chiamata).
Regole generali:
- Questo è code-golf , quindi vince la risposta più breve in byte.
Non lasciare che le lingue di code-golf ti scoraggino dal pubblicare risposte con lingue non codegolfing. Prova a trovare una risposta il più breve possibile per "qualsiasi" linguaggio di programmazione. - Per la tua risposta valgono regole standard , quindi puoi usare STDIN / STDOUT, funzioni / metodo con i parametri corretti e tipo di ritorno, programmi completi. La tua chiamata.
- Sono vietate le scappatoie predefinite .
- Se possibile, aggiungi un link con un test per il tuo codice (ad es. TIO ).
- Inoltre, si consiglia vivamente di aggiungere una spiegazione per la risposta.
Casi test:
Input: Output
(the binary below the output are added as clarification,
where the parenthesis indicate the substring matching the regex):
4, [85,77,71] [[85],[85,77,71]]
(1010101) 1001101 1000111; 101010(1 1001101 100011)1
2, [109,45] [[109],[109],[109,45],[109],[109,45],[45],[45]]
(11011)01 101101; 1(101)101 101101; 110(1101 1)01101; 1101(101) 101101; 110110(1 1011)01; 1101101 (101)101; 1101101 101(101)
3, [990,1,3,3023,15,21] [[990,1,3,3023],[990,1,3,3023],[1,3,3023],[21]]
(1111011110 1 11 1)01111001111 1111 10101; 11110(11110 1 11 101111)001111 1111 10101; 1111011110 (1 11 101111001111) 1111 10101; 1111011110 1 11 101111001111 1111 (10101)
2, [1,2,3,4,5,6,7,8,9,10] [[1,2,3],[2,3],[4,5],[5],[5,6,7],[6,7],[6,7],[8,9],[9],[10]]
(1 10 11) 100 101 110 111 1000 1001 1010; 1 (10 1)1 100 101 110 111 1000 1001 1010; 1 10 11 (100 1)01 110 111 1000 1001 1010; 1 10 11 100 (101) 110 111 1000 1001 1010; 1 10 11 100 10(1 110 111) 1000 1001 1010; 1 10 11 100 101 (110 11)1 1000 1001 1010; 1 10 11 100 101 1(10 1)11 1000 1001 1010; 1 10 11 100 101 110 111 (1000 1)001 1010; 1 10 11 100 101 110 111 1000 (1001) 1010; 1 10 11 100 101 110 111 1000 1001 (101)0
3, [1,2,3,4,5,6,7,8,9,10] [[4,5],[8,9]]
1 10 11 (100 101 )110 111 1000 1001 1010; 1 10 11 100 101 110 111 (1000 1001) 1010
10, [1,2,3,4,5,6,7,8,9,10] []
No binary fences are possible for this input
6, [445873,2075] [[445873,2075],[445873,2075],[445873,2075]]
(1101100110110110001 1)00000011011; 110(1100110110110001 100000011)011; 1101100(110110110001 100000011011)
2, [8127] [[8127],[8127],[8127],[8127],[8127],[8127]]
(1111110111111); 1(11111011111)1; 11(111101111)11; 111(1110111)111; 1111(11011)1111; 11111(101)11111
2, [10,10] [[10],[10,10],[10]]
(101)0 1010; 10(10 1)010; 1010 (101)0
4, [10,10,10] [[10,10],[10,10,10],[10,10]]
(1010 101)0 1010; 10(10 1010 1)010; 1010 (1010 101)0
[1,2,3]valido per testcase 4? Vedo la recinzione(1 10 11)
2, [10, 10]che dovrebbe risultare [[10],[10,10],[10]]se capisco la sfida correctl.y