Kotek jest bardzo podobny do kota. Niektóre z głównych różnic to bystrość, brak inteligencji i rozmiar. Podobnie cat
polecenie różni się od kitten
polecenia. Na szczęście w tym przypadku jest tylko jedna różnica. W poleceniu kociak wszystkie wielkie litery są zastępowane małymi literami.
Cel
Aby wdrożyć program, który działa podobnie do cat
. Wszystkie znaki [A-Z]
są wypisywane małymi literami.
Wejście
Lista plików jako argumenty wiersza poleceń. Jeśli na liście nie ma żadnych plików, czytaj ze standardowego wejścia. Dane wejściowe mogą zawierać znaki niedrukowalne i znaki spoza zakresu ASCII.
Wynik
Jeśli dane wejściowe to kilka plików, połącz zawartość i wypisz wszystkie znaki małymi literami. Jeśli czytasz ze STDIN, wypisz zawartość STDIN ze wszystkimi wielkimi literami jako małymi literami.
Uwaga: Znaki należy [A-Z]
wpisywać tylko małymi literami. Niedopuszczalne jest, aby jakiekolwiek inne znaki były pisane małymi literami.
Przykłady
$ echo "HelLo" > file.txt
$ kitten file.txt
hello
$ echo "Good Bye" | kitten
good bye
$ echo "Ä" | kitten
Ä
Jak zwykle przy golfie kodowym , wygrywa najmniej bajtów.
Liderów
Oto fragment kodu, który pozwala wygenerować zarówno zwykłą tabelę wyników, jak i przegląd zwycięzców według języka.
Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:
# Language Name, N bytes
gdzie N
jest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Jeśli chcesz umieścić w nagłówku wiele liczb (np. Ponieważ twój wynik jest sumą dwóch plików lub chcesz osobno wymienić kary za flagi tłumacza), upewnij się, że rzeczywisty wynik jest ostatnią liczbą w nagłówku:
# Perl, 43 + 2 (-p flag) = 45 bytes
Możesz także ustawić nazwę języka jako link, który pojawi się we fragmencie tabeli wyników:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
źródło
[A-Z]
małe litery”, czy spodziewasz się wprowadzenia Unicode?Ü
,Ñ
i lubi?Odpowiedzi:
Perl, 6 bajtów
5 bajtów kodu + 1 bajtowy wiersz poleceń
Przykładowe użycie:
Potwierdzenie poprawnego zachowania Unicode:
źródło
Bash, 19 bajtów
Najlepszym sposobem na zrobienie kociąt jest użycie prawdziwych kotów.
Przykładowy przebieg
źródło
man woman
dowcipy…Perl, 11 bajtów
Kod 10 bajtów + wiersz poleceń 1 bajt
Przykładowe użycie:
źródło
Python 3, 77 bajtów
źródło
Rubinowy, 13 bajtów
Liczba bajtów obejmuje 1 bajt dla
p
flagi. Uruchomić go tak:ruby -p kitten.rb
.Pobiera dane wejściowe z argumentów stdin lub pliku, podobnie jak dorosły kot.
źródło
Ä
?echo "HelloÉ" | ruby -p kitten.rb
->helloÉ
PowerShell, 112 bajtów
Okropnie nieczytelne. Oto nieco rozszerzona wersja poniżej:
Definiuje funkcję wewnętrzną,
l
która iteruje w pętli od 97 do 112 (tj. ASCIIa
do ASCIIz
). Dzieli ciąg wejściowy na ten znak (domyślnie nie uwzględnia wielkości liter), ponownie dołącza go z „poprawną” małą literą. Zauważ, że tak, oznacza to, że „Test” na krótko zamieni się w „T st”, ponieważ iteruje sięe
na przykład przez. Nie wpływa na wydajność.Druga połowa to trudny kawałek, aby dowiedzieć się, czy mamy dane wejściowe z potoku (równoważne stdin dla PowerShell) lub dane z wiersza poleceń. Specjalna zmienna
$args
jest obecna tylko wtedy, gdy obecne jest wejście wiersza poleceń, więc zapętlamy każdą z nichgc
(forGet-Content
) i schlep to dol
. W przeciwnym razie po prostu dokonamy$input
tegol
. Zauważ, że moglibyśmy zamienić nasze instrukcje if / else (tj.if($input)
), Ale ponieważ „input” jest o jeden znak dłuższy niż „args”, w ten sposób jest krótszy.źródło
"String".ToLower()
ma również małe znaki Unicode, co jest niezgodne z regułami. Istnieje wiele rzeczy, których PowerShell nie robi dobrze w odniesieniu do Unicode, ale niestety jest to jeden przypadek, który działa poprawnie.Python 2, 53 bajty
źródło
R, 97 bajtów
Stosowanie:
źródło
CoffeeScript , 292 bajtów
Stosowanie:
Mój pierwszy udział w codegolf, więc proszę, nie bądź niegrzeczny :).
Na pewno ten kod może być bardziej golfowy, a kawa / javascript nie jest najlepszym wyborem, ale robi to, czego się spodziewano.
Kiedy czyta argumenty, dba również o istnienie pliku (jeśli plik nie istnieje, łańcuch jest kociakiem).
Mile widziana jest jakakolwiek pomoc lub porady w celu ulepszenia tego kodu!
źródło
Julia, 123 bajty
Nie golfowany:
źródło
CJam, 18 bajtów
Lista plików musi być dostarczona w formie adresów URL, który jest jedynym formatem, który CJam rozumie.
Przykład działa
Jak to działa
źródło
Python 2,
10010297 bajtówPoprawiona funkcjonalność (i dodane 4 bajty) przez matsjoyce. Na szczęście zaoszczędziłem dwa bajty, przełączając się na Python 2.
Pobiera argumenty z wiersza poleceń lub ze STDIN, jeśli nie znaleziono żadnych argumentów.
To nadużywa domyślnych argumentów niektórych funkcji. Domyślnie
open
używa trybu tekstowego tylko do odczytu, który jest dokładnie tym, czego chcemy.read
, jeśli zostanie wywołany bez argumentów, zwróci cały tekst w strumieniu.Nie golfowany:
źródło
input
braku oceny, mogłem przełączyć się na Python 2 i usunąć nawiasyprint
.Python 3,
124123 bajtyPython zjada kocięta!
źródło
C,
106108 bajtówEdycja: Naprawiono błąd, który pojawiał się podczas wyciskania bajtów. Stdin nie działał, teraz jest.
Jestem prawie pewien, że mógłbym wycisnąć kilka bajtów, ale oto łatwe do uchwycenia, wcale nie obraźliwe językowo przesłanie:
I nieco bardziej starannie sformatowana wersja do czytania:
źródło
Mathematica, 66 bajtów
Nazywany jako
Mathematica ma już
ToLowerCase
funkcję, ale konwertuje również znaki specjalne (Unicode i matematyczne). Więc musiałem to skreślić. Ta funkcja przyjmuje dowolne dane wejściowe.źródło
C #,
230226 bajtówNie golfowany:
źródło
Haskell, 133
Przetwarzanie argumentów w stylu kota pochodzi z tego samouczka , a następnie przestawiono w celu golenia znaków.
Wyjaśniając
l
, funkcja zapisywania małymi literami jednego znaku:sum[32|condition]
jest krótszą formąif condition then 32 else 0
.[x..]!!count
Jestiterate succ x !! count
totoEnum $ fromEnum x + count
i krócej niż importu i korzystaniaData.Char.toLower
z warunku, aby ograniczyć je do ASCII.'@'
i'['
są to postacie bezpośrednio poprzedzająceA
i następująceZ
, więc mogę użyć<
zamiast<=
.Dzięki Andersowi Kaseorgowi za wkład
sum[...|...]
i[x..]!!
sztuczki.źródło
l x=[x..]!!sum[32|x>'@',x<'[']
C #, 342 bajtów
C #, 319 bajtów
jednowarstwowy, taki sam jak powyżej:
źródło
SILOS 179 znaków
Czuć się swobodnie wypróbować ten kod online!
Zasadniczo przekłada się na to w pusedocode.
źródło
C, 91 bajtów
C, 98 bajtów
Chociaż jeśli liczność liczy się więcej niż liczba bajtów, ta sama logika jest zapisana poniżej:
źródło
sed, 14 bajtów
Uruchom z
env -i sed -f kitten.sed
.źródło
LANG=C sed -f kitten.sed
, nie jestem pewien, czy powinienem zastosować karę za to. To pytanie nie określa sposobu liczenia wywołań programu i wydaje się, że nie jest adresowane w meta.s/.*/\L&/
s/.*/\L&/
is/./\L&/g
rzeczywiście są rozwiązania 9-bajtowych!Java, 198 bajtów
Jesteś zmuszony używać powyższej lambda z plikami, więc nie musisz pobierać danych z STDIN! Ponadto jest to
Function<File[], UnaryOperator<String>>
. Jest używany jakfoo.apply(anArrayOfFiles).apply(anything)
.Jest to coś, co ma sens dla tych, którzy są nowicjuszami w Javie, zajmuje 223 bajty:
Jako coś, co się kompiluje, zajmuje 232 bajty:
źródło