Ein Kätzchen ist einer Katze sehr ähnlich. Einige der Hauptunterschiede sind Niedlichkeit, mangelnde Intelligenz und Größe. Ebenso unterscheidet sich der cat
Befehl vom kitten
Befehl. Zum Glück gibt es in diesem Fall nur einen Unterschied. Im Kitten-Befehl werden alle Großbuchstaben durch Kleinbuchstaben ersetzt.
Zielsetzung
So implementieren Sie ein Programm, das sich ähnlich verhält wie cat
. Alle Zeichen [A-Z]
werden in Kleinbuchstaben ausgegeben.
Eingang
Eine Liste von Dateien als Befehlszeilenargumente. Wenn keine Dateien aufgelistet sind, lesen Sie von der Standardeingabe. Die Eingabe kann nicht druckbare Zeichen und Zeichen außerhalb des ASCII-Bereichs enthalten.
Ausgabe
Wenn es sich bei der Eingabe um eine Reihe von Dateien handelt, verketten Sie den Inhalt und geben Sie alle Zeichen in Kleinbuchstaben aus. Wenn Sie aus STDIN lesen, geben Sie den Inhalt von STDIN mit allen Großbuchstaben als Kleinbuchstaben aus.
Hinweis: Machen Sie die Zeichen nur in [A-Z]
Kleinbuchstaben. Es ist nicht akzeptabel, wenn andere Zeichen in Kleinbuchstaben geschrieben werden.
Beispiele
$ echo "HelLo" > file.txt
$ kitten file.txt
hello
$ echo "Good Bye" | kitten
good bye
$ echo "Ä" | kitten
Ä
Wie beim Code-Golf üblich , gewinnen die wenigsten Bytes.
Bestenlisten
Hier ist ein Stack-Snippet, um sowohl eine reguläre Rangliste als auch eine Übersicht der Gewinner nach Sprache zu generieren.
Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:
# Language Name, N bytes
Wo N
ist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Wenn Sie mehrere Zahlen in Ihre Kopfzeile aufnehmen möchten (z. B. weil Ihre Punktzahl die Summe von zwei Dateien ist oder wenn Sie die Strafen für Interpreter-Flags separat auflisten möchten), stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Zahl in der Kopfzeile ist:
# Perl, 43 + 2 (-p flag) = 45 bytes
Sie können den Namen der Sprache auch als Link festlegen, der dann im Leaderboard-Snippet angezeigt wird:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
quelle
[A-Z]
Erwarten Sie eine Unicode-Eingabe, indem Sie explizit "Nur die Zeichen in Kleinbuchstaben schreiben" angeben ?Ü
,Ñ
und die Gleichen?Antworten:
Perl, 6 Bytes
5 Byte Code + 1 Byte Befehlszeile
Anwendungsbeispiel:
Bestätigung des korrekten Unicode-Verhaltens:
quelle
Bash, 19 Bytes
Der beste Weg, um Kätzchen zu machen, ist die Verwendung von echten Katzen.
Beispiellauf
quelle
man woman
Witze…Perl, 11 Bytes
10 Byte Code + 1 Byte Befehlszeile
Anwendungsbeispiel:
quelle
Python 3, 77 Bytes
quelle
Ruby, 13 Bytes
Die Byteanzahl enthält 1 Byte für das
p
Flag. Führen Sie es wie folgt:ruby -p kitten.rb
.Übernimmt die Eingabe von Standard- oder Dateiargumenten, genau wie die erwachsene Katze.
quelle
Ä
?echo "HelloÉ" | ruby -p kitten.rb
->helloÉ
PowerShell, 112 Bytes
Schrecklich unleserlich. Hier ist eine etwas erweiterte Version:
Definiert eine interne Funktion
l
, die über eine Schleife von 97 bis 112 (dh ASCIIa
bis ASCIIz
) iteriert . Teilt die Eingabezeichenfolge auf dieses Zeichen auf (yay case-insensitive default), und setzt die "richtige" Kleinbuchstaben hinzu. Beachten Sie, dass ja, dies bedeutet, dass "Test" kurz "T st" wird, wenn ese
zum Beispiel durch das durchläuft . Beeinflusst die Ausgabe nicht.Die zweite Hälfte ist das schwierige Stück, um herauszufinden, ob es eine Pipeline-Eingabe (entspricht stdin für PowerShell) oder eine Befehlszeilen-Eingabe gibt. Die Sondervariable
$args
ist nur vorhanden, wenn eine Befehlszeileneingabe vorhanden ist. Wir durchlaufen also jede einzelne Variablegc
(forGet-Content
) und schleppen sie aufl
. Ansonsten schleppen wir uns einfach$input
aufl
. Beachten Sie, dass wir unsere if / else-Anweisungen austauschen könntenif($input)
, aber da "input" ein Zeichen länger als "args" ist, ist dieser Weg kürzer.quelle
"String".ToLower()
Unicode-Zeichen würden auch in Kleinbuchstaben geschrieben, was gegen die Regeln verstößt . Es gibt eine Menge Dinge, die PowerShell in Bezug auf Unicode nicht richtig macht, aber leider ist dies eine Instanz, die es richtig funktioniert.Python 2, 53 Bytes
quelle
R 97 Bytes
Verwendungszweck:
quelle
CoffeeScript , 292 Bytes
Verwendungszweck:
Meine erste Teilnahme am Codegolf, sei also bitte nicht unhöflich :).
Sicher kann dieser Code mehr gespielt werden und Kaffee / Javascript ist nicht die beste Wahl, um das zu tun, aber es tut, was erwartet wird.
Beim Lesen von Argumenten wird auch auf die Dateikonsistenz geachtet (wenn die Datei nicht vorhanden ist, wird die Zeichenfolge kittened).
Hilfe oder Ratschläge zur Verbesserung dieses Codes sind willkommen!
quelle
Julia, 123 Bytes
Ungolfed:
quelle
CJam, 18 Bytes
Die Liste der Dateien muss in Form von URLs bereitgestellt werden. Dies ist das einzige Format, das CJam versteht.
Beispiel läuft
Wie es funktioniert
quelle
Python 2,
10010297 BytesDie Funktionalität wurde von matsjoyce korrigiert (und 4 Bytes hinzugefügt). Glücklicherweise habe ich durch den Wechsel zu Python 2 zwei Bytes gespart.
Übernimmt Argumente von der Befehlszeile oder von STDIN, wenn keine Argumente gefunden wurden.
Dies missbraucht die Standardargumente einiger Funktionen. Standardmäßig,
open
der schreibgeschützte Textmodus verwendet, genau das, was wir möchten.read
Wenn der Befehl ohne Argumente aufgerufen wird, wird der gesamte Text im Stream zurückgegeben.Ungolfed:
quelle
input
ich nicht mehr davon abhängig war, es nicht auszuwerten, konnte ich zu Python 2 wechseln und die Klammern an entfernenprint
.Python 3,
124123 BytesPython frisst Kätzchen!
quelle
C
106108 BytesBearbeiten: Es wurde ein Fehler behoben, der sich beim Auspressen von Bytes eingeschlichen hat. Stdin hat nicht funktioniert, jetzt ist es.
Ich bin mir ziemlich sicher, dass ich ein paar Bytes wegpressen könnte, aber hier ist eine leicht zu verstehende, überhaupt nicht beleidigende Behauptung:
Und eine etwas übersichtlichere Version zum Lesen:
quelle
Mathematica, 66 Bytes
Genannt als
Mathematica hat bereits eine
ToLowerCase
Funktion, konvertiert aber auch Sonderzeichen (Unicode und mathematische Zeichen). Also musste ich es kittenisieren. Diese Funktion nimmt jede Eingabe entgegen.quelle
C #,
230226 BytesUngolfed:
quelle
Haskell, 133
Die Verarbeitung der cat-style-Argumente leitet sich aus diesem Tutorial ab und anschließend neu angeordnet, um die Zeichen zu rasieren.
Erklärt
l
die Funktion, ein Zeichen in Kleinbuchstaben zu schreiben:sum[32|condition]
ist eine kürzere Form vonif condition then 32 else 0
.[x..]!!count
isiterate succ x !! count
istoEnum $ fromEnum x + count
und kürzer als importieren und verwendenData.Char.toLower
mit einer Bedingung, um es auf ASCII zu beschränken.'@'
und'['
sind die Zeichen unmittelbar vorA
und nachZ
, so dass ich<
stattdessen verwenden kann<=
.Vielen Dank an Anders Kaseorg für die Beiträge
sum[...|...]
und[x..]!!
Tricks.quelle
l x=[x..]!!sum[32|x>'@',x<'[']
C #, 342 Bytes
C #, 319 Bytes
Einzeiler wie oben:
quelle
SILOS 179 Zeichen
Fühlen Sie sich frei, diesen Code online auszuprobieren!
Im Wesentlichen wird dies im Pusedocode übersetzt.
quelle
C 91 Bytes
C 98 Bytes
Wenn die Lesbarkeit mehr als die Anzahl der Bytes ausmacht, wird die gleiche Logik wie folgt geschrieben:
quelle
sed, 14 bytes
Laufen Sie mit
env -i sed -f kitten.sed
.quelle
LANG=C sed -f kitten.sed
, bin ich mir nicht sicher, ob ich dafür eine Strafe verhängen soll. Diese Frage gibt nicht an, wie Programmaufrufe gezählt werden sollen, und scheint in Meta nicht angesprochen zu sein.s/.*/\L&/
für eine neun-Byte-Lösungs/.*/\L&/
unds/./\L&/g
sind in der Tat 9-Byte-Lösungen!Java, 198 Bytes
Sie müssen das obige Lambda für Dateien verwenden, sodass Sie keine Eingaben von STDIN vornehmen müssen! Es ist auch eine
Function<File[], UnaryOperator<String>>
. Es wird gerne benutztfoo.apply(anArrayOfFiles).apply(anything)
.Für Java-Neulinge sind 223 Byte sinnvoll:
Als etwas, das kompiliert wird, benötigt es 232 Bytes:
quelle