Défi:
Lire l'entrée (dans la plage ASCII visible) et la sortie avec quelques modifications:
- Dans chaque ensemble de 10 caractères de l'entrée au hasard (50/50):
- remplacer un caractère * (par un ** aléatoire dans la plage ASCII visible) (ex.
lumberjack
devientlumbeZjack
) - ou supprimez un caractère (ex.
lumberjack
devientlmberjack
)
- remplacer un caractère * (par un ** aléatoire dans la plage ASCII visible) (ex.
* Si l'ensemble est de moins de 10 caractères, vous n'avez pas à le modifier, mais vous pouvez.
** Le caractère peut être le même que celui entré, tant qu'il est encore aléatoire.
Exemple:
Entrée: Go home cat! You're drunk!
Sortie: Go hom cat! YouLre drunk!
(juste un exemple, car la sortie peut être aléatoire, ne pas utiliser comme cas de test)
Règles:
- code-golf , le moins de personnages gagne!
Réponses:
Pyth,
2725 octetsSuite de tests disponible ici.
Merci à Maltysen d' avoir rasé 2 octets.
Explication
Comme c'est souvent le cas, je pense que c'est un peu une méthode naïve et peut être améliorée. Habituellement, je trouve quelque chose d'évident en tapant l'explication, mais rien ne m'a sauté dessus cette fois.
la source
OC\¾
est le même nombre d'octets queO190
, et l'affectation de K au caractère de suppression n'économise pas non plus d'espace.*> <> ,
44465250 octetsEssayez-le ici!
Cela utilise n'importe quel caractère ascii près / au-dessus de l'espace pour les caractères aléatoires. Cela modifie toujours le 6ème caractère, sauf si c'est la fin d'une chaîne et que la longueur de cette chaîne n'est pas un multiple de 10. Cela a 50% de chances de supprimer le 7ème caractère au lieu de modifier le 6ème.
Contribution
Production
Edit:
Cette réponse n'est probablement pas toujours dans la gamme ascii visible, édition ...Fixe.Edit2:
Je n'ai pas vu qu'il devait y avoir une chance à 50/50 de supprimer un personnage, de modifier à nouveau ...Je crois que tout est en ordre maintenant :).la source
Perl 6 ,
7867 octetsEssayez-le
Explication:
la source
Pyth - 21 octets
Essayez-le en ligne ici .
la source
Python 3 , 75 octets
Le 75 octets applique la transformation au premier caractère de chaque groupe, et ne choisit que parmi 2 caractères aléatoires, comme dans la réponse Jelly (que OP a permis):
Essayez-le en ligne!
Il s'agit d'une fonction récursive qui, à chaque itération, n'ajoute rien
'a'
, ou'b'
, et s'appelle ensuite avec les 10 premiers caractères coupés. L'itération finale court-circuite às and
(une chaîne vide est fausse), évitant une récursion infinie.Le résultat de tous les appels séparés est ensuite concaténé et renvoyé au contexte qui a appelé la fonction.
120 octets
Bien sûr, cela ressemble un peu à de la triche, alors en voici une qui est complètement aléatoire:
Essayez-le en ligne!
la source
Gelée ,
15 1413 octets 13 caractèresTryItOnline!
Remplace ou supprime le premier des dix caractères, y compris celui des 1 à 9 derniers, s'il existe un tel morceau. Choisit parmi le sous-ensemble, certes petit, de caractères
1
:;2
.Comment?
Pour choisir parmi tous les ASCII imprimables plutôt que juste
1
et2
(toujours en remplaçant ou supprimant le 1er caractère de chaque bloc) en 21 octets:Pour une version entièrement aléatoire (suppression / remplacement 50/50, ASCII imprimable aléatoire uniforme et emplacement de caractère uniformément aléatoire dans chaque bloc), j'ai 30 octets (probablement non optimaux):
Cela fait tourner chaque morceau laissé par une quantité aléatoire, fait sauter le dernier caractère et appelle ensuite un aléatoire parmi les deux premiers liens, dont l'un est vide et l'autre qui concatène avec un caractère ASCII imprimable aléatoire; il fait ensuite tourner à nouveau le morceau vers la droite.
la source
Python3,
188186184114 caractèresSemble trop long. Pourrait probablement être raccourci beaucoup avec un lambda.Apparemment, l'OP a permis de choisir le caractère aléatoire dans une liste de deux caractères et l'index du caractère à remplacer peut être une constante. Après les modifications, ma réponse aurait ressemblé exactement à la soumission @FlipTacks Python, c'est donc le formulaire avec lequel je reste.
@FlipTack a enregistré 5 octets!
la source
Clojure,
135139 octetsModifier: J'ai oublié d'utiliser à la
partition-all
place departition
.Non golfé:
Man ces noms de fonctions sont longs ... Quoi qu'il en soit, il divise l'entrée en partitions de 10 caractères, les divise au point aléatoire en deux moitiés, injecte au hasard une chaîne vide ou un caractère aléatoire entre eux et supprime le premier caractère de la 2e moitié.
la source
Mathematica 133 octets (129 caractères)
76 caractères pour écrire les noms de 8 fonctions: /
L'utilisation de la
⌊..⌋
place deFloor[]
sauvegarde 5 caractères, 1 octet.la source
Python 3, 129 octets
Afin d'économiser quelques octets, au lieu d'importer le module aléatoire de Python, je viens de faire quelques opérations modulo sur l'id de la chaîne, qui devrait être différente à chaque fois. Par exemple, le programme décidera de supprimer ou non un caractère ou de le remplacer selon qu'il
id(string)//10
est pair ou non (je divise l'entier par 10 car le dernier chiffre sera toujours pair).la source