Herausforderung
Führen Sie für jedes Zeichen der Zeichenfolge mit Ausnahme des letzten die folgenden Schritte aus:
Aktuelles Zeichen ausgeben.
Anschließend wird eine zufällige Anzahl von Malen zwischen 1 und 5 (einschließlich) aus der folgenden Liste ausgegeben:
- Der aktuelle Charakter
- Das nächste Zeichen der Zeichenfolge
- Die Switchcase-Version des Charakters, in dem Sie sich gerade befinden
- Die Switchcase-Version des nächsten Zeichens der Zeichenfolge.
Testfälle
String
-> SSSTSStrTrIiinIIngn
, . , . , . Hello world!
-> ,,, .. , ,, .... , , .. .. . HHH HHEeelLlLllooO wwOworOOrrrRllDd!!D
Programming Puzzles and Code Golf
-> PrPPrRrOooooogggRgGraAraaaMMMmmmimMIiininGGgG PPPPuZzZZzZzzZzllLLEEeEsEsssS a aANnNddD C COCoooOOdeDe E GGGoOllFFf
Anmerkungen
- Sie müssen die Switchcase-Version eines Zeichens nur anwenden, wenn das Zeichen Teil des Alphabets ist (AZ und az).
- Ihre Zufallsfunktion muss nicht einheitlich sein, muss jedoch die Möglichkeit haben, ein Element in der angegebenen Liste zurückzugeben.
- Sie dürfen jedes Standard-E / A-Format verwenden.
- Sie können davon ausgehen, dass die Länge der Eingabe größer oder gleich zwei ist.
- Sie können davon ausgehen, dass die Eingabe nur aus ASCII-Zeichen besteht.
- Der Titel ist kein Testfall (es ist unbeabsichtigt, wenn es sich um einen gültigen Testfall handelt).
- Switchcase bedeutet, das Zeichen in Kleinbuchstaben umzuwandeln, wenn es sich um Großbuchstaben handelt, und in Großbuchstaben umzuwandeln, wenn es sich um Kleinbuchstaben handelt.
String
produziertSSSTSStrTrIiinIIngn
[S]SSTSS [t]rT, [r]I, [i]inII, [n]gn
wo die Zeichen zwischen den Blöcken die ersten Aufzählungspunkte sind (" Aktuelles Zeichen ausgeben "), und die anderen Zeichen sind 1-5 mal zufällig eine der vier Auswahlmöglichkeiten dafür Charakter. Aber ich stimme zu, einige explizitere Erklärungen wären angebracht. Abgesehen vom Testfall war es nicht besonders klar, dass wir 1-5 Mal eine zufällige Auswahl treffen müssen. Anstatt eine zufällige Auswahl zu treffen, wird diese 1-5 Mal wiederholt (wie es die Gaia-Antwort derzeit tut).Antworten:
Gaia , 25 Bytes
Probieren Sie es online!
Vielen Dank an Kevin Cruijssen für den Hinweis auf 2 Bugs!
Beachten Sie, dass dies so
4ṛ
ist, weilṛ
es für eine Ganzzahlz
wie python's implementiert istrandom.randint(1,z+1)
, die eine GanzzahlN
wie folgt zurückgibt1<=N<=z+1
.quelle
SSSTSStrTrIiinIIngn
([SSSTSS, trT, rI, iinII, ngn]
) scheint dies widerzuspiegeln, und derzeit ist keine Ausgabe in Ihrem Programm möglich (glaube ich).5ṛ
kann6
aus irgendeinem Grund führen Versuchen Sie es online ? PS: Gibt es in Gaia nicht eine Ganzzahl für die Ranging-Liste oder eine Ranging-for-Schleife?for
, aber ich bin mir ziemlich sicher, dass esₓ
das ist, was nicht einmal auf der Wiki-Seite dokumentiert ist.APL (Dzaima / APL) , 23 Byte
Anonyme implizite Präfixfunktion.
Probieren Sie es online!
2(
…)/
Zwischen jedem Zeichenpaar die folgende implizite Infixfunktion anwenden:-
der Schaltschrankbau⍤
von,
der Verkettung des Paares,,
stellen Sie dem die Verkettung des Paares voran{
…}⊇
Wähle die folgenden Elemente aus:?5
Zufallszahl im Bereich 1… 54⍴⍨
so viele viere?
Zufallsindizes für diese∊
ϵ nlist (Abflachen)quelle
Perl 6 , 60 Bytes
Probieren Sie es online!
Das Klein- / Großschreibungsteil ist irgendwie nervig.
quelle
$/
und$0
zusammen zu verbinden und.lc
auf diese Zeichenfolge anzuwenden und dann eine Kopie dieser Zeichenfolge zu erstellen und zu verwenden.uc
und diese beiden zusammen zu verbinden? Nicht sicher , ob das überhaupt möglich, oder kürzer als die aktuellen$/.lc,$/.uc,$0.lc,$0.uc
, aber es würde bedeuten , die Sie verwenden würden$/
,$0
,.lc
, und.uc
jeweils einmal.(.lc~.uc for $0~$/).comb
ist länger. Perl 6 möchte wirklich Zeichenfolgen und Listen unterscheiden, also"abc"[0] eq "abc"
(es gibt vor, eine Liste mit einzelnen Elementen zu sein).{.lc,|.uc}($/,|$0)
für -5 Bytes, und verwenden Sie einfach die Liste der Übereinstimmungen{.lc,|.uc}(@$/)
für -8 Bytes. tio.run/…Gelee , 12 Bytes
Probieren Sie es online!
quelle
Bash , 121 Bytes
-20 Bytes dank Nahuel
-9 Bytes dank Roblogic
Probieren Sie es online!
Ursprüngliche Antwort
Bash , 150 Bytes
Ich habe nur sehr wenig Golf gespielt und versucht, meinen Bash zu verbessern. Kommentare sind daher willkommen.
Probieren Sie es online!
Code ist eine einfache Schleife durch Zeichen, die das aktuelle
c
und das nächsten
Zeichen setzt, dann ein Array der 4 Möglichkeiten erstellt und eines davon wiederholt, sodass es genau 5 gibt. Als Nächstes mischen wir dieses Array und wählen dann n Elemente aus, wobei n selbst zufällig ist 1 und 5.quelle
printf %s "$c"
do
unddone
kann mit undokumentiert{
und ersetzt werden}
Python 2 , 107 Bytes
Probieren Sie es online!
quelle
05AB1E ,
1817 BytesInspiriert von @ Giuseppes Gaia-Antwort .
-1 Byte dank @Shaggy .
Versuchen Sie es 10 Mal online oder überprüfen Sie alle Testfälle 10 Mal .
Erläuterung:
quelle
INè
etwas retten, indem Sie das erste Zeichen von drückeny
?¨vNUy5LΩFy¹X>è«D.š«Ω?
t
,T
oders
für die Eingabe"String"
in Ihrem Programm, während es soll immer mit dem beginnenS
.Kohle , 27 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Durchlaufen Sie alle Indizes der Eingabezeichenfolge.
Schleifen Sie mit Ausnahme des ersten Index über eine Zufallszahl von 1 bis einschließlich 5 ...
... extrahieren Sie die vorherigen und nächsten Zeichen aus der Zeichenfolge, nehmen Sie die Groß- und Kleinschreibung und wählen Sie ein zufälliges Zeichen aus den vier.
Gibt das Zeichen am aktuellen Index aus.
quelle
Perl 5 (
-p
), 77 BytesTIO
quelle
$&
anstelle von$1
undchop
+-l
anstelle vons/.$//
Japt
-P
, 14 BytesVersuch es
quelle
Python 3 , 167 Bytes
Probieren Sie es online!
quelle
Jelly , 14 Bytes
Probieren Sie es online!
Erläuterung
quelle
C (GCC)
175162 Bytes-12 Bytes von LambdaBeta
Probieren Sie es online aus
quelle
0
in der ersten Zeile brauchst .S
als Parameter verwenden und Ihre Variablen zur Argumentliste hinzufügen: Probieren Sie es online aus!0
, was es nicht wert , machte es die haben#define
mehrPowerShell ,
1541051039587 Byte-67 Bytes dank mazzy, die nicht gestoppt werden können
Probieren Sie es online!
Keine fantastische Methode, aber es funktioniert.Jetzt ist es ziemlich gut. Übernimmt die Eingabe per Splattingquelle
Scala 2.12.8, 214 Bytes
Golf Version:
Golfen mit Zeilenumbrüchen und Einrückungen:
Ungolfed:
quelle
a :: b :: Nil
ina::b::Nil
? Das Gleiche gilt füra :+
,a:+()
odera.:+()
arbeiten könntea::b::Nil
verursacht einen Kompilierungsfehler.+:
Ist eine Methode in der Liste definiert, sodass Platz gespart werden kann, wenn die äußeren Parens entfernt werden?Perl 5
-n
, 61 BytesProbieren Sie es online!
quelle
C # (Visual C # Interactive Compiler) ,
236213209 ByteProbieren Sie es online!
quelle
char b=a[0]
->var b=a[0]
zusätzlicher Platz in der Deklaration derd
for-SchleifeT-SQL-Abfrage, 286 Byte
Probieren Sie es online aus, leider zeigt die Online-Version im Gegensatz zu MS SQL Server Management Studio immer das gleiche Ergebnis für den gleichen Varchar
quelle
C # (Visual C # Interactive Compiler) , 156 Byte
Probieren Sie es online!
quelle
Japt
-P
,4316 BytesJetzt viel gekürzt!
Versuch es
quelle
ä
die Beschreibung besagt, dass es drei Argumente gibt, wobei das letzte istx+y
. Aber wie Sie hier sehen können , gibt es nur 1 zurück. Ist das ein Fehler?C (GCC) ,
110109 BytesProbieren Sie es online!
-1 dank ceilingcat
Die Anzahl der gedruckten Zeichen (pro eingegebenem Zeichen) ist nicht einheitlich zufällig:
quelle
Zsh,
113107 BytesMit viel Hilfe von
man zshexpn
undman zshparam
. Probieren Sie es online!quelle