Sie erhalten eine Zeichenfolge, die nur Buchstaben des englischen Alphabets in Klein- und Großbuchstaben enthält (ASCII 65-90 und 97-122). Ihre Aufgabe ist es, die Fizz-Buzzified-Version des Strings auszugeben.
Wie lässt sich eine Zeichenfolge mit einem Fizz-Buzz-Effekt versehen?
Jeder Buchstabe mit einem geraden Index im englischen Alphabet (das Alphabet muss 1-indiziert
a->1,b->2,...,z->26
sein:) wird infizz
Kleinbuchstaben undFIZZ
in Großbuchstaben umgewandelt (f -> fizz, F -> FIZZ
).Jeder Buchstabe mit einem ungeraden Index im englischen Alphabet wird in
buzz
Kleinbuchstaben undBUZZ
in Großbuchstaben umgewandelt (e -> buzz, E -> BUZZ
).Ein Beispiel zur Veranschaulichung des Algorithmus anhand der Zeichenfolge
CodeGolf
(Leerzeichen zur Verdeutlichung hinzugefügt):"C o d e G o l f" -> "BUZZ buzz fizz buzz BUZZ buzz fizz fizz" ^ ^ ^ ^ ^ ^ ^ ^ 1 1 0 1 1 1 0 0 (1 is odd index, 0 is even index)
Wenn es für Ihre Sprache praktischer ist, können Sie auch einzelne Leerzeichen zwischen den Gruppen lassen (
fizz, buzz, FIZZ, BUZZ
). Daher kann ein Ergebnis wiefizzBUZZbuzzbuzz
auch als zurückgegeben werdenfizz BUZZ buzz buzz
. Andere Trennzeichen sind nicht zulässig.
Testfälle:
Eingabe -> Ausgabe "egg" -> "buzzbuzzbuzz" "CodeGolf" -> "BUZZbuzzfizzbuzzBUZZbuzzfizzfizz" "Zurücksetzen" -> "FIZZbuzzbuzzbuzzfizz" "ATOM" -> "BUZZFIZZBUZZBUZZ" "yOuArEgReAt" -> "buzzBUZZbuzzBUZZfizzBUZZbuzzFIZZbuzzBUZZfizz"
Jede Standardmethode für E / A kann verwendet werden.
Es gelten Standardlücken .
Sie dürfen nur Eingaben in der systemeigenen Zeichenfolge Ihrer Sprache vornehmen. Gleiches gilt für die Ausgabe.
Sie können davon ausgehen, dass die Eingabe nicht leer sein wird.
Kürzester Code in Bytes in jeder Sprache gewinnt. Viel Glück und Fizz-Buzz!
Antworten:
Holzkohle ,
2624 BytesProbieren Sie es online! Ursprünglich inspiriert von @CarlosAlejo. Bearbeiten: Speichert 2 Bytes, indem die Buchstaben von Fizz / Buzz durchlaufen werden, anstatt sie einem temporären zuzuweisen. Erläuterung:
quelle
Ordinal(i)
die Position desi
Zeichens in seiner ursprünglichen Zeichenfolge zurückgegeben, aber es gibt seinen ASCII-Wert (Zeichencode) zurück. Sehr clevere Lösung, ich muss noch viel an meinen Kohlefähigkeiten verbessern!C #, 92 Bytes
quelle
x%2
direkt als Boolean verwenden lassen, ohne das<1
Teil zu benötigen ? In diesem Fall können Sie möglicherweise einige Bytes auf diese Weise speichern.Python 3 ,
7369 Bytes4 Bytes dank ovs.
Probieren Sie es online!
quelle
C (gcc) , 75 Bytes
Probieren Sie es online!
quelle
Java (OpenJDK 8) ,
105100949190 BytesProbieren Sie es online!
Viel Golf, sehr Bytes, also Java!
Sehr golfen von @KevinCruijssen um 9 Bytes!
quelle
s->s.join("",s.chars().mapToObj(i->i>90?i%2<1?"fizz":"buzz":i%2<1?"FIZZ":"BUZZ").toArray(String[]::new));
Leider ist es 105 Zeichen lang :( Wenn sie nur diejoin
direkt auf dem Stream hinzufügen oder integrieren könntentoList
, wäre eigentlich alles sinnvoll gut.getBytes()
von werdentoCharArray()
zusätzlich 3 Byte kürzer:s->{for(int i:s.getBytes())System.out.print(i>90?i%2<1?"fizz":"buzz":i%2<1?"FIZZ":"BUZZ");}
toCharArray()
angetBytes()
. :)JavaScript (ES6),
79.77ByteTestfälle
Code-Snippet anzeigen
quelle
C # 97 Bytes
quelle
c%2>1?c>96?"fizz":"buzz":...
Jelly , 21 Bytes
Probieren Sie es online!
quelle
Pyth ,
2321 BytesTestsuite .
quelle
Englisch ,
820632610 BytesHerr Xcoder schlug vor, eine unnötige Fehlerfalle zu beseitigen, die 22 Bytes einspart .
Ungolfed-Code:
Die Plain English IDE ist unter github.com/Folds/english verfügbar . Die IDE läuft unter Windows. Es wird in 32-Bit-x86-Code kompiliert.
quelle
If the s is "", exit.
Kohle ,
4036 BytesProbieren Sie es online!
Erläuterung:
Eine Alternative mit der gleichen Byteanzahl:
Probieren Sie es online! ( Ausführliche Version )
quelle
Count
bzw.Ordinal
anstelle vonFind
, um einige Bytes zu speichern.if
zählt als eine einzige Aussage, so dass Sie das{}
s nicht brauchen . Ich habe auch ein Byte gespeichert, indem ich dasUppercase
Innere a verschoben habeTernary
: Probieren Sie es online aus!Fθ«A⎇﹪℅ι²buzz¦fizzχ⎇№αι↥χχ
für 26 Bytes. (Deverbosifier mag diese Version nicht.)> <> 68 Bytes
Probieren Sie es online aus oder schauen Sie es sich auf dem Fischspielplatz an !
(Aber sieh dir Aarons Antwort an, die 13 Bytes kürzer ist!)
Wenn Sie nicht mit> <> vertraut sind, gibt es einen Fisch, der in 2D durch den Code schwimmt, und die Kanten werden umbrochen. Die Symbole
>
,<
,^
undv
die Richtung des Fisches festgelegt,/
und\
sind Spiegel , die es reflektieren, und?
bedeutet „die nächste Anweisung tun , wenn die Top-Sache auf dem Stapel nicht Null ist , sonst die nächste Anweisung springen“.In der ersten Zeile erhält der Fisch das Zeichen input (
i
). Wenn es für EOF -1 ist, stoppt es (:0(?;
); es bekommt den charcode mod 2 (:2%$
); und es drückt eine 1 oder 0 auf dem Stapel, abhängig davon, ob der Zeichencode kleiner oder größer als der Zeichencode von "^" ("^"(
) ist. Die nächsten drei Zeilen leiten den Fisch zur richtigen Fizz / Buzz-Zeichenfolge um, dann wird er in der letzten Zeile gedruckt (eineo
für jedes Zeichen) und der Fisch zum Anfang zurückgeschickt.quelle
!
oder?
gefolgt von einem Leerzeichen, das nur das Leerzeichen überspringt, aber TIO wartet, bis das nächste Nicht-Leerzeichen übersprungen wird ...!
sollte Leerzeichen AFAIK überspringen, aber der Online-Interpreter füllt seinen Codespace mit Leerzeichen auf, was wahrscheinlich das ist, was Sie sehen> <> , 55 Bytes
Basierend auf der Antwort von Not a Tree .
Anstatt die 4 möglichen Ausgaben im Code darzustellen, stelle ich nur ihre großgeschriebenen Versionen dar und addiere 32 zum Zeichencode, um die kleinen Falläquivalente zu erhalten.
Probieren Sie es online!
Geänderter Code für den Online-Interpreter , der seinen Codespace mit leeren Zellen auffüllt:
quelle
Perl5 , 50 + 1 Bytes
Erstellt eine Liste mit 128 Elementen, die ASCII-Zeichen dem richtigen Codewort zuordnet.
quelle
05AB1E , 22 Bytes
Probieren Sie es online!
Erläuterung
Alternative 22-Byte-Lösung
quelle
PHP , 67 Bytes
Probieren Sie es online!
quelle
F # ,
154153145 Bytesgespeichert
19 Byte dank @Mr. XcoderProbieren Sie es online!
quelle
concat
und""
in der letzten Zeile entfernenMathematica, 134 Bytes
quelle
Java 8, 89 Bytes
Es geht davon aus
import static java.util.stream.Collectors.*;
quelle
q / kdb +, 48 Bytes
Lösung:
Beispiele:
Erläuterung:
Ziemlich einfach, nehmen Sie die Eingabezeichenfolge, wandeln Sie sie in ASCII-Werte um, erstellen Sie eine Liste mit 1 oder 0, je nachdem, ob sie gerade oder ungerade ist (Hinweis A = 65 = ungerade), und indizieren Sie diese Liste dann in eine Liste mit
fizz
undbuzz
. Wandeln Sie dies in eine Zeichenfolge um. In Fällen, in denen die Eingabe <91 (niedriger als ein Z) ist, wenden wir die Zeichenfolge anupper
Funktion an, um aFIZZ
oder a zu erhaltenBUZZ
.q wird von rechts nach links interpretiert:
quelle
mod
und entfernen2
?mod[x;2]
wollten wir kein Leerzeichen - aber das ergibt 1 Byte mehr!Ruby , 61 + 1 = 62 Bytes
Verwendet die
-p
Flagge.Probieren Sie es online!
quelle
Swift 4 ,
144135 BytesNicht golfen:
Was ich tue, ist Schleifen über jedes Zeichen in der Zeichenfolge. Ich konvertiere jedes in seinen ASCII-Wert, überprüfe dann, ob es gerade oder ungerade ist, und überprüfe dann, ob es groß oder klein geschrieben ist, und gebe den passenden Wert aus der Schleife aus. Ich füge dann alle Elemente des resultierenden Arrays zu einer einzigen Zeichenfolge zusammen und drucke sie aus.
Diese Lösung verwendet Swift 4, so dass es noch keine einfache Möglichkeit gibt, sie online zu testen.
Vielen Dank an @ Mr.Xcoder, der mir 9 Bytes gespart hat!
quelle
error: value of type 'String' has no member 'map'
, weil ein String zur Laufzeit nicht automatisch in eine Liste konvertiert wird.$0.characters.map{...}
func f(s:String){...}
, daher können Sie 9 Bytes speichern , indem Sie den folgenden Code verwenden, dass Verwendungenprint
stattreturn
: pastebin.com/06kiiGaJ . Wenn es nicht funktioniert, lass es mich wissen.R,
150123108 BytesMuss mit ASCII kürzer sein?Es war kürzer. Siehe Bearbeitungsverlauf für die alte Antwort, die verwendet wurdeletters
.Überprüft jeden Buchstaben auf (1), ob es sich um Großbuchstaben handelt oder nicht (
>91
) und ob es sich um einenfizz
oder einen handeltbuzz
.quelle
Java
quelle
public static void main
) oder eine Funktion sein. Momentan ist deins ein Ausschnitt.