Herausforderung:
Lesen Sie die Eingabe (innerhalb des sichtbaren ASCII-Bereichs) und die Ausgabe mit einigen Änderungen:
- In jedem Satz von 10 Zeichen der Eingabe zufällig (50/50):
- Ersetzen Sie ein Zeichen * (durch ein zufälliges ** Zeichen innerhalb des sichtbaren ASCII-Bereichs) (z.
lumberjack
B. wirdlumbeZjack
) - oder entfernen Sie ein Zeichen (zB
lumberjack
wirdlmberjack
)
- Ersetzen Sie ein Zeichen * (durch ein zufälliges ** Zeichen innerhalb des sichtbaren ASCII-Bereichs) (z.
* Wenn das Set weniger als 10 Zeichen enthält, müssen Sie es nicht ändern, können es aber.
** Das Zeichen kann mit der einen Eingabe identisch sein, solange es noch zufällig ist.
Beispiel:
Eingabe: Go home cat! You're drunk!
Ausgabe: Go hom cat! YouLre drunk!
(nur ein Beispiel, da die Ausgabe zufällig sein kann, nicht als Testfall verwenden)
Regeln:
- Code-Golf , die wenigsten Charaktere gewinnen!
Antworten:
Pyth,
2725 BytesTestsuite hier verfügbar.
Vielen Dank an Maltysen für das Rasieren von 2 Bytes.
Erläuterung
Wie so oft halte ich dies für eine naive Methode, die möglicherweise verbessert wird. Normalerweise finde ich beim Schreiben der Erklärung etwas Offensichtliches, aber diesmal ist mir nichts aufgefallen.
quelle
OC\¾
ist die gleiche Anzahl von Bytes wieO190
, und das Zuweisen von K zum Löschzeichen spart auch keinen Platz.*> <> ,
44465250 BytesProbieren Sie es hier aus!
Dies verwendet ein beliebiges ASCII-Zeichen in der Nähe / über dem Leerzeichen für die zufälligen Zeichen. Dadurch wird immer das 6. Zeichen bearbeitet, es sei denn, es ist das Ende einer Zeichenfolge und die Länge dieser Zeichenfolge ist kein Vielfaches von 10. Dies hat eine 50% ige Chance, das 7. Zeichen zu entfernen, anstatt das 6. Zeichen zu bearbeiten.
Eingang
Ausgabe
Bearbeiten:
Diese Antwort liegt wahrscheinlich nicht immer im sichtbaren ASCII-Bereich, Bearbeiten ...Behoben.Edit2: Ich
habe nicht gesehen, dass es eine 50/50-Chance geben muss, einen Charakter zu entfernen und erneut zu bearbeiten ...Ich glaube, jetzt ist alles in Ordnung :).quelle
Perl 6 ,
7867 BytesVersuch es
Erläuterung:
quelle
Pyth - 21 Bytes
Probieren Sie es hier online aus .
quelle
Python 3 , 75 Bytes
Das 75-Byte wendet die Transformation auf das erste Zeichen jeder Gruppe an und wählt nur aus 2 zufälligen Zeichen aus, wie in der Jelly-Antwort (welche OP erlaubt):
Probieren Sie es online aus!
Dies ist eine rekursive Funktion, die bei jeder Iteration entweder nichts vorstellt
'a'
oder'b'
sich selbst mit den ersten 10 abgeschnittenen Zeichen aufruft. Die letzte Iterations and
schließt bei (eine leere Zeichenfolge ist falsch) kurz, wodurch eine unendliche Rekursion vermieden wird.Das Ergebnis aller separaten Aufrufe wird dann verkettet und an den Kontext zurückgegeben, der die Funktion aufgerufen hat.
120 Bytes
Das fühlt sich natürlich ein bisschen wie Betrug an, also hier ist eine, die völlig zufällig ist:
Probieren Sie es online aus!
quelle
Gelee ,
15 1413 Bytes 13 ZeichenTryItOnline!
Ersetzt oder entfernt das erste von zehn Zeichen, einschließlich des letzten 1-9, wenn es einen solchen Block gibt. Wählt aus der zugegebenermaßen kleinen Teilmenge von Zeichen :
1
;2
.Wie?
So wählen Sie in 21 Bytes aus allen druckbaren ASCII-Elementen aus und nicht nur
1
und2
(wobei das erste Zeichen jedes Blocks ersetzt oder entfernt wird):Für eine vollständig zufällige Version (50/50 Entfernen / Ersetzen, einheitlich zufällig druckbares ASCII und eine einheitlich zufällige Zeichenposition in jedem Block) habe ich 30 Bytes (wahrscheinlich nicht optimal):
Dadurch wird jeder verbleibende Block um einen zufälligen Betrag gedreht, das letzte Zeichen entfernt und dann ein zufälliger der ersten beiden Links aufgerufen, von denen einer leer ist und der andere mit einem zufällig druckbaren ASCII-Zeichen verknüpft ist. es dreht dann den Block wieder nach rechts.
quelle
Python3,
188186184114 ZeichenScheint zu lang. Könnte wahrscheinlich mit einem Lambda stark verkürzt werden.Anscheinend hat das OP die Auswahl des zufälligen Zeichens aus einer Liste von zwei Zeichen erlaubt, und der Index des zu ersetzenden Zeichens kann eine Konstante sein. Nach den Änderungen hätte meine Antwort genauso ausgesehen wie die Übermittlung von @FlipTacks Python. Dies ist also das Formular, bei dem ich bleibe.
@FlipTack hat 5 Bytes gespeichert!
quelle
Clojure,
135139 BytesEdit: Passwort zu verwenden ,
partition-all
stattpartition
.Ungolfed:
Mann, diese Funktionsnamen sind lang ... Wie auch immer, es teilt die Eingabe in Partitionen von 10 Zeichen auf, teilt sie an einem zufälligen Punkt in zwei Hälften auf, fügt zufällig eine leere Zeichenfolge oder ein zufälliges Zeichen zwischen ihnen ein und verwirft das erste Zeichen der 2. Hälfte.
quelle
Mathematica 133 Bytes (129 Zeichen)
76 Zeichen, um die Namen von 8 Funktionen zu schreiben: /
Verwenden Sie
⌊..⌋
anstelle vonFloor[]
5 Zeichen, 1 Byte.quelle
Python 3, 129 Bytes
Um einige Bytes zu sparen, habe ich anstelle des Zufallsmoduls von Python nur einige Modulo-Operationen an der ID der Zeichenfolge durchgeführt, die jedes Mal anders sein sollten. Zum Beispiel entscheidet das Programm, ob ein Zeichen entfernt oder ersetzt werden soll, basierend darauf, ob es gerade ist oder nicht
id(string)//10
(ich dividiere durch 10, da die letzte Ziffer immer gerade ist).quelle