Oreo? Nie… może Lollipop?

46

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 Cdo Oi wyświetla odpowiednią nazwę kodową wersji Androida.

Dane techniczne

  • Zasady Standard I / O zastosowania .
  • Standardowe lukizabronione .
  • Możesz wybrać obsługę małych liter lub wielkich liter, a nawet obu.
  • Dane wyjściowe mogą być pisane wielkimi Cupcakei małymi literami ( eclair). Ice cream sandwichmoż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
całkowicie ludzki
źródło
8
@ Mr.Xcoder Czy mówisz, że to nie dupe, ponieważ jest łatwiejsze? To oszustwo właśnie dlatego, że jest łatwiejszą wersją istniejącego pytania. Zadaliśmy już tego typu pytania na śmierć, a to nie oferuje absolutnie nic nowego ani interesującego w tym gatunku.
Wheat Wizard
2
@WheatWizard Myślę, że ten pierwszy jest lepszym dupe, ponieważ ten drugi jest ograniczonym źródłem.
Pan Xcoder,
9
To może być dupek jakiegoś innego wyzwania. Ale pomóż mi rozpoznać, że mój potwór prosi o konwersję łańcucha na symbol (co prowadzi do rozwiązań opartych na haszowaniu). Ten pyta o ciąg znaków.
Arnauld
6
kaszel
Magic Octopus Urn
5
@MagicOctopusUrn Tak, też to widziałem. Niestety nie obejmuje MARSHMALLOWi później.
mbomb007,

Odpowiedzi:

14

Węgiel drzewny , 73 bajty

θ§⪪”%↖↙1¬¢/vy⁵⸿ψJPP±≔S×5Jρνξ–Gu ◧;Yx³F▶ψ;εB↥:P¹N﹪J$α✂χ✳⦄⟲*±¶Sp:ς↘V◧◧”x℅θ

Wypróbuj online! We / wy pisane jest małymi literami. Na podstawie tej pełnej wersji . Wyjaśnienie:

                Implicitly print:
θ               Input character
                Implicitly print:
   ”...”        Long compressed string "oneycombx...xingerbread"
  ⪪            Split on
        x       The string "x"
 §              Circularly indexed by
          ℅     Character code of
           θ    Input character
Neil
źródło
4
Ja co? W jaki sposób.
Magic Octopus Urn
@MagicOctopusUrn Przepraszam, że byłem zbyt zajęty, aby dodać wyjaśnienie w tym czasie. Mam nadzieję, że to wystarczy.
Neil
1
Och wow, nie wiedziałem, że to skompresowane struny!
Magic Octopus Urn
Jak węgiel pokonuje SOGL tutaj jest po prostu niewiarygodny.
Eryk Outgolfer
Galaretka wciąż bije: radość: codegolf.stackexchange.com/a/140092/73675
Hugo H
14

Bash + Core Utils 131 128 122 117 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 .

CiPBUeICicG5tJ8W5a0Pc/hYuw7hkNMSIYkAPjARkdgFrdbh3NJgTmB4gRPiiQDJAaOyBH4ki14C
QDeKRNQJ8IJYER411DAnx0SO4CAKYmFzZTMyICQwfHRyICdBLVo0NwonICdhLXoKICd8Z3JlcCBe
JDEK

Wyjaśnienie:

#�Q��������s�X����!�>0�������`N`x������~$�^@7�D�    ��X5�0'�D�� 
base32 $0|tr 'A-Z47
' 'a-z
 '|grep ^$1
  • Pierwsze dwa wiersze to binarny obiekt blob z danymi (więcej informacji znajduje się na końcu odpowiedzi). Pierwszy wiersz jest pusty, aby uniknąć problemów z Bash, ponieważ w przeciwnym razie może się wydawać, że jest zasilany plikiem binarnym.
  • 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 \njest napisane jak dosłownym nowej linii) będą małe litery wejście i zastąpić 4 , 7 i \nprzez \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.

Helio
źródło
2
Fajnie, to naprawdę fajna odpowiedź! Witamy na stronie :)
DJMcMayhem
Kolejna odpowiedź Basha: codegolf.stackexchange.com/a/140147/41835
Helio
1
Ta wersja jest wadliwa, przynajmniej w moim systemie (bash 4.4.12, coreutils 8.27). Dla f, wyprowadza dwie linie: jedna z froyo, a drugi z tajemniczą fgeyltmuzteibno.
MarSoft,
1
@MarSoft: Dzięki! Naprawiony. Szkoda, że ​​teraz potrzebuję więcej bajtu.
Helio
@MarSoft: Solved! Teraz z tymi samymi bajtami!
Helio
11

Python 3 , 139 bajtów

lambda x:x+'upcake,onut,clair,royo,ingerbread,oneycomb,ce cream sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo'.split(",")[ord(x)-67]

Wypróbuj online!

Pan Xcoder
źródło
11

Bash + Core Utils (Grep): 132 130 bajtów

Proste, jak mogłoby być

grep ^$1<<<'Cupcake
Donut
Eclair
Froyo
Gingerbread
Honeycomb
Ice Cream Sandwich
Jellybean
Kitkat
Lollipop
Marshmallow
Nougat
Oreo'
markasoftware
źródło
1
Wprowadzanie za pomocą ddjest sprytne, ale czy możesz zapisać jako skrypt i użyć $1zamiast tego?
Dom Hastings
11

Galaretka , 57 bajtów

Oị“¡ȥọ⁴ḷæĿɱ}#n#i®ÞSỊ3ƙɼıjṁ)-⁵g7ḥjC?4ƘẠʂ+ḋ¤⁺jṣð£?v»Ḳ¤F⁾! y

Wypróbuj online!

-5 dzięki Jonathan Allan .

Erik the Outgolfer
źródło
Zaoszczędź cztery bajty, używając symbolu zastępczego dla spacji w „kanapce z lodami” i spacji do podziału, na przykład:Oị“¡ḟ¤Y7bh%XO€ḥıṣẎṄṢ°ḊḞİỌĿż0Y⁷ẠỵƈƭV>tÐNY_LɠðṅẒọX?v»Ḳ¤F⁾! y
Jonathan Allan
... faktycznie robię te pięć bajtów (użyłem „legowiska”, gdy w słowniku występuje „clair”):Oị“¡ȥọ⁴ḷæĿɱ}#n#i®ÞSỊ3ƙɼıjṁ)-⁵g7ḥjC?4ƘẠʂ+ḋ¤⁺jṣð£?v»Ḳ¤F⁾! y
Jonathan Allan
@JonathanAllan dzięki ... czekaj, dlaczego miałbym tego potrzebować F? och, to dlatego, że dostaję dane wejściowe jako ciąg znaków, a nie char
Erik the Outgolfer
8

C ++, 206 201 198 bajtów

Dzięki @sergiol za pomoc w oszczędzaniu 3 bajtów!

#import<cstdio>
void f(int l){char*w[]={"upcake","onut","clair","royo","ingerbread","oneycomb","ce Cream Sandwich","ellybean","itkat","ollipop","arshmallow","ougat","reo"};printf("%c%s",l,w[l-67]);}

Wypróbuj online!

C 173 bajtów

f(l){char*w[]={"upcake","onut","clair","royo","ingerbread","oneycomb","ce Cream Sandwich","ellybean","itkat","ollipop","arshmallow","ougat","reo"};printf("%c%s",l,w[l-67]);}

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!

Steadybox
źródło
1
Moja nieudana próba skrócenia go poprzez usunięcie pierwszej litery każdego wpisu: tio.run/…
sergiol
@sergiol Thanks! Po odrobinie gry w golfa udało mi się zaoszczędzić trzy bajty.
Steadybox
4
#importw c ++? czego tu brakuje?
Abhinav Gauniyal
@AbhinavGauniyal: IIRC Myślę, że niektóre ostrzeżenia kompilacyjne poradziły mi również dodać, #import <cstdio>ponieważ brak #include <stdio.h>; a może się mylę
sergiol
@AbhinavGauniyal To nie jest standardowy C ++, ale przynajmniej GCC i MSVC go mają.
Steadybox
7

JavaScript (ES6), 137 136 bajtów

Zapisano 1 bajt dzięki Neilowi

c=>'CupcakeDonutEclairFroyoGingerbreadHoneycombIce Cream SandwichJellybeanKitkatLollipopMarshmallowNougatOreo'.match(c+'([a-z]| .)+')[0]

Próbny

Arnauld
źródło
nie możesz dołączyć spacji do zakresu znaków, prawdopodobnie z \ s? nie użyłem dużo JS Regex
michi7x7
1
@ michi7x7 On potrzebuje dopasowania, aby zatrzymać się na wielką literę, z wyjątkiem przypadku Ice Cream Sandwich, chociaż ([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ż).
Neil,
@ Dobrze, [a-z\s]+nie pasuje do wielkich liter. Po prostu nie wiem, czy możesz to zrobić w JS
michi7x7,
@ michi7x7 Więc jak to będzie działać z Ice Cream Sandwich?
Neil,
2
Użyj Ice cream sandwich, jak w przypadku testowym (chociaż nie jest to przypadek tytułowy)
michi7x7,
5

Japt , 81 79 bajtów

Zawiera kilka znaków, które nie będą się tutaj wyświetlać.

U+`Æ+tfÆ÷¯kef©fclairfê $ßdfey¬mbf­ ×Äm ÑØrfÁKÞ fkfo¥ipopfÂâÚaow`qf gUc

Sprawdź to


Wyjaśnienie

Domniemane wprowadzanie łańcucha wielkich liter U.

Skompresowany ciąg (wszystko między znakami wstecznymi) nazw, oddzielony fznakiem i bez pierwszej litery, jest dzielony ( q) na tablicę f.

Wewnątrz tej tablicy otrzymujemy element w indeksie ( g) Ukodu znakowego s. (Tak, owijanie indeksu!)

Dołączamy to Ui domyślnie wyprowadzamy wynikowy ciąg.

Kudłaty
źródło
1
Miły. Możesz zaoszczędzić kilka bajtów, jeśli podzielisz się fzamiast tego, jeśli nowe linie: ethproductions.github.io/japt/…
Oliver
@Oliver: Och, miło, dziękuję :) Idąc ulicą przez telefon, więc na pewno nie dostałbym tego przez jakiś czas (jeśli w ogóle).
Shaggy
5

Excel VBA, 137 134 132 bajtów

Anonimowa funkcja bezpośredniego okna VBE, która pobiera dane zgodnie z oczekiwanym typem Variant\Stringi długością, 1trzymając wielką literę z komórki [A1]i wysyła do funkcji bezpośredniego okna VBE

?[A1]Split("upcake onut clair royo ingerbread oneycomb ce cream sandwich ellybean itkat ollipop arshmallow ougat reo")(Asc([A1])-67)

-5 bajtów do zmiany spacji ce cream sandwichz (char 32) na  (char 160) `` (char 127) i usunięcia separatora przecinków w Splitfunkcji

Taylor Scott
źródło
4

SOGL V0.12 , 81 bajtów

]&ŗ√‰fō¶č▓'▼$»3↕█γb└a}⅟∑─b¹¦Æ:↕┘∞½Σ#gī±⅔≡≥\3Qy-7todΥ7ā‼D←εPρρ:¬c‰ƨ}f沑θ╔@ŗz,WHHw

Wypróbuj tutaj!

Wyjaśnienie:

...‘            push "cupcake donut eclair froyo gingerbread honeycomb ice_cream_sandwich jellybean kitkat lollipop marshmallow nougat oreo"
    θ           split on spaces
     ╔@ŗ        replace underscores with spaces
        z,W     find the inputs index in the lowercase alphabet
           HH   decrease by 2
             w  get that item from the array

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ń.

dzaima
źródło
4

> <> , 181 bajtów

!vi:od5*-0$6a*@p!
v<
 v"upcake"
 v"onut"
 v"clair"
 v"royo"
 v"ingerbread"
 v"oneycomb"
 v"ce Cream Sandwich"
 v"ellybean"
 v"itkat"
 v"ollipop"
 v"arshmallow"
 v"ougat"
 v"reo"
o<>

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.

Business Cat
źródło
3

Dyalog APL, 158 143 131 bajtów

1 bajt zapisany dzięki @ Zacharý

12 bajtów zapisanych dzięki @Gil

{⍵,(⎕A⍳⍵)⊃','(1↓¨=⊂⊢)',,,upcake,onut,clair,royo,ingerbread,oneycomb,ce Cream Sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo'}

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

Uriel
źródło
Dlaczego opisałeś jako spłaszczony?
Zacharý
Ponadto, {⍵,∊⍬⍬'upcake' 'onut' 'clair' 'royo' 'ingerbread' 'oneycomb' 'ce cream sandwich' 'ellybean' 'itkat' 'ollipop' 'arshmallow' 'ougat' 'reo'[⎕A⍳⍵]}działa przez 1 bajt mniej!
Zacharý
@ Zacharý, ponieważ jest ... „miksowany”. niezłe! dlaczego ∊ a nie ↑?
Uriel
Ponieważ 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.
Zacharý
@ Zacharý OP zmieniło to ... PONOWNIE.
Uriel
3

EXCEL, 154 bajtów

=A1&CHOOSE(CODE(A1)-66,"upcake","onut","clair","royo","ingerbread","oneycomb","ce Cream Sandwich","ellybean","itkat","ollipop","arshmallow","ougat","reo")
Wernisch
źródło
Nigdy nie myślałem o użyciu programu Excel w ten sposób. Doskonały. Teraz zrób to za pomocą WORD
tisaconundrum
@tisaconundrum - nie mówimy o tej przeklętej rzeczy; Nawet VBA nie mógł go uratować
Taylor Scott
3

C (gcc) , 195 192 190 bajtów

-2 bajty dzięki @Quentin

*V[]={"upcake","onut","clair","royo","ingerbread","oneycomb","ce Cream Sandwich","ellybean","itkat","ollipop","arshmallow","ougat","reo"};main(c,v)char**v;{printf("%c%s",c,V[(c=*v[1])-67]);}

Wypróbuj online!

cleblanc
źródło
3

Tcl , 158 bajtów

proc A s {puts $s[lindex {upcake onut clair royo ingerbread oneycomb "ce Cream Sandwich" ellybean itkat ollipop arshmallow ougat reo} [expr [scan $s %c]-67]]}

Wypróbuj online!

sergiol
źródło
2
Tcl! Nie widzisz tutaj zbyt wielu rozwiązań Tcl. Szkoda.
Silvio Mayolo,
2

Haskell, 145 bajtów

f c=takeWhile(/=succ c)$dropWhile(/=c)"CupcakeDonutEclairFroyoGingerbreadHoneycombIce Cream SandwichJellybeanKitkatLollipopMarshmallowNougatOreo"
Leif Willerts
źródło
3
takeWhilemoże być fst.spani dropWhileodpowiednio snd.span.
Laikoni
2

Gaia , 110 bajtów

:c“reo“upcake“onut“clair“royo“ingerbread“oneycomb“ce Cream Sandwich“ellybean“itkat“ollipop“arshmallow“ougat”=+

Wypróbuj online!

Wyjaśnienie

:          Push two copies of the input
 c         Get the codepoint of the top one
  “...”    Push the list of version names without their first letters
       =   Modularly index the code point into the list
        +  Append to the input
Business Cat
źródło
2

Rubin, 127 bajtów

->c{c+%w[upcake onut clair royo ingerbread oneycomb ce\ Cream\ Sandwich ellybean itkat ollipop arshmallow ougat reo][c.ord-67]}

Pobiera wielkie litery. Wypróbuj online!

daniero
źródło
2

Pyth , 117 116 bajtów

Port mojej odpowiedzi w języku Python .

+Q@c"upcake,onut,clair,royo,ingerbread,oneycomb,ce cream sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo"\,a67C

Wypróbuj tutaj! lub Sprawdź pakiet testowy

Pyth , 99 bajtów (70 znaków)

-15 bajtów dzięki @insert_name_here !

+Q@c." y|çEC#nZÙ¦Y;åê½9{ü/ãѪ#¤
ØìjX\"¦Hó¤Ê#§T£®úåâ«B'3£zÞz~Уë"\,a67C

Wypróbuj tutaj!

Pan Xcoder
źródło
Możesz zapisać 15 bajtów, używając skompresowanych ciągów (choć odpowiedź musiałaby wówczas zawierać znaki niedrukowalne).
insert_name_here
@insert_name_here Thanks.
Mr. Xcoder,
2

Java (OpenJDK 8) , 128 bajtów

c->c+"upcake#onut#clair#royo#ingerbread#oneycomb#ce Cream Sandwich#ellybean#itkat#ollipop#arshmallow#ougat#reo".split("#")[c-67]

Wypróbuj online!


Używając wyrażeń regularnych, 149 bajtów

s->"CupcakeDonutEclairFroyoGingerbreadHoneycombIce cream sandwichJellybeanKitkatLollipopMarshmallowNougatOreo".replaceAll(".*?("+s+"[a-z ]+).*","$1")

Wypróbuj online!

  • 4 bajty zaoszczędzone na rozwiązaniu regularnym dzięki Kevin Cruijssen!
Olivier Grégoire
źródło
1
.splitJuż 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 ...) ”)
Kevin Cruijssen,
2

Sześciennie , 1047 852 830 bajtów

Funkcje z pewnością pomagają w golfie w dużych programach ...

⇒+552
⇒+551
⇒+553
⇒+55
⇒/1+52
⇒/1+53
~@7+4f5=?{:5+53@:4/1f1@:5+51@:5+2/1f4@:5+3/1f2@:2/1f2@}
+5f5=?{:3/1f1@:2/1f1@:5+53@:5+3/1f1@}
+51f5=?{:5+51@+1@:5+2/1f4@:5+1/1+551@+1@}
+52f5=?{:5+1/1f1@:3/1f1@:4/1f3@:3/1f1@}
+53f5=?{:5+1/1f2@:2/1f1@:4/1f2@:2/1f2@:5+1/1f1@:5+3/1f4@:5+1/1f1@:2/1f2@:5+2/1f4@:1/1f2@}
+53=?{:3/1f1@:2/1f1@-1@:4/1f3@:5+51@:3/1f1@:1/1f1@:5+3/1f4@}
+1f6=?{:5+51@:2/1f2@:5/1+3@:4/1+52@:5+1/1f1@:2/1f2@:5+2/1+55@:1/1f1@:5/1+3@:2/1+54@:5+2/1f4@6:2/1f1@6:1/1f2@6:2/1f3@6:5+1/1f2@6:5+51@6:5/1f2@6}
+2f6=?{:2/1f2@:5+52@@:4/1f3@:5+3/1f4@:2/1f2@:5+2/1f4@:2/1f1@}
+3f6=?{:5+1/1f2@:5+3/1f1@-1@:5+2/1f4@:5+3/1f1@}
+4f6=?{:3/1f1@:5+52@@:5+1/1f2@:4/1f1@:3/1f1@:4/1f1@}
+5f6=?{:5+2/1f4@:5+1/1f1@:5+2/1f1@:5/1f2@:1/1f1@:5+2/1f4@:5+52@@:3/1f1@:2/1f3}
+51f6=?{:3/1f1@:5+53@:4/1f2@:5+2/1f4@:5+3/1f1@}
+52f6=?{:5+1/1f1@:2/1f2@:3/1f1@}

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.)
  • Każdy z +.../...+...=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.
  • Każdy blok kodu ( {...}) drukuje resztę nazwy (pierwszy znak jest już wydrukowany).

Dzięki ASCII TehPers dla Cubical Translator, który był bardzo pomocny.

MD XF
źródło
1
To 1060 bajtów
Conor O'Brien
1

V , 125 bajtów

Ccupcake
donut
eclair
froyo
gingerbread
honeycomb
ice cream sandwich
jellybean
kitkat
lollipop
marshmallow
nougat
oreoÇ^"/d

Wypróbuj online!

DJMcMayhem
źródło
1

Pyke , 117 bajtów

Port mojej odpowiedzi w języku Python .

"upcake,onut,clair,royo,ingerbread,oneycomb,ce cream sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo"\,cQ.o67-@+

Wypróbuj tutaj!

Kodowany jako kody szesnastkowe, nowa technika gry w golfa w Pyke, miałby 116 bajtów :

22 75 70 63 61 6B 65 2C 6F 6E 75 74 2C 63 6C 61 69 72 2C 72 6F 79 6F 2C 69 6E 67 65 72 62 72 65 61 64 2C 6F 6E 65 79 63 6F 6D 62 2C 63 65 20 63 72 65 61 6D 20 73 61 6E 64 77 69 63 68 2C 65 6C 6C 79 62 65 61 6E 2C 69 74 6B 61 74 2C 6F 6C 6C 69 70 6F 70 2C 61 72 73 68 6D 61 6C 6C 6F 77 2C 6F 75 67 61 74 2C 72 65 6F 22 5C 2C 63 51 EF 36 37 2D 40 2B

(Wklej i sprawdź Use hex encoding?).

Pan Xcoder
źródło
1
Pyke potrzebuje wbudowanej wersji „Android release”, prawda?
Erik the Outgolfer
1
@EriktheOutgolfer Ma Pokemony, więc czemu nie?
Mr. Xcoder,
1

C # , 147 136 129 bajtów


Dane

  • Wprowadź Char c pierwszą literę nazwy wersji
  • Dane wyjściowe String Pełna nazwa wersji

Grał w golfa

// Requires the input to be uppercase.
// This is the one counting for the challange
c=>c+"upcake,onut,clair,royo,ingerbread,oneycomb,ce Cream Sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo".Split(',')[c-67];

// Optional. Requires the input to be lowercase.
c=>c+"upcake,onut,clair,royo,ingerbread,oneycomb,ce Cream Sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo".Split(',')[c-99];

// Optional. Works with both uppercase and lowercase with the additional cost of 10 bytes.
c=>c+"upcake,onut,clair,royo,ingerbread,oneycomb,ce Cream Sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo".Split(',')[c-(c<99?67:99)];

Bez golfa

c =>
    c + "upcake,onut,clair,royo,ingerbread,oneycomb,ce Cream Sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo"
        .Split( ',' )[ c - 67 ];

Nieczytelny czytelny

// Takes a char 
c =>
    // Appends the input letter to...
    c + 

    // ... the name in the resulting index of the subtraction of the char with 67 ('C'), or with 99 ('c') for the lowercase version
    "upcake,onut,clair,royo,ingerbread,oneycomb,ce Cream Sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo"
        .Split( ',' )[ c - 67 ];

// Takes a char 
c => 
    // Appends the input letter to...
    c + 

    // ... the name in the resulting index of the subtraction of the char with 67 ('C') if the char is uppercase ( 'C' == 67, 'O' == 79 )
    //    or with 99 ('c') if the char is lowercase ( 'c' == 99, 'o' == 111 )
    "upcake,onut,clair,royo,ingerbread,oneycomb,ce Cream Sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo"
        .Split( ',' )[ c - ( c < 99 ? 67 : 99 ) ];

Pełny kod

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestBench {
    public static class Program {
        private static Func<Char, String> f = c =>
            c + "upcake,onut,clair,royo,ingerbread,oneycomb,ce Cream Sandwich,ellybean,itkat,ollipop,arshmallow,ougat,reo"
                .Split( ',' )[ c - 67 ];

        static void Main( string[] args ) {
            List<Char>
                testCases = new List<Char>() {
                    'C',
                    'D',
                    'E',
                    'F',
                    'G',
                    'H',
                    'I',
                    'J',
                    'K',
                    'L',
                    'M',
                    'N',
                    'O',
                };

            foreach(Char testCase in testCases) {
                Console.WriteLine($" Input: {testCase}\nOutput: {f(testCase)}\n");
            }

            Console.ReadLine();
        }
    }
}

Wydawnictwa

  • v1.0 - 147 bytes- Wstępne rozwiązanie.
  • v1.1 - -11 bytes- Zapożyczony pomysł Oliviera Grégoire'a .
  • v1.2 - - 7 bytes- Zmieniono wejście funkcji z jawnej na niejawną.

Notatki

  • Żaden
auhmaan
źródło
Czy możesz coś zapisać, usuwając pierwszą literę z każdej nazwy i dodając ciąg, który pobierasz z tablicy do znaku wejściowego?
Kudłaty
(char c)może po prostu byćc
LiefdeWen
1

R, 169 155 bajtów

sub(paste0(".*(",scan(,""),"[^A-Z]+).*"),"\\1","CupcakeDonutEclairFroyoGingerbreadHoneycombIce cream sandwichJellybeanKitkatLollipopMarshmallowNougatOreo")
Sven Hohenstein
źródło
1

Dyalog APL, 125 bajtów

{⍵/⍨⍞=⎕A[+\⍵∊⎕A]}'ABCupcakeDonutEclairFroyoGingerbreadHonecombIce cream sandwichJellybeanKitkatLollipopMarshmallowNougatOreo'

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
Zacharý
źródło
Sprytne podejście.
Adám
1

R, 131 , 126 , 123 , 112 , 178 bajtów

grep(paste0('^',scan(,'')),c("Cupcake","Donut","Eclair","Froyo","Gingerbread","Honeycomb","Ice Cream Sandwich","Jellybean","Kitkat","Lollipop","Marshmallow","Nougat","Oreo"),v=T)

Dziękujemy za @Mark za zapisanie 5 + 8 + 3 bajtów

AndriusZ
źródło
1

C (gcc) , 168 bajtów

main(){puts(memchr("Cupcake\0Donut\0Eclair\0Froyo\0Gingerbread\0Honeycomb\0Ice cream sandwich\0Jellybean\0Kitkat\0Lollipop\0Marshmallow\0Nougat\0Oreo",getchar(),117));}

Wypróbuj online!

Cole Cameron
źródło
1

PowerShell , 136 134 bajtów

param($c)$c+('upcake0onut0clair0royo0ingerbread0oneycomb0ce cream sandwich0ellybean0itkat0ollipop0arshmallow0ougat0reo'-split0)[$c-99]

Wypróbuj online!

Pobiera znak [char]wejściowy, małymi literami, i wypisuje małe litery.

-2 dzięki sugestii AdmBorkBork -split0zamiast -split','.

TessellatingHeckler
źródło
Możesz użyć 0jako separatora, a następnie -split0zapisać cytaty.
AdmBorkBork
@AdmBorkBork dobra sugestia, dzięki!
TessellatingHeckler