Die Aufgabe
Ihre Aufgabe ist es, ein Programm oder eine Funktion zu erstellen, die bei einer Eingabe den eingegebenen Text in zufälligen Großbuchstaben ausgibt, während bereits großgeschriebene Buchstaben großgeschrieben bleiben.
Jede Kombination von Groß- und Kleinschreibung sollte möglich sein. Zum Beispiel, wenn der Eingang ist abc
, soll es eine Nicht-Null - Wahrscheinlichkeit eine der folgenden Kombinationen sein ausgibt: abc
, Abc
, aBc
, abC
, ABc
, AbC
, aBC
oder ABC
.
Eingang
Ihre Eingabe ist eine Zeichenfolge, die beispielsweise eine beliebige Anzahl druckbarer ASCII-Zeichen enthält Hello World
. Die Ausgänge für diesen Eingang umfassen HeLLo WoRlD
, HElLO WOrld
usw.
Wertung
Das ist Code-Golf, also gewinnt die kürzeste Antwort in jeder Sprache!
Japt , 6 Bytes
Online testen!
Erläuterung
quelle
Python 2 ,
6665 BytesProbieren Sie es online!
quelle
C
4746 BytesVielen Dank an @ l4m2 für das Speichern eines Bytes!
Probieren Sie es online!
Wäre 42 Bytes, wenn davon ausgegangen werden könnte, dass
{|}~
nicht in der Eingabe erscheint:Probieren Sie es online!
quelle
srand(1)
zu Beginn des Programms eine implizite Angabe, sodass die von zurückgegebene Wertereihenfolge bei jeder Ausführungrand()
dieselbe ist).f(char*s){for(;*s++-=(*s-'a'<26&rand())*32;);}
für einige Compiler (def.-funsigned-char
) arbeiten'a'
zu97u
funktioniert und erfordert nicht einmal die-funsigned-char
Flagge.'a'
(wassigned int
nichtunsigned char
) aus*s
(das istunsigned char
),*s
gefördert wird , umsigned int
stattunsigned int
, daher negative Werte sind möglich , und der Vergleich funktioniert nicht wie beabsichtigt.Gelee , 5 Bytes
Ein weiterer bytes den Staub dank Dylnan.
Probieren Sie es online!
Erläuterung
quelle
ŒṘ
öfter verwenden, um zu sehen, wie die Dinge unter der Haube dargestellt werdenPerl 5 , 23 Bytes
22 Byte Code + 1 für
-p
.Probieren Sie es online!
quelle
JavaScript (ES6), 56 Byte
Wenn keine einheitliche Zufälligkeit erforderlich ist, können wir 6 Bytes einsparen, indem wir die aktuelle Zeit als Quelle für die Zufälligkeit verwenden:
Dies neigt dazu, entweder in Großbuchstaben zu schreiben oder alle Buchstaben auf einmal in Ruhe zu lassen.
quelle
AbC
weil die Zeit nicht schnell ändern , soR , 66 Bytes
Probieren Sie es online!
Noch eine R- Antwort.
quelle
for
-loop zu versuchen ! Schön.Excel VBA,
747164 BytesDerRandomize
Aufruf verteuert immer die Zufallsausgabe in VBA :(Anonyme VBE-Direktfensterfunktion, die Eingaben aus dem Bereich
[A1]
und Ausgaben in das VBE-Direktfenster übernimmt . Erzeugt eineUCase
Ausgabe von durchschnittlich 50% d.quelle
Randomize:
und ÄndernRnd
mit[RAND()>.5]
. Oder ignoriere es einfach. :)[Rand()]
Aufruf nur pseudozufällig und hat eine Periodenlänge von ungefähr 10 ^ 13, was ihn funktional identisch mit dem unRandomize
d-Rnd
Aufruf macht. Tatsächlich verwenden die beiden denselben Startwert (den derRandomize
Aufruf mithilfe der Funktion festlegttimer
Ausgabe).Randomize
Anruf entfernen und stattdessen verwenden könnteRnd>.5
Kohle ,
87 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
quelle
Rubin, 40 Bytes
Lambda-Funktion, die eine Zeichenfolge nimmt. 1 Byte dank Arnauld gespeichert. 5 Bytes gespart dank Snack.
quelle
<1
statt speichern==1
?<s>
Tag " streichen" , z. B. " Ruby, <s> 46 </ s> 40 Bytes ". Natürlich ist es nicht erforderlich.APL + WIN, 37 Bytes
Fordert zur Eingabe auf dem Bildschirm auf, identifiziert Kleinbuchstaben und konvertiert sie nach dem Zufallsprinzip in Großbuchstaben.
quelle
R ,
8988 Bytesvon djhurio überrumpelt!
Probieren Sie es online!
Dieses Programm nimmt jedes Zeichen und wandelt es mit der Wahrscheinlichkeit 1/2 in Großbuchstaben um oder lässt es in Ruhe. Es ist möglich, diese Wahrscheinlichkeit zu optimieren, indem Sie mit verschiedenen Werten von
df
und spielen0
.rt
Zeichnet sich aus der t-Verteilung des Schülers, die den Median 0 mit einem beliebigen Freiheitsgrad hat (ich habe sie ausgewählt,1
da sie die kleinstmögliche Zahl ist).quelle
05AB1E ,
65 BytesVielen Dank, dass Sie Adnan für -1 Byte
Probieren Sie es online!
Erläuterung
Methode aus der Antwort von @ totallyhuman
quelle
ε„luΩ.V
war mein versuch, nette!Ruby, 39 Bytes
->s{s.gsub(/./){[$&,$&.upcase].sample}}
Weitgehend inspiriert von der Antwort des Anzeigenamens . (Ich konnte keinen Kommentar abgeben , um diese One-Byte-weniger-Version wegen mangelnder Reputation vorzuschlagen. Entschuldigung, Anzeigename. )
quelle
Schnelle 4, 86 Bytes
quelle
Java 8, 46 Bytes
Dieses Lambda ist von
IntStream
bisIntStream
(Ströme von Codepunkten).Probieren Sie es online
Kapitalisierungsverteilung
Ob ein Brief groß geschrieben werden sollte, war die durchaus vernünftige Bedingung
Math.random()<.5
, die etwa zur Hälfte erfüllt war. Bei dem aktuellen Zustand vonMath.random()>0
(der ein Byte spart) erfolgt die Großschreibung praktisch jedes Mal, was ein Testprogramm irgendwie sinnlos macht. Aber es erfüllt die Zufallsanforderung.Danksagung
quelle
z
. Ich könnte es aber mit einer Qualifikation einwerfen.Funky , 55 Bytes
Probieren Sie es online!
Dank optionaler Kommas ist es
0s.upper
in der Tabellendefinition ein Byte kürzer , was bedeutet, dass dermath.random
Benutzer nach dem Zufallsprinzip entweder1
oder auswählt2
als nachmath.random(0,1)
dem Zufallsprinzip und nicht das hat0
.quelle
R ,
60 59 58 57 5663 BytesProbieren Sie es online!
Unterschiedlicher Ansatz zu den beiden anderen R-Antworten hier und hier . Verbessert und behoben dank Giuseppe!
quelle
90
wie[
, aber diese Korrekturen für sieben Bytes , die noch Golfier als Antwort des djhurio istOuroboros , 25 Bytes
Probieren Sie es hier aus
Das einzig ausgefallene Teil ist der Kontrollfluss
.b*)
. Lassen Sie uns zuerst über den Rest sprechen.Wir kehren dann zum Zeilenanfang zurück. Der Kontrollfluss beinhaltet das Ändern der Position am Ende der Linie. Wenn es nach links von der IP verschoben wird, wird die Ausführung abgebrochen. Somit:
Wenn der Zeichencode positiv ist,
)
ist dies ein No-Op, da das Ende der Zeile so weit wie möglich rechts liegt. Aber wenn alle Zeichen gelesen wurden,i
gibt-1
. Dann verschieben wir das Ende der Codezeichen-11
nach rechts, dh 11 Zeichen nach links. Es dauert einige Iterationen, aber irgendwann ist die IP hinter dem Ende des Codes und das Programm wird angehalten.quelle
MATL ,
1211 BytesProbieren Sie es online!
1 Byte dank @LuisMendo gespeichert
quelle
Brachylog , 5 Bytes
Probieren Sie es online!
Erläuterung
quelle
Alice ,
17-15BytesDanke an Leo für das Speichern von 2 Bytes.
Probieren Sie es online!
Erläuterung
Dies ist der übliche Rahmen für weitgehend lineare Programme, die vollständig im Ordinalmodus arbeiten.
Ich habe zuerst versucht, dies vollständig im Kardinal-Modus zu tun, aber um festzustellen, ob es sich bei einem Buchstaben nur um einen Zeichencode handelt, werden wahrscheinlich mehr Bytes benötigt.
quelle
Wolfram Language (Mathematica) ,
524944 BytesProbieren Sie es online!
Verwendet die Operatorform
StringReplace
: Bereitstellen einer Regel (oder einer Liste von Regeln), aber keine Zeichenfolge gibt eine Funktion an, die diese Regel auf jede Zeichenfolge anwendet, die Sie als Eingabe angeben.Wir könnten es viel besser machen (
RandomChoice@{#,Capitalize@#}&/@#&
ist 34 Bytes), wenn wir uns dazu entschließen, eine Liste von Zeichen als Eingabe zu nehmen (und als Ausgabe zu erzeugen), von denen die Leute manchmal behaupten, dass sie in Mathematica in Ordnung ist, weil es die einzige Art von Zeichenkette in anderen Sprachen gibt. Aber das macht keinen Spaß.-5 Bytes dank M. Stern
quelle
Capitalize
Random
ist veraltet könnten Sie weitere vier Bytes speichern , indem Sie Ihre eigene ImplementierungRandomChoice
:StringReplace[c_/;Random[]<.5:>Capitalize@c]
,Random
zur Arbeit zu kommen, aber ich habe das vergessen,/;
also habe ich versucht, es in eineIf
Erklärung zu schreiben . Vielen Dank!Pyth,
1076 Bytes3 Bytes dank ovs und 1 dank Steven H. gespart
Probieren Sie es online aus
Erläuterung
quelle
r1d
=rd1
, so dass Sie implizit ein weiteres Byte aus Golf eingeben können.PHP,
6353 BytesEs ist gelungen, den Code um 10 Bytes zu reduzieren, indem (teilweise) Titus 'Vorschlag gefolgt wurde.
quelle
$a
. Versuchen Sie eswhile(~$a=$argn[$i++])
stattforeach
(als Pipe ausführen).PowerShell ,
5756 BytesProbieren Sie es online!
-1 Byte dank Briantist
Nimmt Eingaben als Zeichenfolge an, wandelt das
$args
Array explizit in eine Zeichenfolge um,char
wandelt es als -array um und führt die Zeichen dann durch eine Schleife. Bei jeder Iteration geben wir das Zeichen 50-50 entweder so aus, wie es ist,$_
oder konvertieren es in Großbuchstaben"$_".ToUpper()
(das ist der("$_"|% *per)
Müll). Das wird gewählt, indem man eineRandom
ganze Zahl erhält und sie modifiziert2
.Diese Zeichen verbleiben in der Pipeline und werden dann
-join
zu einer einzelnen Zeichenfolge zusammengefasst, die in der Pipeline verbleibt und deren Ausgabe implizit erfolgt.quelle
"$_".ToUpper()
,("$_"|% *per)
Julia , 35 Bytes
Probieren Sie es online!
Als Mensch noch recht einfach zu lesen. In Julia rand (A) gibt A ein zufälliges Element zurück.
quelle
Rebol , 61 Bytes
Prüfung:
quelle
Gelee , 16 Bytes
Probieren Sie es online!
Erläuterung
Ich konnte das nicht in einer einzigen Zeile zum Laufen bringen. Ich weiß auch nicht warum, aber
2ḶXø³L¤Ð¡
gibt die Liste[None,1,0,..,1]
mit0
s und1
s zufällig ausgewählt. DasNone
ist der Grund für denḊ
im ersten Link.quelle