Ci sono state un paio di sfide che coinvolgono il raddoppio del codice sorgente: qui e qui . Il compito che abbiamo qui è un po 'più difficile, ma dovrebbe essere fattibile in quasi tutte le lingue.
In questa sfida, prenderai un intero positivo arbitrario. Il tuo programma deve generare quell'intero raddoppiato . Quando il codice sorgente viene raddoppiato, prenderà un numero intero positivo e lo emetterà al quadrato .
Come viene raddoppiato il tuo codice sorgente? Bene, puoi farlo a modo tuo . Vale a dire, è possibile dividere il codice sorgente fino in stringhe di byte o caratteri (o gettoni in Langs tokenized) di qualsiasi uguale lunghezza desiderata , e ripetere ogni blocco due volte di seguito.
Per un programma iniziale di ABCDEFGHIJKL
, (lunghezza 12) qui ci sono tutti i possibili programmi raddoppiati:
Chunk length | Doubled source code
-------------+-------------------------
1 | AABBCCDDEEFFGGHHIIJJKKLL
2 | ABABCDCDEFEFGHGHIJIJKLKL
3 | ABCABCDEFDEFGHIGHIJKLJKL
4 | ABCDABCDEFGHEFGHIJKLIJKL
6 | ABCDEFABCDEFGHIJKLGHIJKL
12 | ABCDEFGHIJKLABCDEFGHIJKL
Si noti che ciò significa che i programmi di lunghezza primaria possono essere raddoppiati solo in due modi: ogni carattere raddoppia o l'intero programma viene ripetuto due volte.
Regole:
- Il codice deve essere un programma o una funzione completi.
- Sono vietate le scappatoie standard.
- Sono consentiti metodi I / O standard.
- Tutti i caratteri / byte, inclusi spazi bianchi e nuove righe, vengono conteggiati nella lunghezza del codice e contribuiscono ai blocchi.
- Si può supporre che l'ingresso e la sua piazza possono essere rappresentati da tipo int / integer di tua lingua.
- Non puoi assumere una nuova riga finale o un altro personaggio.
- Fornisci la dimensione del blocco nell'intestazione dopo il conteggio dei byte.
- Questo è code-golf , quindi i programmi più brevi sono meglio! Se due programmi hanno la stessa lunghezza, vince quello che utilizza la lunghezza del blocco più piccola. (Se hai un programma più lungo che utilizza una lunghezza del pezzo più piccola, vale la pena pubblicare anche questo!)
- Se il tuo programma richiede un secondo input / riga, non puoi fare ipotesi sul suo valore. In particolare, il programma dovrebbe funzionare se il secondo input è vuoto, uguale al primo o un numero intero diverso. Se il programma non richiede un secondo input / riga, è possibile ignorare questa limitazione.
5 -> 10
; doppio codice: 5 -> 25 25
.
.0
alla fine)?