Desafio:
Leia a entrada (dentro do intervalo ASCII visível) e a saída com algumas modificações:
- Em cada conjunto de 10 caracteres da entrada aleatoriamente (50/50):
- substitua um caractere * (por um aleatório ** dentro do intervalo ASCII visível) (por exemplo,
lumberjack
torna-selumbeZjack
) - ou remover um caractere (por exemplo,
lumberjack
torna-selmberjack
)
- substitua um caractere * (por um aleatório ** dentro do intervalo ASCII visível) (por exemplo,
* Se o conjunto tiver menos de 10 caracteres, você não precisará modificá-lo, mas poderá.
** O caractere pode ser o mesmo que uma entrada, desde que ainda seja aleatório.
Exemplo:
Entrada: Go home cat! You're drunk!
Saída: Go hom cat! YouLre drunk!
(apenas um exemplo, já que a saída pode ser aleatória, não use como caso de teste)
Regras:
- código-golfe , menos personagens ganha!
Respostas:
Pitão,
2725 bytesConjunto de testes disponível aqui.
Graças à Maltysen para raspar 2 bytes.
Explicação
Como costuma ser o caso, acho que esse é um método um pouco ingênuo e que pode ser aprimorado. Normalmente, encontro algo óbvio enquanto digito a explicação, mas nada me ocorreu dessa vez.
fonte
OC\¾
é o mesmo número de bytes queO190
, e atribuir K ao caractere de exclusão também não economiza espaço.*> <> ,
44465250 bytesExperimente aqui!
Isso usa qualquer caractere ascii próximo / acima do espaço para os caracteres aleatórios. Isso sempre edita o sexto caractere, a menos que seja o final de uma string e o comprimento dessa string não seja múltiplo de 10. Isso tem 50% de chance de remover o 7º caractere em vez de editar o sexto.
Entrada
Resultado
Editar:
Esta resposta provavelmente nem sempre está no intervalo ascii visível, editando ...Corrigido.Edit2:
Não viu, precisa haver uma chance de 50/50 para remover um personagem, editando novamente ...Eu acredito que tudo está em ordem agora :).fonte
Perl 6 ,
7867 bytesTente
Explicação:
fonte
Pitão - 21 bytes
Experimente online aqui .
fonte
Python 3 , 75 bytes
O byte de 75 bytes aplica a transformação ao primeiro caractere de cada grupo e seleciona apenas dois caracteres aleatórios, como na resposta Jelly (que o OP permitiu):
Experimente online!
Essa é uma função recursiva que, a cada iteração, acrescenta nada
'a'
, ou'b'
, e depois se autodenomina com os 10 primeiros caracteres cortados. A iteração finals and
provoca um curto-circuito em (uma string vazia é falsy), evitando a recursão infinita.O resultado de todas as chamadas separadas é concatenado e retornado ao contexto que chamou a função.
120 bytes
Claro, isso parece um pouco de trapaça, então aqui está uma que é completamente aleatória:
Experimente online!
fonte
Jelly ,
15 1413 bytes 13 caracteresTryItOnline!
Substitui ou remove o primeiro de cada dez caracteres, incluindo o dos últimos 1 a 9, se houver esse pedaço. Escolhe do, reconhecidamente pequeno, subconjunto de caracteres:
1
;2
.Quão?
Para escolher entre todos os ASCII imprimíveis em vez de apenas
1
e2
(ainda substituindo ou removendo o primeiro caractere de cada bloco) em 21 bytes:Para uma versão totalmente aleatória (50/50 remover / substituir, ASCII imprimível aleatório uniforme e um local de caracteres aleatoriamente uniforme em cada bloco), eu tenho 30 bytes (provavelmente não ideal):
Isso gira cada pedaço deixado por uma quantidade aleatória, exibe o último caractere e chama um dos dois primeiros links aleatórios, um dos quais está vazio e o outro que concatena com um caractere ASCII imprimível aleatório; em seguida, gira o pedaço para a direita novamente.
fonte
Python3,
188186184114 caracteresParece muito tempo. Provavelmente poderia ser muito reduzido com uma lambda.Aparentemente, o OP permitiu escolher o caractere aleatório de uma lista de dois caracteres e o índice do caractere a ser substituído pode ser uma constante. Após as modificações, minha resposta teria exatamente a mesma aparência do envio do @FlipTacks Python, então esse é o formulário em que estou hospedado.
O @FlipTack salvou 5 bytes!
fonte
Clojure,
135139 bytesEdit: Esqueceu de usar em
partition-all
vez departition
.Ungolfed:
Cara, esses nomes de função são longos ... Enfim, ele divide a entrada em partições de 10 caracteres, as divide em pontos aleatórios em duas metades, injeta aleatoriamente uma string vazia ou um caracter aleatório entre elas e descarta o primeiro caractere da 2ª parte.
fonte
Mathematica 133 bytes (129 caracteres)
76 caracteres para escrever os nomes de 8 funções: /
Usar o em
⌊..⌋
vez deFloor[]
salva 5 caracteres, 1 byte.fonte
Python 3, 129 bytes
Para economizar alguns bytes, em vez de importar o módulo aleatório do Python, eu apenas fiz algumas operações de módulo no id da string, que deveria ser diferente todas as vezes. Por exemplo, o programa decidirá se deve ou não remover um caractere ou substituir um com base em se
id(string)//10
é par ou não (divido o número inteiro por 10, pois o último dígito sempre será par).fonte