Die Katze hat Ihre Eingaben wieder gefressen!

30

Erstellen Sie ein Katzenprogramm, auch bekannt als ein Programm, das Eingaben aufnimmt und druckt.

... Außer, das Programm entfernt zufällig Zeichen aus Ihrer Eingabe und druckt diese stattdessen aus.

Jedes Zeichen in der Eingabe sollte im Allgemeinen die gleichen Quoten haben, die mit dem Programm entfernt werden können. Da dies jedoch schwierig ist, können die Quoten für jedes Zeichen um höchstens 10% variieren.

Ihr Programm sollte die Eingabe übernehmen, dann zufällig Zeichen aus der Eingabe entfernen und diese Version erneut drucken. (Sie können mit abschließenden Zeilenumbrüchen oder anderen Zeichen drucken, falls Ihre Sprache Zeilenumbrüche drucken muss.)

Wenn die Eingabe war BOOOWL, sollte sie nicht alle Os mit der gleichen Chance entfernen: Jedes Zeichen (nicht eindeutig) sollte berücksichtigt werden, sodass anstelle einer 1/5-Chance für jedes O (zum Beispiel) eine 1 für jedes O angegeben werden sollte / 5 Chance, so, statt es eine 1/5 Chance, BWLgibt es eine 1/5 Chance sein sollte BOWL, BOOWL.

Die Eingabe ist auf STDIN oder das nächstgelegene Äquivalent beschränkt.

Jeder Charakter muss eine Chance von mindestens 10% und höchstens 30% haben, um entfernt zu werden.

Die Gewinnchancen jedes Charakters sollten individuell berechnet werden.

Sie können jede Komponente Ihrer Sprache verwenden, die zufällige Aktionen unterstützt, sei es Funktionen oder etwas anderes.

Die Ausgabe muss über STDOUT oder das nächstgelegene Äquivalent erfolgen. Wenn Ihre Sprache über STDOUT verfügt, geben Sie diese nicht auf andere Weise aus. Wenn Ihre Sprache keine Zeichenfolgen als Text ausgeben kann, verwenden Sie das nächste Äquivalent (die Ausgabe des Zeichenarrays in C ist hier OK).

Das ist Code Golf. Kürzeste Sendung gewinnt.

Andrew
quelle
4
Sollte die Chance, dass ein bestimmter Charakter entfernt wird, immer zwischen 10% und 30% liegen? Oder ist das nur zum Zweck des Beispiels?
11.
2
was meinst du mit "sets of one character" Wenn die Eingabe auf einmal erfolgt, werden BOWL OF SOUPmöglicherweise alle Einträge auf Oeinmal gelöscht.
Roblogic
1
Bei allen bisherigen Antworten wird eine feste Wahrscheinlichkeit von 20% für das Entfernen eines Zeichens verwendet. Ich bin mir nicht sicher, ob alle Charaktere die gleichen Chancen haben sollen.
12.
3
Output must be through STDOUT, as a text. Do not output a character array.<- Ich habe eine Sprache, mit der Sie ein Zeichenarray ausgeben können (es wird vor der Ausgabe abgeflacht). Ist das nicht erlaubt? Wie wäre es mit Sprachen wie C, bei denen ein String im Grunde ein Zeichenarray ist?
Ismael Miguel
1
Verwenden Sie das nächstgelegene Äquivalent. Die Zeichenfolgen von C sind in Ordnung, da sie dem Text am nächsten kommen.
Andrew

Antworten:

10

Japt -f , 2 Bytes

Das -fFlag "führt das Programm für jedes Element in der ersten Eingabe aus und gibt ein Array der Elemente aus, die einen Wahrheitswert zurückgeben." Gibt eine Zufallszahl zwischen 0 (einschließlich) und 5 (ausschließlich) zurück. Wie JavaScript ist 0 in Japt falsch.

Versuch es

Verkörperung der Ignoranz
quelle
2
Ich gehe in der Zeit zurück, erstelle eine Sprache, in der o diese Herausforderung ist, und dann gehe ich zurück und sende meine Antwort, oder mache vielleicht die leere Zeichenfolge, die: p
Andrew
Sollen Kommandozeilen-Flags nicht für bytecount gelten?
Daniel Vestøl
1
@ DanielVestøl Klicken Sie auf -f, im Titel.
Ismael Miguel
1
@ Andrew Mit einer
Jo King
1
war Witz , aber ok
Andrew
8

Python 3 , 63 Bytes

from random import*
for c in input():print(end=c[random()<.2:])

Probieren Sie es online!

Python 2 , 67 65 Bytes

from random import*
print''.join(c for c in input()if.8>random())

Probieren Sie es online!

Jeder Charakter hat eine Chance von 20%, fallengelassen zu werden.

Anderer Ansatz, gleiche Länge:

from random import*
print''.join(c[random()<.2:]for c in input())

Probieren Sie es online!

movatica
quelle
63 Bytes in Python 2 mit einer Funktion
attinat
In den Regeln wird ausdrücklich festgelegt, dass ein vollständiges Programm geschrieben werden soll:Create a cat program, a.k.a a program that takes an input and prints it.
movatica
Dies liest nur die erste Eingabezeile.
AKX
Das Problem gibt nicht an, dass es mehrere Zeilen lesen musste.
Movatica
8

Kohle , 4 Bytes

ΦS‽⁵

Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:

 S      Input a string
Φ       Filter where nonzero
  ‽⁵    Random number 0..4
        Implicitly print

Sie können eine beliebige Zahl von 4bis verwenden 10, um die Chancen von 25%bis zu 10%erhalten.

Neil
quelle
7

Befunge-98 (PyFunge) , 11 Bytes

>#@~3j4???,

Probieren Sie es online!

Jeder Charakter hat eine Chance von 25%, entfernt zu werden. Diese Entscheidung wird nach den drei ?Anweisungen getroffen.

?Setzt den Programmzähler mit gleicher Wahrscheinlichkeit auf eine der vier Richtungen. In diesem Fall wird nach oben und unten wieder dieselbe Anweisung ausgeführt, sodass wir diese als Optionen ignorieren können.

Es gibt zwei Wege aus dem Wald von ?s heraus: nach rechts (Ausgabe) und nach links (keine Ausgabe). Diese Situation ist symmetrisch. Wenn Sie also von der Mitte ausgehen ?, besteht eine Chance für die Ausgabe. Die Ausgabewahrscheinlichkeit von rechts ist . Daher springen wir nach dem Lesen eines Zeichens ganz nach rechts , um zu bestimmen, ob eine Ausgabe erfolgen soll oder nicht.p2=1/2p 3 = 1 / 2 * 1 + 1 / 2 * p 2 = 3 / 4?p3=1/21+1/2p2=3/4?

negative sieben
quelle
5

Oktave , 23 Bytes

Erzeugt ein Array mit der gleichen Größe wie die Eingabe (Strings in Octave sind Zeichen-Arrays), prüft jede der Zufallszahlen, ob sie größer ist als 0.2und extrahiert dann die Zeichen an den entsprechenden Positionen durch logische Indizierung.

@(s)s(rand(size(s))>.2)

Probieren Sie es online!

fehlerhaft
quelle
5

Gelee , 9 5 Bytes

5X’µƇ

Probieren Sie es online!

Eine Monade, die eine Jelly-Zeichenfolge als Argument verwendet und die verarbeitete Jelly-Zeichenfolge zurückgibt. Bei Verwendung als vollständiges Programm wird die Ausgabe implizit gedruckt. Jeder Charakter hat eine Chance von 20%, entfernt zu werden.

Erläuterung

   µƇ | Filter using the following as a monad for each character:
5X    | - Random number between 1 and 5
  ’   | - Decreased by 1
Nick Kennedy
quelle
5

Japt , 3 Bytes

Jeder Charakter hat eine 1: 5-Chance, entfernt zu werden. Das 5kann zwischen beliebig geändert werden 4und 9, einschließlich, oder Afür 10die Chancen zu ändern.

Æ5ö

Versuch es

Æ5ö     :Implicit input of string
Æ       :Filter by
 5ö     :  Random integer in the range [0,5), with 0 being falsey
Zottelig
quelle
5

05AB1E , 5 4 Bytes

ʒ₄Ω≠

-1 Byte dank @Grimy .

Probieren Sie es online aus oder führen Sie das gleiche Programm 10 Mal aus .

Jeder Charakter hat eine 25% ige Änderung des Abwurfs.

Erläuterung:

ʒ     # Filter the characters of the (implicit) input-string by:
     #  Push 1000
  Ω   #  Pop and push a random digit from it
     #  And check that it's NOT 1 (!=1)
      # (after which the result is output implicitly)

könnte auch sein _( ==0).

Kevin Cruijssen
quelle
2
5Lkann für -1 sein (ändert die Chance von 20% auf 25%, was immer noch akzeptabel ist).
Grimmy
@ Grimy Schön, danke! :)
Kevin Cruijssen
4

MATL , 9 Bytes

t&n&r.2>)

Exaplanation:

t         implicitly take input and duplicate it
 &n       compute the size of the input and...
   &r     generate a random array of that size
     .2>  check which entries of that array are greater than 0.2
        ) and use the result using logical indices to extract certain characters of the input

Probieren Sie es online!

fehlerhaft
quelle
4

Pyth , 8 5 Bytes

sfO4Q

Probieren Sie es online!

sfO4Q   Implicit: Q=eval(input())
 f  Q   Filter characters of Q where the following is truthy:
  O4      Random number in the range [0-4)
          Any non-zero value is truthy, so this will drop characters 25% of the time
s       Concatenate into string, implicit print

Vorherige Version, 8 Bytes:

s*Vm!!O4

Probieren Sie es online!

s*Vm!!O4QQ   Implicit: Q=eval(input())
             Trailing QQ inferred
   m    Q    Map each character in Q using:
      O4       Choose random integer in [0-4)
    !!         Logical NOT twice - maps 0 to 0, anything else to 1
             The result is a list of 0s and 1s, with 0 having 25% chance to appear
 *V      Q   Vectorised multiplication of the above with Q
s            Concatenate into string, implicit print
Sok
quelle
Qwird einen Fehler auslösen, wenn die Eingabe nicht python-artig ist. Fehler zum Beispiel von [1oder a/b. Q, wund zfunktionieren nur für einzeilige Eingaben, die beste Option wäre also wahrscheinlichj.z
ar4093
4

Cubix , 20 Bytes

u$w\A|UDw@?;...>o._U

Probieren Sie es online!

Länger als ich gehofft hatte, da ich eine Reihe von No-Ops hatte, die ich anscheinend nicht loswerden kann. Die Chance, einen Charakter fallen zu lassen, beträgt 25%. Ich gehe davon aus, dass das in Ordnung ist.

    u $
    w \
A | U D w @ ? ;
. . . > o . _ U
    . .
    . .

Schau es dir an

Kurze Erklärung:

  • A|A Dies initialisiert den Stack, Input all, Reflect back, Input all (nur ein EOI -1)
  • ;? Pop-to-of-Stack, Test auf EOI (-1).
  • _?@ wenn negativ, reflektiere zurück in den Test und beende auf Halt
  • $Dspringe mit dem \in die zufällige richtung setzer.
    • vom richtungsgeber führen 3 richtungen zum ofor ausgang dann zurück in die schleife, man verfehlt den oin seinem weg und geht direkt in die schleife.
MickyT
quelle
3

APL (dzaima / APL) , 10 9 Byte SBCS

Anonyme implizite Präfixfunktion. Jeder Charakter hat eine Chance von genau 20%, entfernt zu werden.

⊢⌿⍨4≥∘?5¨

Probieren Sie es online!

 Null für jedes Zeichen

? zufälliger ganzzahliger Bereich 1–5 für jedes Zeichen

4≥ Boolesche Maske für Ganzzahlen kleiner oder gleich 4

⊢⌿⍨ Filtern Sie das Argument mit dieser Maske

Adam
quelle
3

Retina , 15 Bytes

/./_?(`.







Probieren Sie es online! Erläuterung:

/./_

Verarbeite jeden Charakter einzeln.

?(`

Führen Sie eine Auswechslung nach dem Zufallsprinzip durch. Die erste Ersetzung löscht das Zeichen, während die anderen drei es unverändert lassen, wodurch die 25%Möglichkeit besteht, das Zeichen zu löschen. Dies kann nach Bedarf verringert werden, indem zusätzliche Zeilenumbrüche angehängt werden.

Neil
quelle
3

R , 32 23 Bytes

function(x)x[rt(x,3)<1]

Probieren Sie es online!

Eine Funktion, die einen Zeichenvektor als Eingabe verwendet und einen verarbeiteten Zeichenvektor zurückgibt. Jeder Charakter hat eine Chance von 20%, entfernt zu werden.

Vielen Dank an @Roland und @Giueseppe für die Unterstützung beim Speichern von 7 Bytes und an @JDL für weitere 2!

Nick Kennedy
quelle
1
function(x)x[!rbinom(x,1,0.2)]
Roland
entlang der gleichen Linie wie @Roland, function(x)x[rf(x,1,1)>1]; df(1,1,1)geht es darum, 0.16was den Trick macht.
Giuseppe
oder rt(x,3)>1(Chance von ca. 20%)
JDL
2
@JDL ist es <1, aber danke! Weitere 2 gerettet.
Nick Kennedy
3

T-SQL 2012, 83 Byte

Durchlaufen der Eingabe von rechts nach links, wobei 0 oder 1 Zeichen entfernt werden.

25% Chance, dass jeder Charakter entfernt wird.

DECLARE @i varchar(max)='The cat ate my homework'

DECLARE @ int=len(@i)WHILE @>0SELECT
@i=stuff(@i,@,str(rand()*2)/2,''),@-=1PRINT @i

Erläuterung:

rand()*2Gibt ein float zurück, das im stuffBefehl nicht verwendet werden kann .

Das strwandelt dies in ein Varchar um, nachdem es auf die nächste ganze Zahl gerundet wurde. Das float wird in ein varchar konvertiert (was auch nicht als dritter Parameter erlaubt ist stuff).

Dieser Varchar hat eine 25% ige Chance, '2' zu sein, eine 50% ige Chance, '1' zu sein, und eine 25% ige Chance, '0' zu sein. Dividiert man durch 2, ergibt sich eine Wahrscheinlichkeit von 25%, dass das Ergebnis 1 ist. Diese Division wandelt das Zeichen varchar in eine Ganzzahl um.

Ganzzahl ist der erwartete dritte Parameter in stuffFunktion.

Probieren Sie es online aus

t-clausen.dk
quelle
Sehr schöner Trick mit STR, daran werde ich mich erinnern müssen. Ich bin mir nicht sicher, ob es fair ist, Ihren (ungezählten DECLARE) Code in Ihrem (gezählten) Code abzuziehen . Aber das zu ändern würde Sie nur 1 Byte kosten, da Sie das Extra SETmitDECLARE @ INT=len(@i)
BradC
@BradC Ich stimme zu, und ich werde versuchen, mich daran zu erinnern, in Zukunft nicht mehr huckepack zu nehmen
t-clausen.dk
2

J 10 Bytes

#~5>6?@$~#

Probieren Sie es online!

Ähnlich wie Adams APL-Antwort, obwohl ich sie tatsächlich geschrieben habe, bevor ich seine angeschaut habe.

  • 6.. $~ #Nehmen Sie die Länge der Eingabe #und formen Sie $~die Zahl 6 in eine so lange Liste.
  • ?@Behandle jede Sechs in dieser Liste als Würfel und wirf ?sie.
  • >5Ist der Würfel kleiner als 5 (mögliche Werte sind 0..5)? Verwenden Sie dieses boolesche Ergebnis, um eine Bitmaske zu erstellen.
  • #~ Filtern Sie die Eingabe mit dieser Maske.
Jona
quelle
2

Perl 5 -p , 18 Bytes

s/./.2<rand&&$&/ge

Probieren Sie es online!

Jeder Charakter hat eine Chance von 20%, fallengelassen zu werden.

Xcali
quelle
2

Javascript,  46   44  51 Bytes

i=>alert([...i].filter(c=>Math.random()>.2).join``)

+7 Byte aufgrund der zusätzlichen STDOUT-Anforderung

-2 Bytes danke an Birjolaxew


ursprüngliche Antwort: 44 Bytes ohne die STDOUT-Anforderung

i=>[...i].filter(c=>Math.random()>.2).join``
jonatjano
quelle
Da Sie den Namen der Funktion nicht verwenden, dürfen Sie nur die Funktion selbst bereitstellen . Durch das Entfernen werden f=Sie auf 44 Byte reduziert. Sie können auch als Array ein- / ausgeben, wodurch Sie einiges sparen sollten.
Birjolaxew
@ Birjolaxew Ich bin nicht sicher, aber wie ich es verstehe, die Frage die Verwendung von Char-Array zu verbieten, wenn die Sprache String hat
Jonatjano
Ja, Andrew hat die Frage nach meinem Kommentar mit zusätzlichen Anforderungen bearbeitet. Dies wird im Allgemeinen verpönt, weil es Antworten ungültig macht, die zuvor gültig waren (in diesem Fall ist es sogar fraglich, ob Ihre ursprüngliche Antwort der Anforderung "Ausgabe muss über STDOUT erfolgen" entspricht).
Birjolaxew
Was join``bedeutet Kann es nicht in der Spezifikation finden (weil ich nicht wirklich weiß, was es ist)
Nick Zoum
1
@nickzoum in es6 entsprichtjoin("") mdn revelent page
jonatjano
2

Scala , 51 46 30 Bytes

s=>s.flatMap(x=>if(math.random>.2)Some(x)else None)

Probieren Sie es online!

PS. Wie bei vielen anderen Lösungen liegt die Wahrscheinlichkeit für das Fallenlassen von Holzkohle bei 20%.

Aktualisieren:

-5 Bytes unter Verwendung von String anstelle von Option [String] in flatMap

s=>s.flatMap(x=>if(math.random>.2)x+""else "")

30 Bytes mit Filter

s=>s.filter(x=>math.random>.2)
Trockener Humor
quelle
1
Sie können 7 Bytes sparen, indem Sie scala.math.randomzu math.randomund 0.2zu wechseln .2. Netter Trick mit ^ so.
Kjetil S.
@KjetilS, danke. Ich habe auch Funktionsliterale anstelle von Funktionsdefinitionen als Lösung veröffentlicht. Es ist demnach akzeptabel: codegolf.stackexchange.com/questions/3885/…
Dr Y Wit
2

C # (Visual C # Interactive Compiler) , 71 Byte

var y=new Random();foreach(var k in ReadLine())if(y.Next(5)<4)Write(k);

Probieren Sie es online!

Verkörperung der Ignoranz
quelle
Ich denke, dass <1 zu viel isst. Möglicherweise stimmen <3 oder <4 mit den Parametern des Problems überein. Auf jeden Fall ändert dies nichts an der Länge des Codes.
Luca
Ich habe eine Weile nicht mehr in C # programmiert, aber warum ist das nicht new Random().Next(5)direkt möglich?
Kevin Cruijssen
1
@KevinCruijssen Da dann für jede Zahl derselbe Startwert verwendet wird, ist jede Zahl derselbe. Probieren Sie es einfach aus new Random().Next(5), alles, was Sie bekommen, ist der gesamte Input oder nichts.
Verkörperung der Ignoranz
1
Bei Verwendung von @KevinCruijssen new Random()ist der Standardstartwert Environment.TickCount, der jede Millisekunde erhöht. Wenn sie alle im gleichen Millisekunden-Tick erstellt wurden, haben sie alle den gleichen Startwert. Die Antwort verwendet nur eine einzelne Instanz von Random und aktualisiert beim Aufruf den internen Startwert. Bei jedem Aufruf von Next () wird ein anderer Ausgabewert erstellt. .Net Core verwendet jedoch ein Singleton-RNG, um den Startwert zu generieren, sodass dieses Problem nicht
auftritt
1
@BenjaminUrquhart Behoben, aber 26 Bytes hinzugefügt. Man kann auch argumentieren, dass nicht gesagt werden muss, dass Eingaben von STDIN, aber restricted to STDIN or closest equivalent, und Funktionsargumente möglicherweise das nächste Äquivalent sind, aber ich werde das nicht tun
Verkörperung der Ignoranz
2

PHP , 43 42 Bytes

for(;''<$l=$argn[$i++];rand()%5&&print$l);

Probieren Sie es online!

Jeder Charakter hat eine Chance von 20%, entfernt zu werden.

Night2
quelle
1

C (gcc) , 50 Bytes

Dieses Programm hat eine 20% ige Chance, einen Brief fallen zu lassen. Leider ist der Zufallszahlengenerator nicht gesetzt, sodass Sie bei jedem Lauf die gleiche Sequenz erhalten. Grundsätzlich besteht der einzige Trick darin, das eingegebene Zeichen zu invertieren, um die EOF-Schleife anzuhalten.

main(c){for(;c=~getchar();rand()%5&&putchar(~c));}

Probieren Sie es online!

C (GCC) , 64 59 Bytes

Danke an ceilingcat für die -5 Bytes.

Wenn Sie möchten, dass der RNG bei jedem Lauf ausgesät wird.

main(c){for(srand(&c);c=~getchar();rand()%5&&putchar(~c));}

Probieren Sie es online!

ErikF
quelle
Sie müssen nicht main()für Code Golf-Einreichungen verwenden, sondern können auch eine beliebige Funktion definieren, die das tut, was erforderlich ist. Du kannst also schreiben f(c){...}.
G. Sliepen
1

Lua , 69 68 Bytes

for c in io.lines(nil,1)do io.write(math.random()>.2 and c or '')end

Probieren Sie es online!

Ein bisschen unkompliziert, aber es scheint die kürzeste Version zu sein: Iterieren Sie über stdin char by char (mit io.lines... dieser Name ist irreführend), und geben Sie dann basierend auf einem Zufallswert entweder eine oder eine leere Zeichenfolge aus (z. B. nichts).

val sagt Reinstate Monica
quelle
1

Java

Nicht terminierend: 82 Bytes

v->{for(int i;;i=System.in.read(),System.out.print(Math.random()<.2?"":(char)i));}

Abschluss (TIO): 105 Byte

v->{var n=System.in;for(int i;n.available()>0;i=n.read(),System.out.print(Math.random()<.2?"":(char)i));}
Benjamin Urquhart
quelle
Ist der Umgang mit stdout wirklich notwendig? Bei anderen Antworten wird nur eine Funktion erstellt, die nur eine Zeichenfolge konvertiert. Scheint Java gegenüber unfair. Wenn diese C # -Lösung gültig ist, s->s.filter(c->Math.random()<.2)ist dies auch der Fall.
Holger
@ Holger Input is restricted to STDIN or closest equivalent.und Output must be through STDOUT or the closest equivalent. If your language does have STDOUT, do not output in any other way.Also nein, diese Antwort ist nicht gültig
Benjamin Urquhart
1

Zsh , 53 41 Bytes

-12 , dank GammaFunction

41 bytes: online ausprobieren!

Wandelt die Eingabe in ein Array von Zeichen um und versucht dann, jedes Element zu drucken c, es sei denn, es wird von der ((RANDOM%4))Auswertung zu false gefressen !

for c (${(s::)1})((RANDOM%4))&&echo $c\\c

53 Bytes: Probieren Sie es online!

Eine einfachere, aber ausführlichere Iteration über die Länge der Zeichenfolge.

for ((;i<$#1;i++)){((RANDOM%4>0))&&echo "${1[i]}\c";}
roblogic
quelle
1
Schlauer Umgang mit \c, daran hätte ich mich nicht erinnert! Es müssen noch einige Optimierungen vorgenommen werden ...
GammaFunction
Schöne, kluge Verwendung RANDOMund Array-Konvertierung
Roblogic
1

Zsh , 50 Bytes

for c (${(s::)"$(<&0)"})
((RANDOM%5))&&echo -nE $c

Probieren Sie es online!

Entspricht der Antwort von RobLogic, folgt jedoch den Eingabeanforderungen und funktioniert für Eingaben mit umgekehrten Schrägstrichen.

"$(<&0)"anstelle von "<&0"oder $(<&0)weil der erste nicht in Substitutionen funktioniert und der zweite Zeilenvorschub isst. Die -nEFlags sind erforderlich, um zu verhindern, dass Backslashes als Escape-Sequenzen analysiert werden, und um das Einfügen von Zeilenumbrüchen zu verhindern.

echo -nE

GammaFunktion
quelle
1

MathGolf , 5 Bytes

æƒ√∞*

Probieren Sie es online!

Erläuterung

æ       foreach character...
 ƒ      random float in range [0,1)
  √     take square root (making P(x < 0.5) = 0.25)
   ∞    pop a, push 2*a
    *   repeat character int(x) times

Jedes Zeichen wird je nach Zufallswert 0 oder 1 Mal wiederholt. Da der erwartete Wert nach der Verschiebung der Quadratwurzel liegt, besteht eine Wahrscheinlichkeit von 25%, dass jedes Zeichen entfernt wird.

Alternative 5-Byte

gÉ;4w

Filtern Sie die Zeichen nach einer Zufallszahl in [0, 4]. Aufgrund der Funktionsweise des Filters muss das tatsächliche Zeichen in der Filterschleife verworfen werden, wodurch 1 Byte hinzugefügt wird.

maxb
quelle
0

GFortran , 120 Bytes

Nicht schlecht, wenn wir die veraltete RAN()Funktion verwenden, die pseudozufällig ist, dh Sie erhalten jedes Mal die gleiche Sequenz. Die richtige Art, Zufallszahlen in GFortran zu generieren, ist mit CALL RANDOM_SEED()und CALL RANDOM_NUMBER(R)das sind viele Bytes!

character(99)S;read(*,'(A)')S;do i=1,len_trim(S)
if(ran(0)*5.gt.1)then;write(*,'(A)',advance="no")S(i:i)
endif;enddo;end

Probieren Sie es online!

roblogic
quelle
1
Pseudozufälligkeit ist zulässig, wenn dies der beste Weg ist, um zufällige Aktionen durchzuführen.
Andrew
0

Oracle SQL, 133 Byte

select listagg(decode(sign(dbms_random.value-0.2),1,substr(x,level,1)))within group(order by level)from t connect by level<=length(x)

Es wird davon ausgegangen, dass die Eingabedaten in einer Tabelle t (x) gespeichert sind, z

with t(x) as (select 'The cat ate my homework' from dual)
Trockener Humor
quelle