Houve alguns desafios envolvendo a duplicação do código fonte: aqui e aqui . A tarefa que temos aqui é um pouco mais difícil, mas deve ser executável em quase todos os idiomas.
Neste desafio, você receberá um número inteiro positivo arbitrário. Seu programa deve gerar esse número inteiro duplicado . Quando seu código-fonte é duplicado, ele recebe um número inteiro positivo e o produz ao quadrado .
Como seu código fonte é duplicado? Bem, você pode fazer do seu jeito . Ou seja, você pode dividir seu código-fonte se em cadeias de bytes ou caracteres (ou fichas em langs tokenized) de qualquer igual comprimento desejado , e repetir cada pedaço duas vezes consecutivas.
Para um programa inicial de ABCDEFGHIJKL
, (comprimento 12), aqui estão todos os programas duplicados possíveis:
Chunk length | Doubled source code
-------------+-------------------------
1 | AABBCCDDEEFFGGHHIIJJKKLL
2 | ABABCDCDEFEFGHGHIJIJKLKL
3 | ABCABCDEFDEFGHIGHIJKLJKL
4 | ABCDABCDEFGHEFGHIJKLIJKL
6 | ABCDEFABCDEFGHIJKLGHIJKL
12 | ABCDEFGHIJKLABCDEFGHIJKL
Observe que isso significa que programas com comprimentos primos só podem ser duplicados de duas maneiras: cada caractere duplicado ou o programa completo é repetido duas vezes.
Regras:
- O código deve ser um programa ou função completo.
- As brechas padrão são proibidas.
- Métodos de E / S padrão são permitidos.
- Todos os caracteres / bytes, incluindo espaços em branco e novas linhas, são contados no comprimento do código e contribuem para os pedaços.
- Você pode assumir que a entrada e seu quadrado podem ser representados pelo tipo int / número inteiro do seu idioma.
- Você não pode assumir uma nova linha à direita ou outro caractere.
- Forneça o tamanho do seu pedaço no cabeçalho após a contagem de bytes.
- Isso é código-golfe , então programas mais curtos são melhores! Se dois programas tiverem o mesmo tamanho, vence aquele que usar o menor tamanho do pedaço. (Se você tem um programa mais longo que usa um tamanho menor de bloco, vale a pena postar também!)
- Se o seu programa exigir uma segunda entrada / linha, você não poderá fazer suposições sobre seu valor. Em particular, seu programa deve funcionar se a segunda entrada estiver vazia, igual à primeira ou um número inteiro diferente. Se o seu programa não exigir uma segunda entrada / linha, você poderá ignorar esta restrição.
5 -> 10
; código duplo: 5 -> 25 25
.
.0
no final)?