Od 2009 r. Nazwy kodów wersji Androida mają charakter cukierniczy. Android 1.5 to Cupcake, Android 1.6 to Donut, Android 2.0 to Eclair itp. W rzeczywistości nazwy wersji są alfabetyczne!
C -> Cupcake
D -> Donut
E -> Eclair
F -> Froyo
G -> Gingerbread
H -> Honeycomb
I -> Ice Cream Sandwich
J -> Jellybean
K -> Kitkat
L -> Lollipop
M -> Marshmallow
N -> Nougat
O -> Oreo
W porządku:
Cupcake, Donut, Eclair, Froyo, Gingerbread, Honeycomb, Ice Cream Sandwich, Jellybean, Kitkat, Lollipop, Marshmallow, Nougat, Oreo
Wyzwanie
Napisz program / funkcję, która pobiera literę od C
do O
i wyświetla odpowiednią nazwę kodową wersji Androida.
Dane techniczne
- Zasady Standard I / O zastosowania .
- Standardowe luki są zabronione .
- Możesz wybrać obsługę małych liter lub wielkich liter, a nawet obu.
- Dane wyjściowe mogą być pisane wielkimi
Cupcake
i małymi literami (eclair
).Ice cream sandwich
może być pisane wielkimi literami, jak chcesz. (Nie spodziewałem się, że spowoduje to tyle zamieszania ...) - Wyzwanie to nie polega na znalezieniu najkrótszego podejścia we wszystkich językach, chodzi raczej o znalezienie najkrótszego podejścia w każdym języku .
- Twój kod będzie oceniany w bajtach , zwykle w kodowaniu UTF-8, chyba że określono inaczej.
- Wbudowane funkcje (Mathematica może mieć jeden: P), które obliczają tę sekwencję są dozwolone, ale zalecane jest uwzględnienie rozwiązania, które nie opiera się na wbudowanej.
- Zachęca się do wyjaśnień, nawet w przypadku „praktycznych” języków .
Przypadki testowe
Są to wielkie i wielkie litery.
Input Output
F Froyo
I Ice Cream Sandwich
J Jellybean
N Nougat
G Gingerbread
L Lollipop
W kilku lepszych formatach:
F, I, J, N, G, L
f, i, j, n, g, l
F I J N G L
f i j n g l
MARSHMALLOW
i później.Odpowiedzi:
Węgiel drzewny , 73 bajty
Wypróbuj online! We / wy pisane jest małymi literami. Na podstawie tej pełnej wersji . Wyjaśnienie:
źródło
Bash + Core Utils
131128122117 bajtów.Skrypt jest zakodowany jako Base64, ponieważ zawiera znaki specjalne (dziwne).
Akceptuje literę pseudonimu systemu Android tylko małymi literami jako pierwszy parametr pozycyjny. Zwraca pełną nazwę kodową również małymi literami .
Wyjaśnienie:
base32 $0
koduje zawartość skryptu za pomocą Base32, z domyślnym zawijaniem wiersza 76 znaków.tr 'A-Z47\n' 'a-z\n '
(Zauważ, że\n
jest napisane jak dosłownym nowej linii) będą małe litery wejście i zastąpić 4 , 7 i\n
przez\n
, przestrzeni i miejsca odpowiednio.grep ^$1
wyświetli wiersze pasujące do ciągu podanego jako pierwszy argument skryptu.Dane binarne
Ten strumień oktetów został sfałszowany, aby nie zawierał znaków nowej linii, a gdy jest dekodowany przy użyciu Base32 zgodnie z RFC 4648, powstały ciąg jest listą nazw kodowych Androida (użycie 4 jako separatora pozycji i 7 w celu zastąpienia znaku spacji ). Wśród jego szczególnych cech, zaczyna się od znaku nowej linii i hash (
#
), więc zachowuje się jak komentarz i dlatego nie jest wykonywany przez interpretera.Również domyślne zawijanie wiersza do 76 znaków w tej implementacji Base32 pomogło mi w bajcie, ponieważ zmieniłem kolejność elementów, aby użyć podziału wiersza jako jednej z miejsc na kanapki z lodami .
Również i będzie trochę off-topic, myślę, że Google nie powinno
siębezpośrednio reklamowania produktów handlowych w Android kryptonimów.źródło
f
, wyprowadza dwie linie: jedna zfroyo
, a drugi z tajemnicząfgeyltmuzteibno
.Python 3 , 139 bajtów
Wypróbuj online!
źródło
Bash + Core Utils (Grep):
132130 bajtówProste, jak mogłoby być
źródło
dd
jest sprytne, ale czy możesz zapisać jako skrypt i użyć$1
zamiast tego?Galaretka , 57 bajtów
Wypróbuj online!
-5 dzięki Jonathan Allan .
źródło
Oị“¡ḟ¤Y7bh%XO€ḥıṣẎṄṢ°ḊḞİỌĿż0Y⁷ẠỵƈƭV>tÐNY_LɠðṅẒọX?v»Ḳ¤F⁾! y
Oị“¡ȥọ⁴ḷæĿɱ}#n#i®ÞSỊ3ƙɼıjṁ)-⁵g7ḥjC?4ƘẠʂ+ḋ¤⁺jṣð£?v»Ḳ¤F⁾! y
F
? och, to dlatego, że dostaję dane wejściowe jako ciąg znaków, a nie charC ++,
206201198 bajtówDzięki @sergiol za pomoc w oszczędzaniu 3 bajtów!
Wypróbuj online!
C 173 bajtów
Cóż, zaczęło się jako C ++, ale teraz jest również poprawnym C, a niektóre bajty można zapisać, kompilując je jako C.
Wypróbuj online!
źródło
#import
w c ++? czego tu brakuje?#import <cstdio>
ponieważ brak#include <stdio.h>
; a może się mylęJavaScript (ES6),
137136 bajtówZapisano 1 bajt dzięki Neilowi
Próbny
Pokaż fragment kodu
źródło
([a-z]| .)+
(zapisywanie 1 bajtu) działałoby nawet z Ice Cream Sandwich w środku ciągu (zaczynałby się nie udać, gdy nazwy kodów osiągnęły S chociaż).[a-z\s]+
nie pasuje do wielkich liter. Po prostu nie wiem, czy możesz to zrobić w JSIce cream sandwich
, jak w przypadku testowym (chociaż nie jest to przypadek tytułowy)Japt ,
8179 bajtówZawiera kilka znaków, które nie będą się tutaj wyświetlać.
Sprawdź to
Wyjaśnienie
Domniemane wprowadzanie łańcucha wielkich liter
U
.Skompresowany ciąg (wszystko między znakami wstecznymi) nazw, oddzielony
f
znakiem i bez pierwszej litery, jest dzielony (q
) na tablicęf
.Wewnątrz tej tablicy otrzymujemy element w indeksie (
g
)U
kodu znakowego s. (Tak, owijanie indeksu!)Dołączamy to
U
i domyślnie wyprowadzamy wynikowy ciąg.źródło
f
zamiast tego, jeśli nowe linie: ethproductions.github.io/japt/…Excel VBA,
137134132 bajtówAnonimowa funkcja bezpośredniego okna VBE, która pobiera dane zgodnie z oczekiwanym typem
Variant\String
i długością,1
trzymając wielką literę z komórki[A1]
i wysyła do funkcji bezpośredniego okna VBE-5 bajtów do zmiany spacji
ce cream sandwich
z(char 32) na
(char 160)`` (char 127) i usunięcia separatora przecinków wSplit
funkcjiźródło
SOGL V0.12 , 81 bajtów
Wypróbuj tutaj!
Wyjaśnienie:
Teraz jest krótsza wersja 80-bajtowa , ale dodałem wbudowane + 2 / -2 z powodu tego wyzwania: p
Skompresowany ciąg znaków jest podzielony jak w
"cup","cake"," donut eclair fro","yo gingerbread honeycomb ice","_","cream","_","sandwich jelly","bean kit","kat loll","i","pop marsh","mallow"," nougat oreo"
celu maksymalnego wykorzystania angielskich słów (wiele nie było w słowniku SOGL), w tej chwili nie mogę znaleźć żadnych ulepszeń.źródło
> <> , 181 bajtów
Wypróbuj online!
Działa to poprzez samodzielną modyfikację programu, aby umieścić
<
przed prawidłową nazwą do wydrukowania, której położenie jest określone przez wartość wprowadzonej litery.źródło
Dyalog APL,
158143131 bajtów1 bajt zapisany dzięki @ Zacharý
12 bajtów zapisanych dzięki @Gil
Wypróbuj online!
W jaki sposób?
',,,upcake...'
- lista słów','(1↓¨=⊂⊢)
- podzielone przez','
(⎕A⍳⍵)⊃
- pobierz z miejsca argumentu w alfabecie⍵,
- i dołączyć do listuźródło
↑
jako spłaszczony?{⍵,∊⍬⍬'upcake' 'onut' 'clair' 'royo' 'ingerbread' 'oneycomb' 'ce cream sandwich' 'ellybean' 'itkat' 'ollipop' 'arshmallow' 'ougat' 'reo'[⎕A⍳⍵]}
działa przez 1 bajt mniej!∊
jest również spłaszczony, ale faktycznie spłaszcza, a nie „miksuje”.↑(1 2)(3 4)
NIE jest płaski, podczas gdy∊(1 2)(3 4)
jest.EXCEL, 154 bajtów
źródło
C (gcc) ,
195192190 bajtów-2 bajty dzięki @Quentin
Wypróbuj online!
źródło
Tcl , 158 bajtów
Wypróbuj online!
źródło
Haskell, 145 bajtów
źródło
takeWhile
może byćfst.span
idropWhile
odpowiedniosnd.span
.Gaia , 110 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Rubin, 127 bajtów
Pobiera wielkie litery. Wypróbuj online!
źródło
Pyth ,
117116 bajtówPort mojej odpowiedzi w języku Python .
Wypróbuj tutaj! lub Sprawdź pakiet testowy
Pyth , 99 bajtów (70 znaków)
-15 bajtów dzięki @insert_name_here !
Wypróbuj tutaj!
źródło
Java (OpenJDK 8) , 128 bajtów
Wypróbuj online!
Używając wyrażeń regularnych, 149 bajtów
Wypróbuj online!
źródło
.split
Już miałem opublikować tę samą odpowiedź (tylko z innym ogranicznikiem), kiedy przeczytałem wyzwanie i nie mogłem znaleźć odpowiedzi w Javie (dopóki nie przeszedłem na drugą stronę odpowiedzi), więc +1. Jeśli chodzi o odpowiedź wyrażenia regularnego,([a-z]| .)+
może być[a-z ]+
, ponieważ możesz wypisać „Kanapki z lodami” („ Dane wyjściowe mogą być w tytule (Cupcake) lub całkowicie małe litery (eclair)). (Nie spodziewałem się, że spowoduje to tyle zamieszania ...) ”)Sześciennie ,
1047852830 bajtówFunkcje z pewnością pomagają w golfie w dużych programach ...
Wypróbuj online! Jest to 830 bajtów w SBCS firmy Cubically .
~
odczytuje dane wejściowe,@
drukuje je. (Zrywa się, gdy dane wejściowe są nieprawidłowe.)+.../...+...=7?6{...}
porównuje wejście do każdej wartości ASCII (C
,D
,E
,F
, etc) i wykonuje kod wewnątrz{...}
, jeśli są one równe.{...}
) drukuje resztę nazwy (pierwszy znak jest już wydrukowany).Dzięki ASCII TehPers dla Cubical Translator, który był bardzo pomocny.
źródło
V , 125 bajtów
Wypróbuj online!
źródło
Pyke , 117 bajtów
Port mojej odpowiedzi w języku Python .
Wypróbuj tutaj!
Kodowany jako kody szesnastkowe, nowa technika gry w golfa w Pyke, miałby 116 bajtów :
(Wklej i sprawdź
Use hex encoding?
).źródło
C # ,
147136129 bajtówDane
Char
c
pierwszą literę nazwy wersjiString
Pełna nazwa wersjiGrał w golfa
Bez golfa
Nieczytelny czytelny
Pełny kod
Wydawnictwa
147 bytes
- Wstępne rozwiązanie.-11 bytes
- Zapożyczony pomysł Oliviera Grégoire'a .- 7 bytes
- Zmieniono wejście funkcji z jawnej na niejawną.Notatki
źródło
(char c)
może po prostu byćc
R,
169155 bajtówźródło
Dyalog APL, 125 bajtów
Wypróbuj online!
W jaki sposób?
⍵∊⎕A
⍵
(długi ciąg) z 1 dla wielkich liter, 0 dla małych liter / spacji.+\
Grupuj (zwracane liczby) ⍵ dużymi literami.⎕A[...]
Wielka litera oznaczona liczbą⍵/⍨⍞=
Grupa oznaczona tym numerem{...}'...'
Ustaw⍵
długi ciągźródło
R,
131,126,123,112, 178 bajtówDziękujemy za @Mark za zapisanie 5 + 8 + 3 bajtów
źródło
Recursiva ,
130 119118 bajtówWypróbuj online!
źródło
C (gcc) , 168 bajtów
Wypróbuj online!
źródło
PowerShell ,
136134 bajtówWypróbuj online!
Pobiera znak
[char]
wejściowy, małymi literami, i wypisuje małe litery.-2 dzięki sugestii AdmBorkBork
-split0
zamiast-split','
.źródło
0
jako separatora, a następnie-split0
zapisać cytaty.